(function(e){function t(t){for(var i,o,a=t[0],l=t[1],h=t[2],u=0,g=[];u=2&&l[l.length-1][0].number<=14&&l[0][0].number+l.length-1===l[l.length-1][0].number){if(t.length-3*l.length===l.length)return{type:"threeWithOneList",poker:t,list:l.map((function(e){return{three:e}}))};if(a.length===l.length)return{type:"threeWithTwoList",poker:t,list:l.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&&a.length===t.length/2&&t[0].number+t.length/2-1===t[t.length-1].number?{type:"twoList",poker:t,list:a.map((function(e){return{two:e}}))}:t.length>=6&&t[t.length-1].number<=14&&t.length%3===0&&l.length===t.length/3&&t[0].number+t.length/3-1===t[t.length-1].number&&{type:"threeList",poker:t,list:l.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?m.push(x[S]):c.push(x[S][0])}if(u.length>0){for(var O=[u[0]],j=[],P=1;P2?b.push(j[_]):k=k.concat(j[_])}if(p.length>0){for(var T=[p[0]],B=[],F=1;F4?v.push(B[W]):d=d.concat(B[W])}if(d.length>0&&k.length>0){var z=0,N=0;while(1){if(z>d.length-1&&N>k.length-1)break;var J=void 0,M=void 0,R=[],A=[];if(0===d.length||z>d.length-1)break;0===k.length||N>k.length-1||d[z][0].numberd.length-1&&N>k.length-1)break;if(z0)if("four"===e.type){for(var n=0;ne.four[0].number){r=i.four[n];break}}else r=i.four[0];return r||4===i.poker15.length&&(r=i.poker15),r?t={type:"four",poker:r,four:r}:i.poker16.length>0&&i.poker17.length>0&&(t={type:"sx",poker:i.poker16.concat(i.poker17),sx:i.poker16.concat(i.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,i=0;i0)for(var s=0;se.one[0].number){n=t.one[s];break}n&&(i={type:r,poker:n,one:n})}else if("two"===r){var o;if(t.two.length>0)for(var a=0;ae.two[0].number){o=t.two[a];break}o&&(i={type:r,poker:o,two:o})}else if("three"===r){var l;if(t.three.length>0)for(var h=0;he.three[0].number){t.three[h][0].number<=13&&(l=t.three[h]);break}l&&(i={type:r,poker:l,three:l})}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&&(i={type:r,poker:p.concat(u),three:p,one:u})}else if("threeWithTwo"===r){var y,f;if(t.three.length>0&&t.three.length>0)for(var c=0;ce.three[0].number){t.three[c][0].number<=13&&(y=t.three[c]);break}t.two.length>0&&(f=t.two[0]),y&&f&&(i={type:r,poker:y.concat(f),three:y,two:f})}return i}},{key:"getSmallestObjByObj",value:function(e){var t=this.player.classifyObj,r=e.type,i=null;if("one"===r){var n;if(t.one.length>0)for(var s=0;se.one[0].number){n=t.one[s];break}n||(e.one[0].number<15&&t.poker15.length>0?n=t.poker15.slice(0,1):e.one[0].number<16&&t.poker16.length>0?n=t.poker16:e.one[0].number<17&&t.poker17.length>0&&(n=t.poker17)),n&&(i={type:r,poker:n,one:n})}else if("two"===r){var o;if(t.two.length>0)for(var a=0;ae.two[0].number){o=t.two[a];break}o||e.two[0].number<15&&t.poker15.length>1&&(o=t.poker15.slice(0,2)),o&&(i={type:r,poker:o,two:o})}else if("three"===r){var l;if(t.three.length>0)for(var h=0;he.three[0].number){l=t.three[h];break}l||e.three[0].number<15&&3===t.poker15.length&&(l=t.poker15),l&&(i={type:r,poker:l,three:l})}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&&(i={type:r,poker:p.concat(u),three:p,one:u})}else if("threeWithTwo"===r){var y,f;if(t.three.length>0&&t.three.length>0)for(var c=0;ce.three[0].number){y=t.three[c];break}y||e.three[0].number<15&&3===t.poker15.length&&(y=t.poker15),t.two.length>0&&(f=t.two[0]),!f&&t.poker15.length>1&&(f=t.poker15.slice(0,2)),y&&f&&(i={type:r,poker:y.concat(f),three:y,two:f})}else if("four"===r){var m;if(t.four.length>0)for(var k=0;ke.four[0].number){m=t.four[k];break}m||4===t.poker15.length&&(m=t.poker15),m&&(i={type:r,poker:m,four:m})}else if("fourWithOne"===r){var b,d,v;if(t.four.length>0)for(var L=0;Le.four[0].number){b=t.four[L];break}t.one.length>1&&(d=t.one[0],v=t.one[1]),b&&d&&v&&(i={type:r,poker:b.concat(d).concat(v),four:b})}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&&(i={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);i={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),F=t.two.slice(0,t.threeList[T].length).flat(1);i={type:r,poker:B.concat(F),list:t.threeList[T].map((function(e){return{three:e}}))}}break}}else if("oneList"===r){if(t.oneList.length>0)for(var W=0;We.list[0].one[0].number){i={type:r,poker:t.oneList[W].flat(1),list:t.oneList[W].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){i={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 N=0;Ne.list[0].three[0].number){i={type:r,poker:t.threeList[N].flat(1),list:t.threeList[N].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 i}},{key:"getSmallestObjByType",value:function(e,t){var r,i,n=this.player.classifyObj,s=null;if("one"===e)t?(r=n.poker17.length>0?n.poker17:n.poker16.length>0?n.poker16:n.poker15.length>0?n.poker15.slice(0,1):n.one[n.one.length-1],s={type:e,poker:r,one:r}):(n.one.length>0?i=n.one[0]:n.poker15.length>0&&n.poker15.length<4?i=n.poker15.slice(0,1):0!==n.poker17.length&&0!==n.poker16.length||(n.poker16.length>0?i=n.poker16:n.poker17.length>0&&(i=n.poker17)),i&&(s={type:e,poker:i,one:i}));else if("two"===e){var o;t?n.two.length>0?o=n.two[0]:2===n.poker15.length&&(o=n.poker15):n.two.length>0&&(o=n.two[0]),o&&(s={type:e,poker:o,two:o})}else if("three"===e){var a;t?n.three.length>0?a=n.three[0]:3===n.poker15.length&&(a=n.poker15):n.three.length>0&&(a=n.three[0]),a&&(s={type:e,poker:a,three:a})}else if("threeWithOne"===e){var l,h;n.three.length>0&&(l=n.three[0]),n.one.length>0&&(h=n.one[0]),t&&(l||3!==n.poker15.length||(l=n.poker15),h||1!==n.poker15.length||(h=n.poker15)),l&&h&&(s={type:e,poker:l.concat(h),three:l,one:h})}else if("four"===e){var p;t?n.four.length>0?p=n.four[0]:4===n.poker15.length&&(p=n.poker15):n.four.length>0&&(p=n.four[0]),p&&(s={type:e,poker:p,four:p})}else if("threeWithTwo"===e){var u,g;n.three.length>0&&(u=n.three[0]),n.two.length>0&&(g=n.two[0]),t&&(u||3!==n.poker15.length||(u=n.poker15),g||2!==n.poker15.length||(g=n.poker15)),u&&g&&(s={type:e,poker:u.concat(g),three:u,two:g})}else if("threeWithOneList"===e){if(n.threeList.length>0&&n.one.length>=n.threeList[0].length){var y=n.threeList[0].flat(1),f=n.one.slice(0,n.threeList[0].length).flat(1);s={type:e,poker:y.concat(f),list:n.threeList[0].map((function(e){return{three:e}}))}}}else if("threeWithTwoList"===e){if(n.threeList.length>0&&n.two.length>=n.threeList[0].length){var c=n.threeList[0].flat(1),m=n.two.slice(0,n.threeList[0].length).flat(1);s={type:e,poker:c.concat(m),list:n.threeList[0].map((function(e){return{three:e}}))}}}else if("oneList"===e)n.oneList.length>0&&(s={type:e,poker:n.oneList[0].flat(1),list:n.oneList[0].map((function(e){return{one:e}}))});else if("twoList"===e)n.twoList.length>0&&(s={type:e,poker:n.twoList[0].flat(1),list:n.twoList[0].map((function(e){return{two:e}}))});else if("threeList"===e)n.threeList.length>0&&(s={type:e,poker:n.threeList[0].flat(1),list:n.threeList[0].map((function(e){return{three:e}}))});else if("sx"===e&&n.poker16.length>0&&n.poker17.length>0)return{type:e,poker:n.poker16.concat(n.poker17),sx:n.poker16.concat(n.poker17)};return s}},{key:"getBySplit",value:function(e){for(var t=this.player.pokerList,r=t[0],i=[r],n=[],s=1;s0){for(var y=0;ye.two[0].number){g={type:u,poker:a[y],two:a[y]};break}}else if(l.length>0)for(var f=0;fe.two[0].number){var c=l[f].slice(0,2);g={type:u,poker:c,two:c};break}}else if("threeWithOne"===u){if(l.length>0)for(var m=0;me.three[0].number){var k=void 0;if(o.length>0)k=o[0];else if(a.length>0)k=a[0].slice(0,1);else if(l.length>0)for(var b=0;b0)for(var d=0;de.three[0].number){var v=void 0;if(a.length>0)v=a[0];else if(l.length>0)for(var L=0;L=e.list.length)for(var x=0;xe.list[0].three[0].number&&l[x][0].number+e.list.length-1===l[x+e.list.length-1][0].number&&l[x+e.list.length-1][0].number<=14){for(var w=[],S=0;S=x&&j<=x+e.list.length-1||(w.push(l[j].slice(0,1)),w.length=e.list.length)for(var F=0;Fe.list[0].three[0].number&&l[F][0].number+e.list.length-1===l[F+e.list.length-1][0].number&&l[F+e.list.length-1][0].number<=14){for(var W=[],z=0;z=F&&N<=F+e.list.length-1||W.push(l[N].slice(0,2));if(W.length===e.list.length){for(var J=[],M=[],R=0;R=e.list.length)for(var D=0;De.list[0].one[0].number&&o[D][0].number+e.list.length-1===o[D+e.list.length-1][0].number&&o[D+e.list.length-1][0].number<=14){var C=o.slice(D,D+e.list.length);g={type:u,poker:C.flat(1),list:C.map((function(e){return{one:e}}))};break}}else if("twoList"===u){if(a.length>=e.list.length)for(var I=0;Ie.list[0].two[0].number&&a[I][0].number+e.list.length-1===a[I+e.list.length-1][0].number&&a[I+e.list.length-1][0].number<=14){var G=a.slice(I,I+e.list.length);g={type:u,poker:G.flat(1),list:G.map((function(e){return{two:e}}))};break}}else if("threeList"===u&&l.length>=e.list.length)for(var Z=0;Ze.list[0].two[0].number&&l[Z][0].number+e.list.length-1===l[Z+e.list.length-1][0].number&&l[Z+e.list.length-1][0].number<=14){var $=l.slice(Z,Z+e.list.length);g={type:u,poker:$.flat(1),list:$.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}()),y=g,f=function(){function e(t){Object(l["a"])(this,e),t=t||{},this.ready=!1,this.jiaoFen=-1,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 y({player:this,game:t.game}),this.classifyObj=null,this.lastSendObj=null,this.isRobot&&this.loopRobot()}return Object(h["a"])(e,[{key:"setJiaoFen",value:function(e){this.jiaoFen=e,this.game.someOneJiaoFen()}},{key:"loopRobot",value:function(){var e=this;e.isRobot&&(e.ready||e.setReady()),"jiaoFen"===e.game.stage&&e.game.currentJiaoFenPlayer===e&&e.setJiaoFen(3),setTimeout((function(){e.loopRobot()}),2e3)}},{key:"setReady",value:function(){this.ready=!0,this.game.setReady()}},{key:"reset",value:function(){this.ready=!1,this.jiaoFen=-1,this.pokerList=[],this.type="nongmin",this.classifyObj=null,this.lastSendObj=null}},{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,i=0;i0){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 i=this.compareTwoObj(t,r);return i?(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;t0);this.dizhu.sortPoker()}},{key:"sendPoker",value:function(){var e=this.playerList[0];do{var t=this.getRandomIntInclusive(0,this.pokerList.length-1),r=this.pokerList.splice(t,1)[0];e.addPoker(r),e=e.next}while(this.pokerList.length>3);for(var i=0;i