(function(e){function t(t){for(var n,o,l=t[0],a=t[1],h=t[2],u=0,g=[];u=2&&a[a.length-1][0].number<=14&&a[0][0].number+a.length-1===a[a.length-1][0].number){if(t.length-3*a.length===a.length)return{type:"threeWithOneList",poker:t,list:a.map((function(e){return{three:e}}))};if(l.length===a.length)return{type:"threeWithTwoList",poker:t,list:a.map((function(e){return{three:e}}))}}return t.length>=5&&t[t.length-1].number<=14&&o.length===t.length&&t[0].number+t.length-1===t[t.length-1].number?{type:"oneList",poker:t,list:o.map((function(e){return{one:e}}))}:t.length>=6&&t[t.length-1].number<=14&&t.length%2===0&&l.length===t.length/2&&t[0].number+t.length/2-1===t[t.length-1].number?{type:"twoList",poker:t,list:l.map((function(e){return{two:e}}))}:t.length>=6&&t[t.length-1].number<=14&&t.length%3===0&&a.length===t.length/3&&t[0].number+t.length/3-1===t[t.length-1].number&&{type:"threeList",poker:t,list:a.map((function(e){return{three:e}}))}}},{key:"pokerListToString",value:function(e){for(var t="",r=0;r0){for(var L=[g[0]],x=[],w=1;w1?k.push(x[S]):c.push(x[S][0])}if(u.length>0){for(var O=[u[0]],j=[],P=1;P2?m.push(j[_]):b=b.concat(j[_])}if(p.length>0){for(var T=[p[0]],B=[],W=1;W4?d.push(B[N]):v=v.concat(B[N])}if(v.length>0&&b.length>0){var z=0,A=0;while(1){if(z>v.length-1&&A>b.length-1)break;var M=void 0,F=void 0,D=[],C=[];if(0===v.length||z>v.length-1)break;0===b.length||A>b.length-1||v[z][0].numberv.length-1&&A>b.length-1)break;if(z0)if("four"===e.type){for(var i=0;ie.four[0].number){r=n.four[i];break}}else r=n.four[0];return r||4===n.poker15.length&&(r=n.poker15),r?t={type:"four",poker:r,four:r}:n.poker16.length>0&&n.poker17.length>0&&(t={type:"sx",poker:n.poker16.concat(n.poker17),sx:n.poker16.concat(n.poker17)}),t}},{key:"getByObj5",value:function(e){var t=this.getByBoom(e);return t||this.player.pokerList[this.player.pokerList.length-1].number>e.one[0].number&&(t={type:"one",poker:[this.player.pokerList[this.player.pokerList.length-1]],one:[this.player.pokerList[this.player.pokerList.length-1]]}),t}},{key:"getByObj6",value:function(e){var t;return t="dizhu"===e.player.type?this.getByObj1(e):this.getByObj3(e),t}},{key:"playByObj",value:function(e){var t;if("sx"===e.type)return t={type:"pass",poker:["pass"]},void this.player.deleteFromPokerListAndSendByObj(t);if("dizhu"===this.player.type)t=1===this.player.next.pokerList.length||1===this.player.last.pokerList.length?this.getByObj4(e):this.getByObj1(e);else if(this.player.next.type===this.player.type)t=this.getByObj6(e);else if(1===this.player.next.pokerList.length){if("dizhu"===e.player.type)t=this.getByObj4(e);else if("one"===e.type){var r=this.isPlayerCanNotGetOne(e);r||(t=this.getByObj5(e))}}else t=this.getByObj6(e);t||(t={type:"pass",poker:["pass"]}),this.player.deleteFromPokerListAndSendByObj(t)}},{key:"isPlayerCanNotGetOne",value:function(e){for(var t={3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0,15:0,16:0,17:0},r=this.game.oldPokerList,n=0;n0)for(var s=0;se.one[0].number){i=t.one[s];break}i&&(n={type:r,poker:i,one:i})}else if("two"===r){var o;if(t.two.length>0)for(var l=0;le.two[0].number){o=t.two[l];break}o&&(n={type:r,poker:o,two:o})}else if("three"===r){var a;if(t.three.length>0)for(var h=0;he.three[0].number){t.three[h][0].number<=13&&(a=t.three[h]);break}a&&(n={type:r,poker:a,three:a})}else if("threeWithOne"===r){var p,u;if(t.three.length>0&&t.three.length>0)for(var g=0;ge.three[0].number){t.three[g][0].number<=13&&(p=t.three[g]);break}t.one.length>0&&(u=t.one[0]),p&&u&&(n={type:r,poker:p.concat(u),three:p,one:u})}else if("threeWithTwo"===r){var f,y;if(t.three.length>0&&t.three.length>0)for(var c=0;ce.three[0].number){t.three[c][0].number<=13&&(f=t.three[c]);break}t.two.length>0&&(y=t.two[0]),f&&y&&(n={type:r,poker:f.concat(y),three:f,two:y})}return n}},{key:"getSmallestObjByObj",value:function(e){var t=this.player.classifyObj,r=e.type,n=null;if("one"===r){var i;if(t.one.length>0)for(var s=0;se.one[0].number){i=t.one[s];break}i||(e.one[0].number<15&&t.poker15.length>0?i=t.poker15.slice(0,1):0!==t.poker17.length&&0!==t.poker16.length||(e.one[0].number<16&&t.poker16.length>0?i=t.poker16:e.one[0].number<17&&t.poker17.length>0&&(i=t.poker17))),i&&(n={type:r,poker:i,one:i})}else if("two"===r){var o;if(t.two.length>0)for(var l=0;le.two[0].number){o=t.two[l];break}o||e.two[0].number<15&&t.poker15.length>1&&(o=t.poker15.slice(0,2)),o&&(n={type:r,poker:o,two:o})}else if("three"===r){var a;if(t.three.length>0)for(var h=0;he.three[0].number){a=t.three[h];break}a||e.three[0].number<15&&3===t.poker15.length&&(a=t.poker15),a&&(n={type:r,poker:a,three:a})}else if("threeWithOne"===r){var p,u;if(t.three.length>0&&t.three.length>0)for(var g=0;ge.three[0].number){p=t.three[g];break}p||e.three[0].number<15&&3===t.poker15.length&&(p=t.poker15),t.one.length>0&&(u=t.one[0]),!u&&t.poker15.length>0&&(u=t.poker15.slice(0,1)),p&&u&&(n={type:r,poker:p.concat(u),three:p,one:u})}else if("threeWithTwo"===r){var f,y;if(t.three.length>0&&t.three.length>0)for(var c=0;ce.three[0].number){f=t.three[c];break}f||e.three[0].number<15&&3===t.poker15.length&&(f=t.poker15),t.two.length>0&&(y=t.two[0]),!y&&t.poker15.length>1&&(y=t.poker15.slice(0,2)),f&&y&&(n={type:r,poker:f.concat(y),three:f,two:y})}else if("four"===r){var k;if(t.four.length>0)for(var b=0;be.four[0].number){k=t.four[b];break}k||4===t.poker15.length&&(k=t.poker15),k&&(n={type:r,poker:k,four:k})}else if("fourWithOne"===r){var m,v,d;if(t.four.length>0)for(var L=0;Le.four[0].number){m=t.four[L];break}t.one.length>1&&(v=t.one[0],d=t.one[1]),m&&v&&d&&(n={type:r,poker:m.concat(v).concat(d),four:m})}else if("fourWithTwo"===r){var x,w,S;if(t.four.length>0)for(var O=0;Oe.four[0].number){x=t.four[O];break}t.two.length>1&&(w=t.two[0],S=t.two[1]),x&&w&&S&&(n={type:r,poker:x.concat(w).concat(S),four:x})}else if("threeWithOneList"===r){if(t.threeList.length>0)for(var j=0;je.list[0].three[0].number){if(t.one.length>=t.threeList[j].length){var P=t.threeList[j].flat(1),_=t.one.slice(0,t.threeList[j].length).flat(1);n={type:r,poker:P.concat(_),list:t.threeList[j].map((function(e){return{three:e}}))}}break}}else if("threeWithTwoList"===r){if(t.threeList.length>0)for(var T=0;Te.list[0].three[0].number){if(t.two.length>=t.threeList[T].length){var B=t.threeList[T].flat(1),W=t.two.slice(0,t.threeList[T].length).flat(1);n={type:r,poker:B.concat(W),list:t.threeList[T].map((function(e){return{three:e}}))}}break}}else if("oneList"===r){if(t.oneList.length>0)for(var N=0;Ne.list[0].one[0].number){n={type:r,poker:t.oneList[N].flat(1),list:t.oneList[N].map((function(e){return{one:e}}))};break}}else if("twoList"===r){if(t.twoList.length>0)for(var z=0;ze.list[0].two[0].number){n={type:r,poker:t.twoList[z].flat(1),list:t.twoList[z].map((function(e){return{two:e}}))};break}}else if("threeList"===r){if(t.threeList.length>0)for(var A=0;Ae.list[0].three[0].number){n={type:r,poker:t.threeList[A].flat(1),list:t.threeList[A].map((function(e){return{three:e}}))};break}}else if("sx"===r&&t.poker16.length>0&&t.poker17.length>0)return{type:r,poker:t.poker16.concat(t.poker17),sx:t.poker16.concat(t.poker17)};return n}},{key:"getSmallestObjByType",value:function(e,t){var r,n,i=this.player.classifyObj,s=null;if("one"===e)t?(r=i.poker17.length>0?i.poker17:i.poker16.length>0?i.poker16:i.poker15.length>0?i.poker15.slice(0,1):i.one[i.one.length-1],s={type:e,poker:r,one:r}):(i.one.length>0?n=i.one[0]:i.poker15.length>0&&i.poker15.length<4?n=i.poker15.slice(0,1):0!==i.poker17.length&&0!==i.poker16.length||(i.poker16.length>0?n=i.poker16:i.poker17.length>0&&(n=i.poker17)),n&&(s={type:e,poker:n,one:n}));else if("two"===e){var o;t?i.two.length>0?o=i.two[0]:2===i.poker15.length&&(o=i.poker15):i.two.length>0&&(o=i.two[0]),o&&(s={type:e,poker:o,two:o})}else if("three"===e){var l;t?i.three.length>0?l=i.three[0]:3===i.poker15.length&&(l=i.poker15):i.three.length>0&&(l=i.three[0]),l&&(s={type:e,poker:l,three:l})}else if("threeWithOne"===e){var a,h;i.three.length>0&&(a=i.three[0]),i.one.length>0&&(h=i.one[0]),t&&(a||3!==i.poker15.length||(a=i.poker15),h||1!==i.poker15.length||(h=i.poker15)),a&&h&&(s={type:e,poker:a.concat(h),three:a,one:h})}else if("four"===e){var p;t?i.four.length>0?p=i.four[0]:4===i.poker15.length&&(p=i.poker15):i.four.length>0&&(p=i.four[0]),p&&(s={type:e,poker:p,four:p})}else if("threeWithTwo"===e){var u,g;i.three.length>0&&(u=i.three[0]),i.two.length>0&&(g=i.two[0]),t&&(u||3!==i.poker15.length||(u=i.poker15),g||2!==i.poker15.length||(g=i.poker15)),u&&g&&(s={type:e,poker:u.concat(g),three:u,two:g})}else if("threeWithOneList"===e){if(i.threeList.length>0&&i.one.length>=i.threeList[0].length){var f=i.threeList[0].flat(1),y=i.one.slice(0,i.threeList[0].length).flat(1);s={type:e,poker:f.concat(y),list:i.threeList[0].map((function(e){return{three:e}}))}}}else if("threeWithTwoList"===e){if(i.threeList.length>0&&i.two.length>=i.threeList[0].length){var c=i.threeList[0].flat(1),k=i.two.slice(0,i.threeList[0].length).flat(1);s={type:e,poker:c.concat(k),list:i.threeList[0].map((function(e){return{three:e}}))}}}else if("oneList"===e)i.oneList.length>0&&(s={type:e,poker:i.oneList[0].flat(1),list:i.oneList[0].map((function(e){return{one:e}}))});else if("twoList"===e)i.twoList.length>0&&(s={type:e,poker:i.twoList[0].flat(1),list:i.twoList[0].map((function(e){return{two:e}}))});else if("threeList"===e)i.threeList.length>0&&(s={type:e,poker:i.threeList[0].flat(1),list:i.threeList[0].map((function(e){return{three:e}}))});else if("sx"===e&&i.poker16.length>0&&i.poker17.length>0)return{type:e,poker:i.poker16.concat(i.poker17),sx:i.poker16.concat(i.poker17)};return s}},{key:"getBySplit",value:function(e){for(var t=this.player.pokerList,r=t[0],n=[r],i=[],s=1;s0){for(var f=0;fe.two[0].number){g={type:u,poker:l[f],two:l[f]};break}}else if(a.length>0)for(var y=0;ye.two[0].number){var c=a[y].slice(0,2);g={type:u,poker:c,two:c};break}}else if("threeWithOne"===u){if(a.length>0)for(var k=0;ke.three[0].number){var b=void 0;if(o.length>0)b=o[0];else if(l.length>0)b=l[0].slice(0,1);else if(a.length>0)for(var m=0;m0)for(var v=0;ve.three[0].number){var d=void 0;if(l.length>0)d=l[0];else if(a.length>0)for(var L=0;L=e.list.length)for(var x=0;xe.list[0].three[0].number&&a[x][0].number+e.list.length-1===a[x+e.list.length-1][0].number&&a[x+e.list.length-1][0].number<=14){for(var w=[],S=0;S=x&&j<=x+e.list.length-1||(w.push(a[j].slice(0,1)),w.length=e.list.length)for(var W=0;We.list[0].three[0].number&&a[W][0].number+e.list.length-1===a[W+e.list.length-1][0].number&&a[W+e.list.length-1][0].number<=14){for(var N=[],z=0;z=W&&A<=W+e.list.length-1||N.push(a[A].slice(0,2));if(N.length===e.list.length){for(var M=[],F=[],D=0;D=e.list.length)for(var I=0;Ie.list[0].one[0].number&&o[I][0].number+e.list.length-1===o[I+e.list.length-1][0].number&&o[I+e.list.length-1][0].number<=14){var R=o.slice(I,I+e.list.length);g={type:u,poker:R.flat(1),list:R.map((function(e){return{one:e}}))};break}}else if("twoList"===u){if(l.length>=e.list.length)for(var G=0;Ge.list[0].two[0].number&&l[G][0].number+e.list.length-1===l[G+e.list.length-1][0].number&&l[G+e.list.length-1][0].number<=14){var J=l.slice(G,G+e.list.length);g={type:u,poker:J.flat(1),list:J.map((function(e){return{two:e}}))};break}}else if("threeList"===u&&a.length>=e.list.length)for(var $=0;$e.list[0].two[0].number&&a[$][0].number+e.list.length-1===a[$+e.list.length-1][0].number&&a[$+e.list.length-1][0].number<=14){var E=a.slice($,$+e.list.length);g={type:u,poker:E.flat(1),list:E.map((function(e){return{three:e}}))};break}return g}},{key:"sortFunction",value:function(e,t){return e.number-t.number}},{key:"sortArray",value:function(e,t){return e[0].number-t[0].number}},{key:"sortList",value:function(e,t){return e[0][0].number-t[0][0].number}}]),e}()),f=g,y=function(){function e(t){Object(a["a"])(this,e),t=t||{},this.pokerList=[],this.name=t.name||"noName"+Math.random(),this.type=t.type||"nongmin",this.last=null,this.next=null,this.isRobot=t.isRobot,this.game=t.game,this.ai=new f({player:this,game:t.game}),this.classifyObj=null,this.lastSendObj=null}return Object(h["a"])(e,[{key:"getClassifyObj",value:function(){this.classifyObj=this.ai.getClassifyObj(this.pokerList),console.log(this.classifyObj)}},{key:"addPoker",value:function(e){this.pokerList.push(e)}},{key:"sortPoker",value:function(){this.pokerList.sort(this.sortFunction)}},{key:"sortFunction",value:function(e,t){return e.number-t.number}},{key:"getLastObj",value:function(){var e=this.last.lastSendObj;return!!(e&&"pass"!==e.type||(e=this.next.lastSendObj,e&&"pass"!==e.type))&&e}},{key:"playByAI",value:function(){var e=this;e.getClassifyObj(),setTimeout((function(){var t=e.getLastObj();t?e.ai.playByObj(t):e.ai.playByAllType()}),1e3)}},{key:"sendPoker",value:function(e){e.player=this,this.game.clearDesk(),this.lastSendObj=e,this.game.deskPokerObj=e,this.game.next()}},{key:"deleteFromPokerListAndSendByObj",value:function(e){var t=[];if("pass"===e.type)return this.sendPoker(e),!0;for(var r=e.poker,n=0;n0){var t=e.splice(0,1)[0];this.pokerList.push(t)}this.sortPoker()}},{key:"handleList",value:function(e){if(e){var t=u.getObjByPokerList(e);if(t){if("pass"===t.type)return this.sendPoker(t),!0;var r=this.getLastObj();if(r){if(r.type===t.type){var n=this.compareTwoObj(t,r);return n?(this.sendPoker(t),!0):(this.listBackToPokerList(e),alert("必须大于 "+u.pokerListToString(r.poker)),!1)}return"sx"===t.type||"four"===t.type&&"sx"!==r.type?(this.sendPoker(t),!0):(this.listBackToPokerList(e),alert("牌型不是 "+r.type+"!"),!1)}return this.sendPoker(t),!0}return this.listBackToPokerList(e),alert("牌型错误!"),!1}return alert("你没有此牌!"),!1}},{key:"playByPokerList",value:function(e){if(this.game.currentPlayer!==this)return alert("请等待 "+this.game.currentPlayer.name+" 出牌"),!1;var t=this.getListByList(e);return this.handleList(t)}},{key:"playByString",value:function(e){if(this.game.currentPlayer!==this)return alert("请等待 "+this.game.currentPlayer.name+" 出牌"),!1;var t=this.getListByString(e);return this.handleList(t)}},{key:"compareTwoObj",value:function(e,t){return(!e.list||!t.list||e.list.length===t.list.length)&&("one"===e.type?e.one[0].number>t.one[0].number:"two"===e.type?e.two[0].number>t.two[0].number:"three"===e.type||"threeWithOne"===e.type||"threeWithTwo"===e.type?e.three[0].number>t.three[0].number:"fourWithOne"===e.type||"fourWithTwo"===e.type?e.four[0].number>t.four[0].number:"threeWithOneList"===e.type||"threeWithTwoList"===e.type?e.list[0].three[0].number>t.list[0].three[0].number:"oneList"===e.type?e.list[0].one[0].number>t.list[0].one[0].number:"twoList"===e.type?e.list[0].two[0].number>t.list[0].two[0].number:"threeList"===e.type?e.list[0].three[0].number>t.list[0].three[0].number:"four"===e.type?e.four[0].number>t.four[0].number:void 0)}},{key:"getAndDeleteOnePokerByNumber",value:function(e){for(var t=0;t3);do{var n=this.pokerList.splice(0,1)[0];this.dizhu.addPoker(n)}while(this.pokerList.length>0);for(var i=0;i