diff --git a/README.md b/README.md index 47b7160e47ae81d533b8e5eb367c420726ae2b05..674358ebef5924a70c8467549685d88b8a3db51d 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,18 @@ vue 2.叫分抢地主,1\2\3分 3.AI残局算法优化:蒙特卡洛猜牌 + 极大极小搜索 + alpha-beta剪枝 +#### 牌型(同欢乐斗地主的规则) +火箭:即双王(大王和小王),最大的牌。 +炸弹:四张同数值牌(如四个 7 )。 +单牌:单个牌(如红桃 5 )。 +对牌:数值相同的两张牌(如梅花 4+ 方块 4 )。 +三张牌:数值相同的三张牌(如三个 J )。 +三带一:数值相同的三张牌 + 一张单牌或一对牌。例如: 333+6 或 444+99 +单顺:五张或更多的连续单牌(如: 45678 或 78910JQK )。不包括 2 点和双王。 +双顺:三对或更多的连续对牌(如: 334455 、7788991010JJ )。不包括 2 点和双王。 +三顺:二个或更多的连续三张牌(如: 333444 、 555666777888 )。不包括 2 点和双王。 +飞机带翅膀:三顺+同数量的单牌(或同数量的对牌)。如: 444555+79 或 333444555+7799JJ +四带二:四张牌+两手牌。(注意:四带二不是炸弹)。如: 5555 + 3 + 8 或 4444 + 55 + 77 。 #### 使用说明 npm install diff --git a/dist/css/app.8693bba6.css b/dist/css/app.8693bba6.css deleted file mode 100644 index 27c3ebe5153ff4b6ed74baeb635d109c2bb3187e..0000000000000000000000000000000000000000 --- a/dist/css/app.8693bba6.css +++ /dev/null @@ -1 +0,0 @@ -.pokerDesk[data-v-74905788]{height:100%;width:100px;border:1px solid;border-radius:16px;float:left;margin-left:-50px;background-color:azure;font-size:30px;background-repeat:no-repeat;background-size:cover}.poker[data-v-74905788]:hover{background-color:#faebd7}.selected[data-v-74905788]{margin-top:-20px}.s[data-v-74905788]{background-image:url(../img/s.aa339508.jpg)}.x[data-v-74905788]{background-image:url(../img/x.aa03af01.png)} \ No newline at end of file diff --git a/dist/css/app.ad699e7c.css b/dist/css/app.ad699e7c.css new file mode 100644 index 0000000000000000000000000000000000000000..2ab53b9b04f26133d7e02fe7024ffbb39972ec65 --- /dev/null +++ b/dist/css/app.ad699e7c.css @@ -0,0 +1 @@ +.pokerDesk[data-v-7bd525ec]{height:100%;width:100px;border:1px solid;border-radius:16px;float:left;margin-left:-50px;background-color:azure;font-size:30px;background-repeat:no-repeat;background-size:cover}.poker[data-v-7bd525ec]:hover{background-color:#faebd7}.selected[data-v-7bd525ec]{margin-top:-20px}.s[data-v-7bd525ec]{background-image:url(../img/s.aa339508.jpg)}.x[data-v-7bd525ec]{background-image:url(../img/x.aa03af01.png)} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index dee682762106a5a800aff16bc8f86ba2f5030aea..9b32af3f8a0bfe78f15b22e89013b5ad7d90861f 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -Vue App
\ No newline at end of file +Vue App
\ No newline at end of file diff --git a/dist/js/app.92687945.js b/dist/js/app.92687945.js new file mode 100644 index 0000000000000000000000000000000000000000..099a6207d763bdc890ed811b1b29a9d147c05930 --- /dev/null +++ b/dist/js/app.92687945.js @@ -0,0 +1,2 @@ +(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 C=0;Ce.list[0].one[0].number&&o[C][0].number+e.list.length-1===o[C+e.list.length-1][0].number&&o[C+e.list.length-1][0].number<=14){var D=o.slice(C,C+e.list.length);g={type:u,poker:D.flat(1),list:D.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 $=0;$e.list[0].two[0].number&&l[$][0].number+e.list.length-1===l[$+e.list.length-1][0].number&&l[$+e.list.length-1][0].number<=14){var E=l.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}()),y=g,f=function(){function e(t){Object(l["a"])(this,e),t=t||{},this.ready=!1,this.jiaoFen=0,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=0,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=2 && Count3List[Count3List.length-1][0].number<=14 && Count3List[0][0].number+Count3List.length-1===Count3List[Count3List.length-1][0].number){\r\n //threeWithOneList\r\n if(pokerList.length-3*Count3List.length===Count3List.length){\r\n return {\r\n type:'threeWithOneList',\r\n poker: pokerList,\r\n list: Count3List.map(function (item) {\r\n return {\r\n three: item,\r\n };\r\n }),\r\n };\r\n }else{\r\n //threeWithTwoList\r\n if(Count2List.length===Count3List.length){\r\n return {\r\n type:'threeWithTwoList',\r\n poker: pokerList,\r\n list: Count3List.map(function (item) {\r\n return {\r\n three: item,\r\n };\r\n }),\r\n };\r\n }\r\n }\r\n }\r\n\r\n //判断oneList\r\n if(pokerList.length >= 5 && pokerList[pokerList.length-1].number<=14 && Count1List.length === pokerList.length && pokerList[0].number+pokerList.length-1===pokerList[pokerList.length-1].number){\r\n return {\r\n type:'oneList',\r\n poker: pokerList,\r\n list: Count1List.map(function (item) {\r\n return {\r\n one: item,\r\n }\r\n }),\r\n }\r\n }\r\n\r\n //判断twoList\r\n if(pokerList.length >= 6 && pokerList[pokerList.length-1].number<=14 && pokerList.length%2 === 0 && Count2List.length === pokerList.length/2 && pokerList[0].number+pokerList.length/2-1===pokerList[pokerList.length-1].number){\r\n return {\r\n type:'twoList',\r\n poker: pokerList,\r\n list: Count2List.map(function (item) {\r\n return {\r\n two: item,\r\n }\r\n }),\r\n }\r\n }\r\n\r\n //判断threeList\r\n if(pokerList.length >= 6 && pokerList[pokerList.length-1].number<=14 && pokerList.length%3 === 0 && Count3List.length === pokerList.length/3 && pokerList[0].number+pokerList.length/3-1===pokerList[pokerList.length-1].number){\r\n return {\r\n type:'threeList',\r\n poker: pokerList,\r\n list: Count3List.map(function (item) {\r\n return {\r\n three: item,\r\n }\r\n }),\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n static pokerListToString(pokerList){\r\n let result = '';\r\n for(let i=0; i0){\r\n let curList = [Count3List[0]];\r\n let lists = [];\r\n\r\n for(let i2=1; i21){\r\n threeList.push(lists[i3]);\r\n }else{\r\n three.push(lists[i3][0]);\r\n }\r\n }\r\n }\r\n\r\n if(Count2List.length>0){\r\n let curList2 = [Count2List[0]];\r\n let lists2 = [];\r\n for(let i4=1; i42){\r\n twoList.push(lists2[i5]);\r\n }else{\r\n two = two.concat(lists2[i5]);\r\n }\r\n }\r\n }\r\n\r\n if(Count1List.length>0){\r\n let curList1 = [Count1List[0]];\r\n let lists1 = [];\r\n for(let i6=1; i64){\r\n oneList.push(lists1[i7]);\r\n }else{\r\n one = one.concat(lists1[i7]);\r\n }\r\n }\r\n }\r\n\r\n //combine one two together\r\n if(one.length>0&&two.length>0){\r\n\r\n let oneIndex = 0;\r\n let twoIndex = 0;\r\n\r\n while(true){\r\n\r\n if(oneIndex>one.length-1&&twoIndex>two.length-1){\r\n break;\r\n }\r\n\r\n let startN;\r\n let lastN;\r\n let ones = [];\r\n let twos = [];\r\n\r\n if(one.length===0 || oneIndex>one.length-1){\r\n break;\r\n }\r\n\r\n if(two.length===0 || twoIndex>two.length-1){\r\n startN = one[oneIndex][0].number;\r\n ones.push(one[oneIndex]);\r\n oneIndex++;\r\n }else{\r\n if(one[oneIndex][0].numberone.length-1&&twoIndex>two.length-1){\r\n break;\r\n }\r\n\r\n if(oneIndex0){\r\n if(lastObj.type==='four'){\r\n for(let i=0; ilastObj.four[0].number){\r\n poker = classifyObj.four[i];\r\n break;\r\n }\r\n }\r\n }else{\r\n poker = classifyObj.four[0];\r\n }\r\n\r\n }\r\n\r\n if(!poker){\r\n if(classifyObj.poker15.length===4){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: 'four',\r\n poker: poker,\r\n four: poker,\r\n };\r\n }else{\r\n if(classifyObj.poker16.length>0&&classifyObj.poker17.length>0){\r\n obj = {\r\n type: 'sx',\r\n poker: classifyObj.poker16.concat(classifyObj.poker17),\r\n sx: classifyObj.poker16.concat(classifyObj.poker17),\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n //接牌5\r\n getByObj5(lastObj){\r\n\r\n let obj = this.getByBoom(lastObj);\r\n\r\n if(!obj){\r\n if(this.player.pokerList[this.player.pokerList.length-1].number>lastObj.one[0].number){\r\n obj = {\r\n type: 'one',\r\n poker: [this.player.pokerList[this.player.pokerList.length-1]],\r\n one: [this.player.pokerList[this.player.pokerList.length-1]],\r\n };\r\n }\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n //接牌6\r\n getByObj6(lastObj){\r\n\r\n let obj;\r\n if(lastObj.player.type==='dizhu'){\r\n obj = this.getByObj1(lastObj);\r\n }else{\r\n obj = this.getByObj3(lastObj);\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n //接牌\r\n playByObj(lastObj){\r\n let obj;\r\n\r\n if(lastObj.type==='sx'){\r\n obj = {\r\n type: 'pass',\r\n poker: ['pass'],\r\n };\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n return;\r\n }\r\n\r\n if(this.player.type==='dizhu'){\r\n if(this.player.next.pokerList.length===1||this.player.last.pokerList.length===1){\r\n obj = this.getByObj4(lastObj);\r\n }else{\r\n obj = this.getByObj1(lastObj);\r\n }\r\n }else{\r\n if(this.player.next.type===this.player.type){\r\n obj = this.getByObj6(lastObj);\r\n }else{\r\n if(this.player.next.pokerList.length===1){\r\n if(lastObj.player.type==='dizhu'){\r\n obj = this.getByObj4(lastObj);\r\n }else{\r\n if(lastObj.type==='one'){\r\n let canNotGet = this.isPlayerCanNotGetOne(lastObj);\r\n if(canNotGet){\r\n //pass\r\n }else{\r\n obj = this.getByObj5(lastObj);\r\n }\r\n }else{\r\n //pass\r\n }\r\n }\r\n }else{\r\n obj = this.getByObj6(lastObj);\r\n }\r\n }\r\n }\r\n\r\n if(!obj){\r\n obj = {\r\n type: 'pass',\r\n poker: ['pass'],\r\n };\r\n }\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n }\r\n\r\n isPlayerCanNotGetOne(obj){\r\n let allPoker = {\r\n 3:0,\r\n 4:0,\r\n 5:0,\r\n 6:0,\r\n 7:0,\r\n 8:0,\r\n 9:0,\r\n 10:0,\r\n 11:0,\r\n 12:0,\r\n 13:0,\r\n 14:0,\r\n 15:0,\r\n 16:0,\r\n 17:0,\r\n };\r\n let oldPokerList = this.game.oldPokerList;\r\n for(let i=0; i0){\r\n for(let i=0; ilastObj.one[0].number){\r\n poker = classifyObj.one[i];\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }\r\n }else if(type === 'two'){\r\n let poker;\r\n\r\n if(classifyObj.two.length>0){\r\n for(let i=0; ilastObj.two[0].number){\r\n poker = classifyObj.two[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n two: poker,\r\n };\r\n }\r\n }else if(type === 'three'){\r\n let poker;\r\n\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n if(classifyObj.three[i][0].number<=13){\r\n poker = classifyObj.three[i];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n three: poker,\r\n };\r\n }\r\n }else if(type === 'threeWithOne'){\r\n let pokerThree;\r\n let one;\r\n if(classifyObj.three.length>0){\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n if(classifyObj.three[i][0].number<=13){\r\n pokerThree = classifyObj.three[i];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(classifyObj.one.length>0){\r\n one = classifyObj.one[0];\r\n }\r\n\r\n if(pokerThree&&one){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(one),\r\n three: pokerThree,\r\n one: one,\r\n };\r\n }\r\n\r\n }else if(type === 'threeWithTwo'){\r\n\r\n let pokerThree;\r\n let two;\r\n if(classifyObj.three.length>0){\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n if(classifyObj.three[i][0].number<=13){\r\n pokerThree = classifyObj.three[i];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(classifyObj.two.length>0){\r\n two = classifyObj.two[0];\r\n }\r\n\r\n if(pokerThree&&two){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(two),\r\n three: pokerThree,\r\n two: two,\r\n };\r\n }\r\n\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n //最小接 不拆\r\n getSmallestObjByObj(lastObj){\r\n let classifyObj = this.player.classifyObj;\r\n\r\n let type = lastObj.type;\r\n let obj = null;\r\n if(type === 'one'){\r\n let poker;\r\n if(classifyObj.one.length>0){\r\n for(let i=0; ilastObj.one[0].number){\r\n poker = classifyObj.one[i];\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n if(!poker){\r\n if(lastObj.one[0].number<15&&classifyObj.poker15.length>0){\r\n poker = classifyObj.poker15.slice(0,1);\r\n }else{\r\n //有王出王\r\n if(lastObj.one[0].number<16&&classifyObj.poker16.length>0){\r\n poker = classifyObj.poker16;\r\n }else if(lastObj.one[0].number<17&&classifyObj.poker17.length>0){\r\n poker = classifyObj.poker17;\r\n }\r\n }\r\n }\r\n\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }\r\n }else if(type === 'two'){\r\n let poker;\r\n\r\n if(classifyObj.two.length>0){\r\n for(let i=0; ilastObj.two[0].number){\r\n poker = classifyObj.two[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(!poker){\r\n if(lastObj.two[0].number<15&&classifyObj.poker15.length>1){\r\n poker = classifyObj.poker15.slice(0,2);\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n two: poker,\r\n };\r\n }\r\n }else if(type === 'three'){\r\n let poker;\r\n\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n poker = classifyObj.three[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(!poker){\r\n if(lastObj.three[0].number<15&&classifyObj.poker15.length===3){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n three: poker,\r\n };\r\n }\r\n }else if(type === 'threeWithOne'){\r\n let pokerThree;\r\n let one;\r\n if(classifyObj.three.length>0){\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n pokerThree = classifyObj.three[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if(!pokerThree){\r\n if(lastObj.three[0].number<15&&classifyObj.poker15.length===3){\r\n pokerThree = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(classifyObj.one.length>0){\r\n one = classifyObj.one[0];\r\n }\r\n if(!one&&classifyObj.poker15.length>0){\r\n one = classifyObj.poker15.slice(0,1);\r\n }\r\n\r\n if(pokerThree&&one){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(one),\r\n three: pokerThree,\r\n one: one,\r\n };\r\n }\r\n\r\n }else if(type === 'threeWithTwo'){\r\n\r\n let pokerThree;\r\n let two;\r\n if(classifyObj.three.length>0){\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n pokerThree = classifyObj.three[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if(!pokerThree){\r\n if(lastObj.three[0].number<15&&classifyObj.poker15.length===3){\r\n pokerThree = classifyObj.poker15;\r\n }\r\n }\r\n\r\n\r\n if(classifyObj.two.length>0){\r\n two = classifyObj.two[0];\r\n }\r\n if(!two&&classifyObj.poker15.length>1){\r\n two = classifyObj.poker15.slice(0,2);\r\n }\r\n\r\n if(pokerThree&&two){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(two),\r\n three: pokerThree,\r\n two: two,\r\n };\r\n }\r\n\r\n }else if(type === 'four'){\r\n\r\n let poker;\r\n\r\n if(classifyObj.four.length>0){\r\n for(let i=0; ilastObj.four[0].number){\r\n poker = classifyObj.four[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(!poker){\r\n if(classifyObj.poker15.length===4){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n four: poker,\r\n };\r\n }\r\n }else if(type === 'fourWithOne'){\r\n\r\n let pokerFour;\r\n let one1;\r\n let one2;\r\n\r\n if(classifyObj.four.length>0){\r\n for(let i=0; ilastObj.four[0].number){\r\n pokerFour = classifyObj.four[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(classifyObj.one.length>1){\r\n one1 = classifyObj.one[0];\r\n one2 = classifyObj.one[1];\r\n }\r\n\r\n if(pokerFour&&one1&&one2){\r\n obj = {\r\n type: type,\r\n poker: pokerFour.concat(one1).concat(one2),\r\n four: pokerFour,\r\n };\r\n }\r\n }else if(type === 'fourWithTwo'){\r\n\r\n let pokerFour;\r\n let two1;\r\n let two2;\r\n\r\n if(classifyObj.four.length>0){\r\n for(let i=0; ilastObj.four[0].number){\r\n pokerFour = classifyObj.four[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(classifyObj.two.length>1){\r\n two1 = classifyObj.two[0];\r\n two2 = classifyObj.two[1];\r\n }\r\n\r\n if(pokerFour&&two1&&two2){\r\n obj = {\r\n type: type,\r\n poker: pokerFour.concat(two1).concat(two2),\r\n four: pokerFour,\r\n };\r\n }\r\n }else if(type === 'threeWithOneList'){\r\n if(classifyObj.threeList.length>0){\r\n for(let i=0; ilastObj.list[0].three[0].number){\r\n if(classifyObj.one.length>=classifyObj.threeList[i].length){\r\n let pokerThree = classifyObj.threeList[i].flat(1);\r\n let pokerOne = classifyObj.one.slice(0,classifyObj.threeList[i].length).flat(1);\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(pokerOne),\r\n list: classifyObj.threeList[i].map(function (item) {\r\n return {\r\n three: item\r\n };\r\n }),\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }else if(type === 'threeWithTwoList'){\r\n if(classifyObj.threeList.length>0){\r\n for(let i=0; ilastObj.list[0].three[0].number){\r\n if(classifyObj.two.length>=classifyObj.threeList[i].length){\r\n let pokerThree = classifyObj.threeList[i].flat(1);\r\n let pokerTwo = classifyObj.two.slice(0,classifyObj.threeList[i].length).flat(1);\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(pokerTwo),\r\n list: classifyObj.threeList[i].map(function (item) {\r\n return {\r\n three: item\r\n };\r\n }),\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'oneList'){\r\n if(classifyObj.oneList.length>0){\r\n for(let i=0; i lastObj.list[0].one[0].number) {\r\n obj = {\r\n type: type,\r\n poker: classifyObj.oneList[i].flat(1),\r\n list: classifyObj.oneList[i].map(function (item) {\r\n return {\r\n one: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'twoList'){\r\n if(classifyObj.twoList.length>0){\r\n for(let i=0; i lastObj.list[0].two[0].number) {\r\n obj = {\r\n type: type,\r\n poker: classifyObj.twoList[i].flat(1),\r\n list: classifyObj.twoList[i].map(function (item) {\r\n return {\r\n two: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'threeList'){\r\n if(classifyObj.threeList.length>0){\r\n for(let i=0; i lastObj.list[0].three[0].number) {\r\n obj = {\r\n type: type,\r\n poker: classifyObj.threeList[i].flat(1),\r\n list: classifyObj.threeList[i].map(function (item) {\r\n return {\r\n three: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'sx'){\r\n if(classifyObj.poker16.length>0&&classifyObj.poker17.length>0){\r\n return {\r\n type: type,\r\n poker: classifyObj.poker16.concat(classifyObj.poker17),\r\n sx: classifyObj.poker16.concat(classifyObj.poker17),\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n getSmallestObjByType(type, oneBigToSmall){\r\n let classifyObj = this.player.classifyObj;\r\n\r\n let obj = null;\r\n if(type === 'one'){\r\n if(oneBigToSmall){\r\n let poker;\r\n if(classifyObj.poker17.length>0){\r\n poker = classifyObj.poker17;\r\n }else if(classifyObj.poker16.length>0){\r\n poker = classifyObj.poker16;\r\n }else if(classifyObj.poker15.length>0){\r\n poker = classifyObj.poker15.slice(0,1);\r\n }else{\r\n poker = classifyObj.one[classifyObj.one.length-1];\r\n }\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }else{\r\n let poker;\r\n if(classifyObj.one.length>0){\r\n poker = classifyObj.one[0];\r\n }else{\r\n\r\n if(classifyObj.poker15.length>0&&classifyObj.poker15.length<4){\r\n poker = classifyObj.poker15.slice(0,1);\r\n }else{\r\n if(classifyObj.poker17.length===0||classifyObj.poker16.length===0){\r\n if(classifyObj.poker16.length>0){\r\n poker = classifyObj.poker16;\r\n }else if(classifyObj.poker17.length>0){\r\n poker = classifyObj.poker17;\r\n }\r\n }\r\n }\r\n\r\n }\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }\r\n\r\n }\r\n }else if(type === 'two'){\r\n let poker;\r\n\r\n if(oneBigToSmall){\r\n if(classifyObj.two.length>0){\r\n poker = classifyObj.two[0];\r\n }else{\r\n if(classifyObj.poker15.length===2){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n }else{\r\n if(classifyObj.two.length>0){\r\n poker = classifyObj.two[0];\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n two: poker,\r\n };\r\n }\r\n }else if(type === 'three'){\r\n let poker;\r\n\r\n if(oneBigToSmall){\r\n if(classifyObj.three.length>0){\r\n poker = classifyObj.three[0];\r\n }else{\r\n if(classifyObj.poker15.length===3){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n }else{\r\n if(classifyObj.three.length>0){\r\n poker = classifyObj.three[0];\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n three: poker,\r\n };\r\n }\r\n }else if(type === 'threeWithOne'){\r\n let pokerThree;\r\n let one;\r\n if(classifyObj.three.length>0){\r\n pokerThree = classifyObj.three[0];\r\n }\r\n if(classifyObj.one.length>0){\r\n one = classifyObj.one[0];\r\n }\r\n\r\n if(oneBigToSmall){\r\n if(!pokerThree&&classifyObj.poker15.length===3){\r\n pokerThree = classifyObj.poker15;\r\n }\r\n if(!one&&classifyObj.poker15.length===1){\r\n one = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(pokerThree&&one){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(one),\r\n three: pokerThree,\r\n one: one,\r\n };\r\n }\r\n\r\n }else if(type === 'four'){\r\n\r\n let poker;\r\n\r\n if(oneBigToSmall){\r\n if(classifyObj.four.length>0){\r\n poker = classifyObj.four[0];\r\n }else{\r\n if(classifyObj.poker15.length===4){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n }else{\r\n if(classifyObj.four.length>0){\r\n poker = classifyObj.four[0];\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n four: poker,\r\n };\r\n }\r\n }else if(type === 'threeWithTwo'){\r\n\r\n let pokerThree;\r\n let two;\r\n if(classifyObj.three.length>0){\r\n pokerThree = classifyObj.three[0];\r\n }\r\n if(classifyObj.two.length>0){\r\n two = classifyObj.two[0];\r\n }\r\n\r\n if(oneBigToSmall){\r\n if(!pokerThree&&classifyObj.poker15.length===3){\r\n pokerThree = classifyObj.poker15;\r\n }\r\n if(!two&&classifyObj.poker15.length===2){\r\n two = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(pokerThree&&two){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(two),\r\n three: pokerThree,\r\n two: two,\r\n };\r\n }\r\n\r\n }else if(type === 'threeWithOneList'){\r\n if(classifyObj.threeList.length>0){\r\n if(classifyObj.one.length>=classifyObj.threeList[0].length){\r\n let pokerThree = classifyObj.threeList[0].flat(1);\r\n let pokerOne = classifyObj.one.slice(0,classifyObj.threeList[0].length).flat(1);\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(pokerOne),\r\n list: classifyObj.threeList[0].map(function (item) {\r\n return {\r\n three: item\r\n };\r\n }),\r\n };\r\n }\r\n }\r\n\r\n }else if(type === 'threeWithTwoList'){\r\n if(classifyObj.threeList.length>0){\r\n if(classifyObj.two.length>=classifyObj.threeList[0].length){\r\n let pokerThree = classifyObj.threeList[0].flat(1);\r\n let pokerTwo = classifyObj.two.slice(0,classifyObj.threeList[0].length).flat(1);\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(pokerTwo),\r\n list: classifyObj.threeList[0].map(function (item) {\r\n return {\r\n three: item\r\n };\r\n }),\r\n };\r\n }\r\n }\r\n }else if(type === 'oneList'){\r\n if(classifyObj.oneList.length>0){\r\n obj = {\r\n type: type,\r\n poker: classifyObj.oneList[0].flat(1),\r\n list: classifyObj.oneList[0].map(function (item) {\r\n return {\r\n one: item,\r\n }\r\n }),\r\n };\r\n }\r\n }else if(type === 'twoList'){\r\n if(classifyObj.twoList.length>0){\r\n obj = {\r\n type: type,\r\n poker: classifyObj.twoList[0].flat(1),\r\n list: classifyObj.twoList[0].map(function (item) {\r\n return {\r\n two: item,\r\n }\r\n }),\r\n };\r\n }\r\n }else if(type === 'threeList'){\r\n if(classifyObj.threeList.length>0){\r\n obj = {\r\n type: type,\r\n poker: classifyObj.threeList[0].flat(1),\r\n list: classifyObj.threeList[0].map(function (item) {\r\n return {\r\n three: item,\r\n }\r\n }),\r\n };\r\n }\r\n }else if(type === 'sx'){\r\n if(classifyObj.poker16.length>0&&classifyObj.poker17.length>0){\r\n return {\r\n type: type,\r\n poker: classifyObj.poker16.concat(classifyObj.poker17),\r\n sx: classifyObj.poker16.concat(classifyObj.poker17),\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n //接牌 拆牌\r\n getBySplit(lastObj){\r\n let pokerList = this.player.pokerList;\r\n\r\n let lastPoker = pokerList[0];\r\n let curList = [lastPoker];\r\n let lists = [];\r\n for(let i=1; i0){\r\n for(let i=0; ilastObj.two[0].number){\r\n obj = {\r\n type: type,\r\n poker: Count2List[i],\r\n two: Count2List[i],\r\n };\r\n break;\r\n }\r\n }\r\n }else if(Count3List.length>0){\r\n for(let i=0; ilastObj.two[0].number){\r\n let poker = Count3List[i].slice(0,2);\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n two: poker,\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'threeWithOne'){\r\n if(Count3List.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n\r\n let one;\r\n if(Count1List.length>0){\r\n one = Count1List[0];\r\n }else if(Count2List.length>0){\r\n one = Count2List[0].slice(0,1);\r\n }else if(Count3List.length>0){\r\n for(let j=0; j0){\r\n for(let i=0; ilastObj.three[0].number){\r\n\r\n let two;\r\n if(Count2List.length>0){\r\n two = Count2List[0];\r\n }else if(Count3List.length>0){\r\n for(let j=0; j=lastObj.list.length){\r\n for(let i=0; ilastObj.list[0].three[0].number && Count3List[i][0].number+lastObj.list.length-1===Count3List[i+lastObj.list.length-1][0].number && Count3List[i+lastObj.list.length-1][0].number<=14){\r\n\r\n let oneList = [];\r\n\r\n for(let j=0; j=i&&j<=i+lastObj.list.length-1){\r\n continue;\r\n }\r\n oneList.push(Count3List[j].slice(0,1));\r\n if(oneList.length=lastObj.list.length){\r\n for(let i=0; ilastObj.list[0].three[0].number && Count3List[i][0].number+lastObj.list.length-1===Count3List[i+lastObj.list.length-1][0].number && Count3List[i+lastObj.list.length-1][0].number<=14){\r\n\r\n let twoList = [];\r\n\r\n for(let j=0; j=i&&j<=i+lastObj.list.length-1){\r\n continue;\r\n }\r\n twoList.push(Count3List[j].slice(0,2));\r\n }\r\n\r\n if(twoList.length === lastObj.list.length){\r\n\r\n let poker = [];\r\n let list = [];\r\n for(let j=0; j=lastObj.list.length ){\r\n for(let i=0; ilastObj.list[0].one[0].number && Count1List[i][0].number+lastObj.list.length-1===Count1List[i+lastObj.list.length-1][0].number && Count1List[i+lastObj.list.length-1][0].number<=14){\r\n let list = Count1List.slice(i,i+lastObj.list.length);\r\n obj = {\r\n type: type,\r\n poker: list.flat(1),\r\n list: list.map(function (item) {\r\n return {\r\n one: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'twoList'){\r\n if(Count2List.length>=lastObj.list.length ){\r\n for(let i=0; ilastObj.list[0].two[0].number && Count2List[i][0].number+lastObj.list.length-1===Count2List[i+lastObj.list.length-1][0].number && Count2List[i+lastObj.list.length-1][0].number<=14){\r\n let list = Count2List.slice(i,i+lastObj.list.length);\r\n obj = {\r\n type: type,\r\n poker: list.flat(1),\r\n list: list.map(function (item) {\r\n return {\r\n two: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'threeList'){\r\n if(Count3List.length>=lastObj.list.length ){\r\n for(let i=0; ilastObj.list[0].two[0].number && Count3List[i][0].number+lastObj.list.length-1===Count3List[i+lastObj.list.length-1][0].number && Count3List[i+lastObj.list.length-1][0].number<=14){\r\n let list = Count3List.slice(i,i+lastObj.list.length);\r\n obj = {\r\n type: type,\r\n poker: list.flat(1),\r\n list: list.map(function (item) {\r\n return {\r\n three: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n sortFunction(a, b){\r\n return a.number - b.number;\r\n }\r\n\r\n sortArray(a, b){\r\n return a[0].number - b[0].number;\r\n }\r\n\r\n sortList(a, b){\r\n return a[0][0].number - b[0][0].number;\r\n }\r\n\r\n}\r\n\r\nexport default AI;","import Poker from \"./Poker\";\r\nimport AI from \"./AI\";\r\n\r\nclass Player{\r\n constructor(param) {\r\n param = param || {};\r\n this.ready = false; //已准备\r\n this.jiaoFen = 0; //叫分\r\n this.pokerList = [];\r\n this.name = param.name || 'noName'+Math.random();\r\n this.type = param.type || 'nongmin';\r\n this.last = null;\r\n this.next = null;\r\n this.isRobot = param.isRobot;\r\n this.game = param.game;\r\n this.ai = new AI({\r\n player: this,\r\n game: param.game,\r\n });\r\n this.classifyObj = null;\r\n this.lastSendObj = null;\r\n\r\n if(this.isRobot){\r\n this.loopRobot();\r\n }\r\n }\r\n\r\n setJiaoFen(fen){\r\n this.jiaoFen = fen;\r\n this.game.someOneJiaoFen();\r\n }\r\n\r\n loopRobot(){\r\n let that = this;\r\n if(that.isRobot){\r\n if(!that.ready){\r\n that.setReady();\r\n }\r\n }\r\n if(that.game.stage==='jiaoFen' && that.game.currentJiaoFenPlayer === that){\r\n that.setJiaoFen(3);\r\n }\r\n\r\n setTimeout(function(){\r\n that.loopRobot();\r\n },2000);\r\n }\r\n\r\n setReady(){\r\n this.ready = true;\r\n this.game.setReady();\r\n }\r\n\r\n reset(){\r\n this.ready = false;\r\n this.jiaoFen = 0;\r\n this.pokerList = [];\r\n this.type = 'nongmin';\r\n this.classifyObj = null;\r\n this.lastSendObj = null;\r\n }\r\n\r\n //组牌\r\n getClassifyObj(){\r\n this.classifyObj = this.ai.getClassifyObj(this.pokerList);\r\n console.log(this.classifyObj);\r\n }\r\n\r\n addPoker(poker){\r\n this.pokerList.push(poker);\r\n }\r\n\r\n sortPoker(){\r\n this.pokerList.sort(this.sortFunction);\r\n }\r\n\r\n sortFunction(a, b){\r\n return a.number - b.number;\r\n }\r\n\r\n getLastObj(){\r\n let lastObj = this.last.lastSendObj;\r\n if(!lastObj || lastObj.type === 'pass'){\r\n lastObj = this.next.lastSendObj;\r\n if(!lastObj || lastObj.type === 'pass'){\r\n return false;\r\n }\r\n }\r\n return lastObj;\r\n }\r\n\r\n playByAI(){\r\n\r\n let that = this;\r\n\r\n that.getClassifyObj();\r\n\r\n setTimeout(function () {\r\n let lastObj = that.getLastObj();\r\n if(lastObj){\r\n that.ai.playByObj(lastObj);\r\n }else{\r\n that.ai.playByAllType();\r\n }\r\n },1000);\r\n\r\n }\r\n\r\n sendPoker(obj){\r\n obj.player = this;\r\n this.game.clearDesk();\r\n this.lastSendObj = obj;\r\n this.game.deskPokerObj = obj;\r\n this.game.next();\r\n }\r\n\r\n deleteFromPokerListAndSendByObj(obj){\r\n let tempList = [];\r\n if(obj.type === 'pass'){\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n let pokerList = obj.poker;\r\n for(let i=0; i0){\r\n let poker = list.splice(0,1)[0];\r\n this.pokerList.push(poker);\r\n }\r\n this.sortPoker();\r\n }\r\n\r\n handleList(list){\r\n if(list){\r\n let obj = Poker.getObjByPokerList(list);\r\n if(obj){\r\n if(obj.type === 'pass'){\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n let lastObj = this.getLastObj();\r\n if(lastObj){\r\n if(lastObj.type === obj.type){\r\n let comp = this.compareTwoObj(obj, lastObj);\r\n if(comp){\r\n this.sendPoker(obj);\r\n return true;\r\n }else{\r\n this.listBackToPokerList(list);\r\n alert('必须大于 '+Poker.pokerListToString(lastObj.poker));\r\n return false;\r\n }\r\n\r\n }else{\r\n\r\n if(obj.type === 'sx'){\r\n this.sendPoker(obj);\r\n return true;\r\n }else if(obj.type === 'four' && lastObj.type!=='sx'){\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n\r\n this.listBackToPokerList(list);\r\n alert('牌型不是 '+lastObj.type+'!');\r\n return false;\r\n }\r\n }else{\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n\r\n }else{\r\n this.listBackToPokerList(list);\r\n alert('牌型错误!');\r\n return false;\r\n }\r\n\r\n }else{\r\n alert('你没有此牌!');\r\n return false;\r\n }\r\n }\r\n\r\n playByPokerList(pokerList){\r\n if(this.game.currentPlayer!==this){\r\n alert('请等待 '+this.game.currentPlayer.name+' 出牌');\r\n return false;\r\n }\r\n\r\n let list = this.getListByList(pokerList);\r\n return this.handleList(list);\r\n }\r\n\r\n playByString(str){\r\n if(this.game.currentPlayer!==this){\r\n alert('请等待 '+this.game.currentPlayer.name+' 出牌');\r\n return false;\r\n }\r\n\r\n let list = this.getListByString(str);\r\n return this.handleList(list);\r\n }\r\n\r\n compareTwoObj(obj1, obj2) {\r\n if(obj1.list && obj2.list){\r\n if(obj1.list.length!==obj2.list.length){\r\n return false;\r\n }\r\n }\r\n\r\n if (obj1.type === 'one') {\r\n return obj1.one[0].number > obj2.one[0].number;\r\n } else if (obj1.type === 'two') {\r\n return obj1.two[0].number > obj2.two[0].number;\r\n } else if (obj1.type === 'three') {\r\n return obj1.three[0].number > obj2.three[0].number;\r\n } else if (obj1.type === 'threeWithOne') {\r\n return obj1.three[0].number > obj2.three[0].number;\r\n } else if (obj1.type === 'threeWithTwo') {\r\n return obj1.three[0].number > obj2.three[0].number;\r\n } else if (obj1.type === 'fourWithOne') {\r\n return obj1.four[0].number > obj2.four[0].number;\r\n } else if (obj1.type === 'fourWithTwo') {\r\n return obj1.four[0].number > obj2.four[0].number;\r\n } else if (obj1.type === 'threeWithOneList') {\r\n return obj1.list[0].three[0].number > obj2.list[0].three[0].number;\r\n } else if (obj1.type === 'threeWithTwoList') {\r\n return obj1.list[0].three[0].number > obj2.list[0].three[0].number;\r\n } else if (obj1.type === 'oneList') {\r\n return obj1.list[0].one[0].number > obj2.list[0].one[0].number;\r\n } else if (obj1.type === 'twoList') {\r\n return obj1.list[0].two[0].number > obj2.list[0].two[0].number;\r\n } else if (obj1.type === 'threeList') {\r\n return obj1.list[0].three[0].number > obj2.list[0].three[0].number;\r\n } else if (obj1.type === 'four') {\r\n return obj1.four[0].number > obj2.four[0].number;\r\n }\r\n }\r\n\r\n\r\n getAndDeleteOnePokerByNumber(number){\r\n for(let i=0; i0);\r\n\r\n this.dizhu.sortPoker();\r\n }\r\n\r\n sendPoker(){\r\n let player = this.playerList[0];\r\n do{\r\n let index = this.getRandomIntInclusive(0,this.pokerList.length-1);\r\n let poker = this.pokerList.splice(index,1)[0];\r\n player.addPoker(poker);\r\n player = player.next;\r\n }while(this.pokerList.length>3);\r\n\r\n for(let i=0; i\n
\n
\n \n {{player2Str[0]}}\n
\n {{player2Str[1]}}\n

\n {{player2Str[2]}}\n
\n
\n\n
\n \n {{player1Str[0]}}\n
\n {{player1Str[1]}}\n

\n {{player1Str[2]}}\n
\n
\n\n
\n \n {{player0Str[0]}}\n
\n {{player0Str[1]}}\n

\n {{player0Str[2]}}\n
\n
\n \n \n \n
\n
\n\n
\n
\n {{deskStr[0]}}\n
\n {{deskStr[1]}}\n
\n
\n\n
\n \n
\n
\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HelloWorld.vue?vue&type=template&id=62298b0c&scoped=true&\"\nimport script from \"./HelloWorld.vue?vue&type=script&lang=js&\"\nexport * from \"./HelloWorld.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62298b0c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"user-select\":\"none\",\"position\":\"fixed\",\"left\":\"0\",\"right\":\"0\",\"top\":\"0\",\"bottom\":\"0\",\"background-repeat\":\"no-repeat\",\"background-size\":\"cover\"},style:({backgroundImage:'url('+require('../img/scene.jpg')+')'})},[_c('audio',{style:({ marginLeft: _vm.buttonMarginLeft + 'px' }),attrs:{\"muted\":\"\",\"autoplay\":\"\",\"loop\":\"\",\"controls\":\"\"}},[_c('source',{attrs:{\"src\":require(\"../audio/bgm.mp3\")}}),_vm._v(\" 您的浏览器不支持 audio 元素。 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"600px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('div',{staticStyle:{\"width\":\"300px\",\"word-wrap\":\"break-word\"}},[_vm._v(\" 已出的牌: \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.deskStr[1])+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='ready'),expression:\"game.stage==='ready'\"}],staticStyle:{\"font-size\":\"20px\",\"color\":\"white\",\"position\":\"fixed\",\"bottom\":\"200px\",\"z-index\":\"999\"},style:({ marginLeft: _vm.playerMarginLeft-40 + 'px' })},[_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.game.playerList[0].ready),expression:\"!game.playerList[0].ready\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":_vm.setReady}},[_vm._v(_vm._s(_vm.game.playerList[0].ready?'已准备':'准备'))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.playerList[0].ready),expression:\"game.playerList[0].ready\"}],staticStyle:{\"color\":\"red\",\"width\":\"80px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[0].ready?'已准备':'未准备')+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='jiaoFen'&&_vm.game.currentJiaoFenPlayer===_vm.game.playerList[0]),expression:\"game.stage==='jiaoFen'&&game.currentJiaoFenPlayer===game.playerList[0]\"}],staticStyle:{\"font-size\":\"20px\",\"color\":\"white\",\"position\":\"fixed\",\"bottom\":\"200px\",\"z-index\":\"999\"},style:({ marginLeft: _vm.playerMarginLeft-40 + 'px' })},[_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":function($event){return _vm.game.playerList[0].setJiaoFen(0)}}},[_vm._v(\"不叫\")]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":function($event){return _vm.game.playerList[0].setJiaoFen(1)}}},[_vm._v(\"1分\")]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":function($event){return _vm.game.playerList[0].setJiaoFen(2)}}},[_vm._v(\"2分\")]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":function($event){return _vm.game.playerList[0].setJiaoFen(3)}}},[_vm._v(\"3分\")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='play'),expression:\"game.stage==='play'\"}],staticStyle:{\"color\":\"white\",\"position\":\"fixed\",\"bottom\":\"0\",\"width\":\"100%\",\"height\":\"200px\",\"line-height\":\"200px\"},style:({ marginLeft: _vm.playerMarginLeft-150 + 'px' })},[_vm._v(\" 你是 \"),_c('span',{staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(_vm._s(_vm.game.playerList[0].type==='nongmin'?'农民':'地主'))])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"0\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.playerMarginLeft + 'px' })},_vm._l((_vm.game.playerList[0].pokerList),function(item){return _c('div',{staticClass:\"poker pokerDesk\",class:{ selected: item.selected, s:item.number===16, x:item.number===17 },on:{\"mouseenter\":function($event){return _vm.enter($event,item)},\"mousedown\":function($event){return _vm.pickPoker(item)}}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[0]),expression:\"game.currentPlayer===game.playerList[0]\"}],staticStyle:{\"position\":\"fixed\",\"bottom\":\"200px\",\"width\":\"100%\",\"height\":\"100px\",\"text-align\":\"left\"}},[_c('div',{staticStyle:{\"width\":\"400px\",\"height\":\"60px\"},style:({ marginLeft: _vm.buttonMarginLeft + 'px' })},[_c('button',{staticStyle:{\"height\":\"60px\",\"border-radius\":\"4px\",\"float\":\"left\",\"font-size\":\"40px\",\"background-color\":\"red\"},on:{\"click\":_vm.pass}},[_vm._v(\"不出\")]),_c('button',{staticStyle:{\"height\":\"60px\",\"border-radius\":\"4px\",\"float\":\"right\",\"font-size\":\"40px\",\"background-color\":\"lawngreen\"},on:{\"click\":_vm.sendPoker2}},[_vm._v(\"出牌\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[0]),expression:\"game.currentPlayer===game.playerList[0]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"float\":\"left\",\"margin-left\":\"20px\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")])])]),(_vm.game.playerList[0].lastSendObj&&_vm.game.playerList[0].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"350px\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.deskPokerMarginLeft + 'px' })},_vm._l((_vm.game.playerList[0].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[0].lastSendObj&&!_vm.game.playerList[0].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"350px\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.deskPokerMarginLeft + 'px' })},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"40px\",\"left\":\"20px\",\"height\":\"200px\",\"width\":\"100px\",\"border\":\"solid 1px\",\"border-radius\":\"8px\",\"background-color\":\"azure\",\"text-align\":\"center\"}},[_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='play'),expression:\"game.stage==='play'\"}],staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].type==='nongmin'?'农民':'地主')+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].name)+\" \")]),_c('p',[_vm._v(\" 剩余 \"+_vm._s(_vm.game.playerList[2].pokerList.length)+\" 张 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[2]),expression:\"game.currentPlayer===game.playerList[2]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"left\":\"0\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='ready'),expression:\"game.stage==='ready'\"}],staticStyle:{\"color\":\"red\",\"width\":\"80px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"left\":\"0\",\"z-index\":\"999\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].ready?'已准备':'未准备')+\" \")])]),(_vm.game.playerList[2].lastSendObj&&_vm.game.playerList[2].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},_vm._l((_vm.game.playerList[2].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[2].lastSendObj&&!_vm.game.playerList[2].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),(_vm.game.stage==='jiaoFen')?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].jiaoFen)+\"分 \")])]):_vm._e(),_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"40px\",\"right\":\"20px\",\"height\":\"200px\",\"width\":\"100px\",\"border\":\"solid 1px\",\"border-radius\":\"8px\",\"background-color\":\"azure\",\"text-align\":\"center\"}},[_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='play'),expression:\"game.stage==='play'\"}],staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].type==='nongmin'?'农民':'地主')+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].name)+\" \")]),_c('p',[_vm._v(\" 剩余 \"+_vm._s(_vm.game.playerList[1].pokerList.length)+\" 张 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[1]),expression:\"game.currentPlayer===game.playerList[1]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"right\":\"0\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='ready'),expression:\"game.stage==='ready'\"}],staticStyle:{\"color\":\"red\",\"width\":\"80px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"right\":\"0\",\"z-index\":\"999\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].ready?'已准备':'未准备')+\" \")])]),(_vm.game.playerList[1].lastSendObj&&_vm.game.playerList[1].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},_vm._l((_vm.game.playerList[1].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[1].lastSendObj&&!_vm.game.playerList[1].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),(_vm.game.stage==='jiaoFen')?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].jiaoFen)+\"分 \")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Game.vue?vue&type=template&id=7bd525ec&scoped=true&\"\nimport script from \"./Game.vue?vue&type=script&lang=js&\"\nexport * from \"./Game.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Game.vue?vue&type=style&index=0&id=7bd525ec&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7bd525ec\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=51e9b17b&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\n\nVue.config.productionTip = false;\n\nnew Vue({\n render: h => h(App),\n}).$mount('#app');\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=style&index=0&id=7bd525ec&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=style&index=0&id=7bd525ec&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"media/bgm.8035c6a0.mp3\";"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/js/app.fdd410da.js b/dist/js/app.fdd410da.js deleted file mode 100644 index bc199c70c5753f33bbafd118210207979fcd9f84..0000000000000000000000000000000000000000 --- a/dist/js/app.fdd410da.js +++ /dev/null @@ -1,2 +0,0 @@ -(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=2 && Count3List[Count3List.length-1][0].number<=14 && Count3List[0][0].number+Count3List.length-1===Count3List[Count3List.length-1][0].number){\r\n //threeWithOneList\r\n if(pokerList.length-3*Count3List.length===Count3List.length){\r\n return {\r\n type:'threeWithOneList',\r\n poker: pokerList,\r\n list: Count3List.map(function (item) {\r\n return {\r\n three: item,\r\n };\r\n }),\r\n };\r\n }else{\r\n //threeWithTwoList\r\n if(Count2List.length===Count3List.length){\r\n return {\r\n type:'threeWithTwoList',\r\n poker: pokerList,\r\n list: Count3List.map(function (item) {\r\n return {\r\n three: item,\r\n };\r\n }),\r\n };\r\n }\r\n }\r\n }\r\n\r\n //判断oneList\r\n if(pokerList.length >= 5 && pokerList[pokerList.length-1].number<=14 && Count1List.length === pokerList.length && pokerList[0].number+pokerList.length-1===pokerList[pokerList.length-1].number){\r\n return {\r\n type:'oneList',\r\n poker: pokerList,\r\n list: Count1List.map(function (item) {\r\n return {\r\n one: item,\r\n }\r\n }),\r\n }\r\n }\r\n\r\n //判断twoList\r\n if(pokerList.length >= 6 && pokerList[pokerList.length-1].number<=14 && pokerList.length%2 === 0 && Count2List.length === pokerList.length/2 && pokerList[0].number+pokerList.length/2-1===pokerList[pokerList.length-1].number){\r\n return {\r\n type:'twoList',\r\n poker: pokerList,\r\n list: Count2List.map(function (item) {\r\n return {\r\n two: item,\r\n }\r\n }),\r\n }\r\n }\r\n\r\n //判断threeList\r\n if(pokerList.length >= 6 && pokerList[pokerList.length-1].number<=14 && pokerList.length%3 === 0 && Count3List.length === pokerList.length/3 && pokerList[0].number+pokerList.length/3-1===pokerList[pokerList.length-1].number){\r\n return {\r\n type:'threeList',\r\n poker: pokerList,\r\n list: Count3List.map(function (item) {\r\n return {\r\n three: item,\r\n }\r\n }),\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n static pokerListToString(pokerList){\r\n let result = '';\r\n for(let i=0; i0){\r\n let curList = [Count3List[0]];\r\n let lists = [];\r\n\r\n for(let i2=1; i21){\r\n threeList.push(lists[i3]);\r\n }else{\r\n three.push(lists[i3][0]);\r\n }\r\n }\r\n }\r\n\r\n if(Count2List.length>0){\r\n let curList2 = [Count2List[0]];\r\n let lists2 = [];\r\n for(let i4=1; i42){\r\n twoList.push(lists2[i5]);\r\n }else{\r\n two = two.concat(lists2[i5]);\r\n }\r\n }\r\n }\r\n\r\n if(Count1List.length>0){\r\n let curList1 = [Count1List[0]];\r\n let lists1 = [];\r\n for(let i6=1; i64){\r\n oneList.push(lists1[i7]);\r\n }else{\r\n one = one.concat(lists1[i7]);\r\n }\r\n }\r\n }\r\n\r\n //combine one two together\r\n if(one.length>0&&two.length>0){\r\n\r\n let oneIndex = 0;\r\n let twoIndex = 0;\r\n\r\n while(true){\r\n\r\n if(oneIndex>one.length-1&&twoIndex>two.length-1){\r\n break;\r\n }\r\n\r\n let startN;\r\n let lastN;\r\n let ones = [];\r\n let twos = [];\r\n\r\n if(one.length===0 || oneIndex>one.length-1){\r\n break;\r\n }\r\n\r\n if(two.length===0 || twoIndex>two.length-1){\r\n startN = one[oneIndex][0].number;\r\n ones.push(one[oneIndex]);\r\n oneIndex++;\r\n }else{\r\n if(one[oneIndex][0].numberone.length-1&&twoIndex>two.length-1){\r\n break;\r\n }\r\n\r\n if(oneIndex0){\r\n if(lastObj.type==='four'){\r\n for(let i=0; ilastObj.four[0].number){\r\n poker = classifyObj.four[i];\r\n break;\r\n }\r\n }\r\n }else{\r\n poker = classifyObj.four[0];\r\n }\r\n\r\n }\r\n\r\n if(!poker){\r\n if(classifyObj.poker15.length===4){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: 'four',\r\n poker: poker,\r\n four: poker,\r\n };\r\n }else{\r\n if(classifyObj.poker16.length>0&&classifyObj.poker17.length>0){\r\n obj = {\r\n type: 'sx',\r\n poker: classifyObj.poker16.concat(classifyObj.poker17),\r\n sx: classifyObj.poker16.concat(classifyObj.poker17),\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n //接牌5\r\n getByObj5(lastObj){\r\n\r\n let obj = this.getByBoom(lastObj);\r\n\r\n if(!obj){\r\n if(this.player.pokerList[this.player.pokerList.length-1].number>lastObj.one[0].number){\r\n obj = {\r\n type: 'one',\r\n poker: [this.player.pokerList[this.player.pokerList.length-1]],\r\n one: [this.player.pokerList[this.player.pokerList.length-1]],\r\n };\r\n }\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n //接牌6\r\n getByObj6(lastObj){\r\n\r\n let obj;\r\n if(lastObj.player.type==='dizhu'){\r\n obj = this.getByObj1(lastObj);\r\n }else{\r\n obj = this.getByObj3(lastObj);\r\n }\r\n\r\n return obj;\r\n\r\n }\r\n\r\n //接牌\r\n playByObj(lastObj){\r\n let obj;\r\n\r\n if(lastObj.type==='sx'){\r\n obj = {\r\n type: 'pass',\r\n poker: ['pass'],\r\n };\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n return;\r\n }\r\n\r\n if(this.player.type==='dizhu'){\r\n if(this.player.next.pokerList.length===1||this.player.last.pokerList.length===1){\r\n obj = this.getByObj4(lastObj);\r\n }else{\r\n obj = this.getByObj1(lastObj);\r\n }\r\n }else{\r\n if(this.player.next.type===this.player.type){\r\n obj = this.getByObj6(lastObj);\r\n }else{\r\n if(this.player.next.pokerList.length===1){\r\n if(lastObj.player.type==='dizhu'){\r\n obj = this.getByObj4(lastObj);\r\n }else{\r\n if(lastObj.type==='one'){\r\n let canNotGet = this.isPlayerCanNotGetOne(lastObj);\r\n if(canNotGet){\r\n //pass\r\n }else{\r\n obj = this.getByObj5(lastObj);\r\n }\r\n }else{\r\n //pass\r\n }\r\n }\r\n }else{\r\n obj = this.getByObj6(lastObj);\r\n }\r\n }\r\n }\r\n\r\n if(!obj){\r\n obj = {\r\n type: 'pass',\r\n poker: ['pass'],\r\n };\r\n }\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n }\r\n\r\n isPlayerCanNotGetOne(obj){\r\n let allPoker = {\r\n 3:0,\r\n 4:0,\r\n 5:0,\r\n 6:0,\r\n 7:0,\r\n 8:0,\r\n 9:0,\r\n 10:0,\r\n 11:0,\r\n 12:0,\r\n 13:0,\r\n 14:0,\r\n 15:0,\r\n 16:0,\r\n 17:0,\r\n };\r\n let oldPokerList = this.game.oldPokerList;\r\n for(let i=0; i0){\r\n for(let i=0; ilastObj.one[0].number){\r\n poker = classifyObj.one[i];\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }\r\n }else if(type === 'two'){\r\n let poker;\r\n\r\n if(classifyObj.two.length>0){\r\n for(let i=0; ilastObj.two[0].number){\r\n poker = classifyObj.two[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n two: poker,\r\n };\r\n }\r\n }else if(type === 'three'){\r\n let poker;\r\n\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n if(classifyObj.three[i][0].number<=13){\r\n poker = classifyObj.three[i];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n three: poker,\r\n };\r\n }\r\n }else if(type === 'threeWithOne'){\r\n let pokerThree;\r\n let one;\r\n if(classifyObj.three.length>0){\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n if(classifyObj.three[i][0].number<=13){\r\n pokerThree = classifyObj.three[i];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(classifyObj.one.length>0){\r\n one = classifyObj.one[0];\r\n }\r\n\r\n if(pokerThree&&one){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(one),\r\n three: pokerThree,\r\n one: one,\r\n };\r\n }\r\n\r\n }else if(type === 'threeWithTwo'){\r\n\r\n let pokerThree;\r\n let two;\r\n if(classifyObj.three.length>0){\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n if(classifyObj.three[i][0].number<=13){\r\n pokerThree = classifyObj.three[i];\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(classifyObj.two.length>0){\r\n two = classifyObj.two[0];\r\n }\r\n\r\n if(pokerThree&&two){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(two),\r\n three: pokerThree,\r\n two: two,\r\n };\r\n }\r\n\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n //最小接 不拆\r\n getSmallestObjByObj(lastObj){\r\n let classifyObj = this.player.classifyObj;\r\n\r\n let type = lastObj.type;\r\n let obj = null;\r\n if(type === 'one'){\r\n let poker;\r\n if(classifyObj.one.length>0){\r\n for(let i=0; ilastObj.one[0].number){\r\n poker = classifyObj.one[i];\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n if(!poker){\r\n if(lastObj.one[0].number<15&&classifyObj.poker15.length>0){\r\n poker = classifyObj.poker15.slice(0,1);\r\n }else{\r\n if(classifyObj.poker17.length===0||classifyObj.poker16.length===0){\r\n if(lastObj.one[0].number<16&&classifyObj.poker16.length>0){\r\n poker = classifyObj.poker16;\r\n }else if(lastObj.one[0].number<17&&classifyObj.poker17.length>0){\r\n poker = classifyObj.poker17;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }\r\n }else if(type === 'two'){\r\n let poker;\r\n\r\n if(classifyObj.two.length>0){\r\n for(let i=0; ilastObj.two[0].number){\r\n poker = classifyObj.two[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(!poker){\r\n if(lastObj.two[0].number<15&&classifyObj.poker15.length>1){\r\n poker = classifyObj.poker15.slice(0,2);\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n two: poker,\r\n };\r\n }\r\n }else if(type === 'three'){\r\n let poker;\r\n\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n poker = classifyObj.three[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(!poker){\r\n if(lastObj.three[0].number<15&&classifyObj.poker15.length===3){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n three: poker,\r\n };\r\n }\r\n }else if(type === 'threeWithOne'){\r\n let pokerThree;\r\n let one;\r\n if(classifyObj.three.length>0){\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n pokerThree = classifyObj.three[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if(!pokerThree){\r\n if(lastObj.three[0].number<15&&classifyObj.poker15.length===3){\r\n pokerThree = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(classifyObj.one.length>0){\r\n one = classifyObj.one[0];\r\n }\r\n if(!one&&classifyObj.poker15.length>0){\r\n one = classifyObj.poker15.slice(0,1);\r\n }\r\n\r\n if(pokerThree&&one){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(one),\r\n three: pokerThree,\r\n one: one,\r\n };\r\n }\r\n\r\n }else if(type === 'threeWithTwo'){\r\n\r\n let pokerThree;\r\n let two;\r\n if(classifyObj.three.length>0){\r\n if(classifyObj.three.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n pokerThree = classifyObj.three[i];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if(!pokerThree){\r\n if(lastObj.three[0].number<15&&classifyObj.poker15.length===3){\r\n pokerThree = classifyObj.poker15;\r\n }\r\n }\r\n\r\n\r\n if(classifyObj.two.length>0){\r\n two = classifyObj.two[0];\r\n }\r\n if(!two&&classifyObj.poker15.length>1){\r\n two = classifyObj.poker15.slice(0,2);\r\n }\r\n\r\n if(pokerThree&&two){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(two),\r\n three: pokerThree,\r\n two: two,\r\n };\r\n }\r\n\r\n }else if(type === 'four'){\r\n\r\n let poker;\r\n\r\n if(classifyObj.four.length>0){\r\n for(let i=0; ilastObj.four[0].number){\r\n poker = classifyObj.four[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(!poker){\r\n if(classifyObj.poker15.length===4){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n four: poker,\r\n };\r\n }\r\n }else if(type === 'fourWithOne'){\r\n\r\n let pokerFour;\r\n let one1;\r\n let one2;\r\n\r\n if(classifyObj.four.length>0){\r\n for(let i=0; ilastObj.four[0].number){\r\n pokerFour = classifyObj.four[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(classifyObj.one.length>1){\r\n one1 = classifyObj.one[0];\r\n one2 = classifyObj.one[1];\r\n }\r\n\r\n if(pokerFour&&one1&&one2){\r\n obj = {\r\n type: type,\r\n poker: pokerFour.concat(one1).concat(one2),\r\n four: pokerFour,\r\n };\r\n }\r\n }else if(type === 'fourWithTwo'){\r\n\r\n let pokerFour;\r\n let two1;\r\n let two2;\r\n\r\n if(classifyObj.four.length>0){\r\n for(let i=0; ilastObj.four[0].number){\r\n pokerFour = classifyObj.four[i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if(classifyObj.two.length>1){\r\n two1 = classifyObj.two[0];\r\n two2 = classifyObj.two[1];\r\n }\r\n\r\n if(pokerFour&&two1&&two2){\r\n obj = {\r\n type: type,\r\n poker: pokerFour.concat(two1).concat(two2),\r\n four: pokerFour,\r\n };\r\n }\r\n }else if(type === 'threeWithOneList'){\r\n if(classifyObj.threeList.length>0){\r\n for(let i=0; ilastObj.list[0].three[0].number){\r\n if(classifyObj.one.length>=classifyObj.threeList[i].length){\r\n let pokerThree = classifyObj.threeList[i].flat(1);\r\n let pokerOne = classifyObj.one.slice(0,classifyObj.threeList[i].length).flat(1);\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(pokerOne),\r\n list: classifyObj.threeList[i].map(function (item) {\r\n return {\r\n three: item\r\n };\r\n }),\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }else if(type === 'threeWithTwoList'){\r\n if(classifyObj.threeList.length>0){\r\n for(let i=0; ilastObj.list[0].three[0].number){\r\n if(classifyObj.two.length>=classifyObj.threeList[i].length){\r\n let pokerThree = classifyObj.threeList[i].flat(1);\r\n let pokerTwo = classifyObj.two.slice(0,classifyObj.threeList[i].length).flat(1);\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(pokerTwo),\r\n list: classifyObj.threeList[i].map(function (item) {\r\n return {\r\n three: item\r\n };\r\n }),\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'oneList'){\r\n if(classifyObj.oneList.length>0){\r\n for(let i=0; i lastObj.list[0].one[0].number) {\r\n obj = {\r\n type: type,\r\n poker: classifyObj.oneList[i].flat(1),\r\n list: classifyObj.oneList[i].map(function (item) {\r\n return {\r\n one: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'twoList'){\r\n if(classifyObj.twoList.length>0){\r\n for(let i=0; i lastObj.list[0].two[0].number) {\r\n obj = {\r\n type: type,\r\n poker: classifyObj.twoList[i].flat(1),\r\n list: classifyObj.twoList[i].map(function (item) {\r\n return {\r\n two: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'threeList'){\r\n if(classifyObj.threeList.length>0){\r\n for(let i=0; i lastObj.list[0].three[0].number) {\r\n obj = {\r\n type: type,\r\n poker: classifyObj.threeList[i].flat(1),\r\n list: classifyObj.threeList[i].map(function (item) {\r\n return {\r\n three: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'sx'){\r\n if(classifyObj.poker16.length>0&&classifyObj.poker17.length>0){\r\n return {\r\n type: type,\r\n poker: classifyObj.poker16.concat(classifyObj.poker17),\r\n sx: classifyObj.poker16.concat(classifyObj.poker17),\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n getSmallestObjByType(type, oneBigToSmall){\r\n let classifyObj = this.player.classifyObj;\r\n\r\n let obj = null;\r\n if(type === 'one'){\r\n if(oneBigToSmall){\r\n let poker;\r\n if(classifyObj.poker17.length>0){\r\n poker = classifyObj.poker17;\r\n }else if(classifyObj.poker16.length>0){\r\n poker = classifyObj.poker16;\r\n }else if(classifyObj.poker15.length>0){\r\n poker = classifyObj.poker15.slice(0,1);\r\n }else{\r\n poker = classifyObj.one[classifyObj.one.length-1];\r\n }\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }else{\r\n let poker;\r\n if(classifyObj.one.length>0){\r\n poker = classifyObj.one[0];\r\n }else{\r\n\r\n if(classifyObj.poker15.length>0&&classifyObj.poker15.length<4){\r\n poker = classifyObj.poker15.slice(0,1);\r\n }else{\r\n if(classifyObj.poker17.length===0||classifyObj.poker16.length===0){\r\n if(classifyObj.poker16.length>0){\r\n poker = classifyObj.poker16;\r\n }else if(classifyObj.poker17.length>0){\r\n poker = classifyObj.poker17;\r\n }\r\n }\r\n }\r\n\r\n }\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }\r\n\r\n }\r\n }else if(type === 'two'){\r\n let poker;\r\n\r\n if(oneBigToSmall){\r\n if(classifyObj.two.length>0){\r\n poker = classifyObj.two[0];\r\n }else{\r\n if(classifyObj.poker15.length===2){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n }else{\r\n if(classifyObj.two.length>0){\r\n poker = classifyObj.two[0];\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n two: poker,\r\n };\r\n }\r\n }else if(type === 'three'){\r\n let poker;\r\n\r\n if(oneBigToSmall){\r\n if(classifyObj.three.length>0){\r\n poker = classifyObj.three[0];\r\n }else{\r\n if(classifyObj.poker15.length===3){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n }else{\r\n if(classifyObj.three.length>0){\r\n poker = classifyObj.three[0];\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n three: poker,\r\n };\r\n }\r\n }else if(type === 'threeWithOne'){\r\n let pokerThree;\r\n let one;\r\n if(classifyObj.three.length>0){\r\n pokerThree = classifyObj.three[0];\r\n }\r\n if(classifyObj.one.length>0){\r\n one = classifyObj.one[0];\r\n }\r\n\r\n if(oneBigToSmall){\r\n if(!pokerThree&&classifyObj.poker15.length===3){\r\n pokerThree = classifyObj.poker15;\r\n }\r\n if(!one&&classifyObj.poker15.length===1){\r\n one = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(pokerThree&&one){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(one),\r\n three: pokerThree,\r\n one: one,\r\n };\r\n }\r\n\r\n }else if(type === 'four'){\r\n\r\n let poker;\r\n\r\n if(oneBigToSmall){\r\n if(classifyObj.four.length>0){\r\n poker = classifyObj.four[0];\r\n }else{\r\n if(classifyObj.poker15.length===4){\r\n poker = classifyObj.poker15;\r\n }\r\n }\r\n }else{\r\n if(classifyObj.four.length>0){\r\n poker = classifyObj.four[0];\r\n }\r\n }\r\n\r\n if(poker){\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n four: poker,\r\n };\r\n }\r\n }else if(type === 'threeWithTwo'){\r\n\r\n let pokerThree;\r\n let two;\r\n if(classifyObj.three.length>0){\r\n pokerThree = classifyObj.three[0];\r\n }\r\n if(classifyObj.two.length>0){\r\n two = classifyObj.two[0];\r\n }\r\n\r\n if(oneBigToSmall){\r\n if(!pokerThree&&classifyObj.poker15.length===3){\r\n pokerThree = classifyObj.poker15;\r\n }\r\n if(!two&&classifyObj.poker15.length===2){\r\n two = classifyObj.poker15;\r\n }\r\n }\r\n\r\n if(pokerThree&&two){\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(two),\r\n three: pokerThree,\r\n two: two,\r\n };\r\n }\r\n\r\n }else if(type === 'threeWithOneList'){\r\n if(classifyObj.threeList.length>0){\r\n if(classifyObj.one.length>=classifyObj.threeList[0].length){\r\n let pokerThree = classifyObj.threeList[0].flat(1);\r\n let pokerOne = classifyObj.one.slice(0,classifyObj.threeList[0].length).flat(1);\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(pokerOne),\r\n list: classifyObj.threeList[0].map(function (item) {\r\n return {\r\n three: item\r\n };\r\n }),\r\n };\r\n }\r\n }\r\n\r\n }else if(type === 'threeWithTwoList'){\r\n if(classifyObj.threeList.length>0){\r\n if(classifyObj.two.length>=classifyObj.threeList[0].length){\r\n let pokerThree = classifyObj.threeList[0].flat(1);\r\n let pokerTwo = classifyObj.two.slice(0,classifyObj.threeList[0].length).flat(1);\r\n obj = {\r\n type: type,\r\n poker: pokerThree.concat(pokerTwo),\r\n list: classifyObj.threeList[0].map(function (item) {\r\n return {\r\n three: item\r\n };\r\n }),\r\n };\r\n }\r\n }\r\n }else if(type === 'oneList'){\r\n if(classifyObj.oneList.length>0){\r\n obj = {\r\n type: type,\r\n poker: classifyObj.oneList[0].flat(1),\r\n list: classifyObj.oneList[0].map(function (item) {\r\n return {\r\n one: item,\r\n }\r\n }),\r\n };\r\n }\r\n }else if(type === 'twoList'){\r\n if(classifyObj.twoList.length>0){\r\n obj = {\r\n type: type,\r\n poker: classifyObj.twoList[0].flat(1),\r\n list: classifyObj.twoList[0].map(function (item) {\r\n return {\r\n two: item,\r\n }\r\n }),\r\n };\r\n }\r\n }else if(type === 'threeList'){\r\n if(classifyObj.threeList.length>0){\r\n obj = {\r\n type: type,\r\n poker: classifyObj.threeList[0].flat(1),\r\n list: classifyObj.threeList[0].map(function (item) {\r\n return {\r\n three: item,\r\n }\r\n }),\r\n };\r\n }\r\n }else if(type === 'sx'){\r\n if(classifyObj.poker16.length>0&&classifyObj.poker17.length>0){\r\n return {\r\n type: type,\r\n poker: classifyObj.poker16.concat(classifyObj.poker17),\r\n sx: classifyObj.poker16.concat(classifyObj.poker17),\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n //接牌 拆牌\r\n getBySplit(lastObj){\r\n let pokerList = this.player.pokerList;\r\n\r\n let lastPoker = pokerList[0];\r\n let curList = [lastPoker];\r\n let lists = [];\r\n for(let i=1; i0){\r\n for(let i=0; ilastObj.two[0].number){\r\n obj = {\r\n type: type,\r\n poker: Count2List[i],\r\n two: Count2List[i],\r\n };\r\n break;\r\n }\r\n }\r\n }else if(Count3List.length>0){\r\n for(let i=0; ilastObj.two[0].number){\r\n let poker = Count3List[i].slice(0,2);\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n two: poker,\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'threeWithOne'){\r\n if(Count3List.length>0){\r\n for(let i=0; ilastObj.three[0].number){\r\n\r\n let one;\r\n if(Count1List.length>0){\r\n one = Count1List[0];\r\n }else if(Count2List.length>0){\r\n one = Count2List[0].slice(0,1);\r\n }else if(Count3List.length>0){\r\n for(let j=0; j0){\r\n for(let i=0; ilastObj.three[0].number){\r\n\r\n let two;\r\n if(Count2List.length>0){\r\n two = Count2List[0];\r\n }else if(Count3List.length>0){\r\n for(let j=0; j=lastObj.list.length){\r\n for(let i=0; ilastObj.list[0].three[0].number && Count3List[i][0].number+lastObj.list.length-1===Count3List[i+lastObj.list.length-1][0].number && Count3List[i+lastObj.list.length-1][0].number<=14){\r\n\r\n let oneList = [];\r\n\r\n for(let j=0; j=i&&j<=i+lastObj.list.length-1){\r\n continue;\r\n }\r\n oneList.push(Count3List[j].slice(0,1));\r\n if(oneList.length=lastObj.list.length){\r\n for(let i=0; ilastObj.list[0].three[0].number && Count3List[i][0].number+lastObj.list.length-1===Count3List[i+lastObj.list.length-1][0].number && Count3List[i+lastObj.list.length-1][0].number<=14){\r\n\r\n let twoList = [];\r\n\r\n for(let j=0; j=i&&j<=i+lastObj.list.length-1){\r\n continue;\r\n }\r\n twoList.push(Count3List[j].slice(0,2));\r\n }\r\n\r\n if(twoList.length === lastObj.list.length){\r\n\r\n let poker = [];\r\n let list = [];\r\n for(let j=0; j=lastObj.list.length ){\r\n for(let i=0; ilastObj.list[0].one[0].number && Count1List[i][0].number+lastObj.list.length-1===Count1List[i+lastObj.list.length-1][0].number && Count1List[i+lastObj.list.length-1][0].number<=14){\r\n let list = Count1List.slice(i,i+lastObj.list.length);\r\n obj = {\r\n type: type,\r\n poker: list.flat(1),\r\n list: list.map(function (item) {\r\n return {\r\n one: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'twoList'){\r\n if(Count2List.length>=lastObj.list.length ){\r\n for(let i=0; ilastObj.list[0].two[0].number && Count2List[i][0].number+lastObj.list.length-1===Count2List[i+lastObj.list.length-1][0].number && Count2List[i+lastObj.list.length-1][0].number<=14){\r\n let list = Count2List.slice(i,i+lastObj.list.length);\r\n obj = {\r\n type: type,\r\n poker: list.flat(1),\r\n list: list.map(function (item) {\r\n return {\r\n two: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'threeList'){\r\n if(Count3List.length>=lastObj.list.length ){\r\n for(let i=0; ilastObj.list[0].two[0].number && Count3List[i][0].number+lastObj.list.length-1===Count3List[i+lastObj.list.length-1][0].number && Count3List[i+lastObj.list.length-1][0].number<=14){\r\n let list = Count3List.slice(i,i+lastObj.list.length);\r\n obj = {\r\n type: type,\r\n poker: list.flat(1),\r\n list: list.map(function (item) {\r\n return {\r\n three: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n sortFunction(a, b){\r\n return a.number - b.number;\r\n }\r\n\r\n sortArray(a, b){\r\n return a[0].number - b[0].number;\r\n }\r\n\r\n sortList(a, b){\r\n return a[0][0].number - b[0][0].number;\r\n }\r\n\r\n}\r\n\r\nexport default AI;","import Poker from \"./Poker\";\r\nimport AI from \"./AI\";\r\n\r\nclass Player{\r\n constructor(param) {\r\n param = param || {};\r\n this.pokerList = [];\r\n this.name = param.name || 'noName'+Math.random();\r\n this.type = param.type || 'nongmin';\r\n this.last = null;\r\n this.next = null;\r\n this.isRobot = param.isRobot;\r\n this.game = param.game;\r\n this.ai = new AI({\r\n player: this,\r\n game: param.game,\r\n });\r\n this.classifyObj = null;\r\n\r\n this.lastSendObj = null;\r\n }\r\n\r\n //组牌\r\n getClassifyObj(){\r\n this.classifyObj = this.ai.getClassifyObj(this.pokerList);\r\n console.log(this.classifyObj);\r\n }\r\n\r\n addPoker(poker){\r\n this.pokerList.push(poker);\r\n }\r\n\r\n sortPoker(){\r\n this.pokerList.sort(this.sortFunction);\r\n }\r\n\r\n sortFunction(a, b){\r\n return a.number - b.number;\r\n }\r\n\r\n getLastObj(){\r\n let lastObj = this.last.lastSendObj;\r\n if(!lastObj || lastObj.type === 'pass'){\r\n lastObj = this.next.lastSendObj;\r\n if(!lastObj || lastObj.type === 'pass'){\r\n return false;\r\n }\r\n }\r\n return lastObj;\r\n }\r\n\r\n playByAI(){\r\n\r\n let that = this;\r\n\r\n that.getClassifyObj();\r\n\r\n setTimeout(function () {\r\n let lastObj = that.getLastObj();\r\n if(lastObj){\r\n that.ai.playByObj(lastObj);\r\n }else{\r\n that.ai.playByAllType();\r\n }\r\n },1000);\r\n\r\n }\r\n\r\n sendPoker(obj){\r\n obj.player = this;\r\n this.game.clearDesk();\r\n this.lastSendObj = obj;\r\n this.game.deskPokerObj = obj;\r\n this.game.next();\r\n }\r\n\r\n deleteFromPokerListAndSendByObj(obj){\r\n let tempList = [];\r\n if(obj.type === 'pass'){\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n let pokerList = obj.poker;\r\n for(let i=0; i0){\r\n let poker = list.splice(0,1)[0];\r\n this.pokerList.push(poker);\r\n }\r\n this.sortPoker();\r\n }\r\n\r\n handleList(list){\r\n if(list){\r\n let obj = Poker.getObjByPokerList(list);\r\n if(obj){\r\n if(obj.type === 'pass'){\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n let lastObj = this.getLastObj();\r\n if(lastObj){\r\n if(lastObj.type === obj.type){\r\n let comp = this.compareTwoObj(obj, lastObj);\r\n if(comp){\r\n this.sendPoker(obj);\r\n return true;\r\n }else{\r\n this.listBackToPokerList(list);\r\n alert('必须大于 '+Poker.pokerListToString(lastObj.poker));\r\n return false;\r\n }\r\n\r\n }else{\r\n\r\n if(obj.type === 'sx'){\r\n this.sendPoker(obj);\r\n return true;\r\n }else if(obj.type === 'four' && lastObj.type!=='sx'){\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n\r\n this.listBackToPokerList(list);\r\n alert('牌型不是 '+lastObj.type+'!');\r\n return false;\r\n }\r\n }else{\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n\r\n }else{\r\n this.listBackToPokerList(list);\r\n alert('牌型错误!');\r\n return false;\r\n }\r\n\r\n }else{\r\n alert('你没有此牌!');\r\n return false;\r\n }\r\n }\r\n\r\n playByPokerList(pokerList){\r\n if(this.game.currentPlayer!==this){\r\n alert('请等待 '+this.game.currentPlayer.name+' 出牌');\r\n return false;\r\n }\r\n\r\n let list = this.getListByList(pokerList);\r\n return this.handleList(list);\r\n }\r\n\r\n playByString(str){\r\n if(this.game.currentPlayer!==this){\r\n alert('请等待 '+this.game.currentPlayer.name+' 出牌');\r\n return false;\r\n }\r\n\r\n let list = this.getListByString(str);\r\n return this.handleList(list);\r\n }\r\n\r\n compareTwoObj(obj1, obj2) {\r\n if(obj1.list && obj2.list){\r\n if(obj1.list.length!==obj2.list.length){\r\n return false;\r\n }\r\n }\r\n\r\n if (obj1.type === 'one') {\r\n return obj1.one[0].number > obj2.one[0].number;\r\n } else if (obj1.type === 'two') {\r\n return obj1.two[0].number > obj2.two[0].number;\r\n } else if (obj1.type === 'three') {\r\n return obj1.three[0].number > obj2.three[0].number;\r\n } else if (obj1.type === 'threeWithOne') {\r\n return obj1.three[0].number > obj2.three[0].number;\r\n } else if (obj1.type === 'threeWithTwo') {\r\n return obj1.three[0].number > obj2.three[0].number;\r\n } else if (obj1.type === 'fourWithOne') {\r\n return obj1.four[0].number > obj2.four[0].number;\r\n } else if (obj1.type === 'fourWithTwo') {\r\n return obj1.four[0].number > obj2.four[0].number;\r\n } else if (obj1.type === 'threeWithOneList') {\r\n return obj1.list[0].three[0].number > obj2.list[0].three[0].number;\r\n } else if (obj1.type === 'threeWithTwoList') {\r\n return obj1.list[0].three[0].number > obj2.list[0].three[0].number;\r\n } else if (obj1.type === 'oneList') {\r\n return obj1.list[0].one[0].number > obj2.list[0].one[0].number;\r\n } else if (obj1.type === 'twoList') {\r\n return obj1.list[0].two[0].number > obj2.list[0].two[0].number;\r\n } else if (obj1.type === 'threeList') {\r\n return obj1.list[0].three[0].number > obj2.list[0].three[0].number;\r\n } else if (obj1.type === 'four') {\r\n return obj1.four[0].number > obj2.four[0].number;\r\n }\r\n }\r\n\r\n\r\n getAndDeleteOnePokerByNumber(number){\r\n for(let i=0; i3);\r\n\r\n do{\r\n let poker = this.pokerList.splice(0,1)[0];\r\n this.dizhu.addPoker(poker);\r\n }while(this.pokerList.length>0);\r\n\r\n for(let i=0; i\n
\n
\n \n {{player2Str[0]}}\n
\n {{player2Str[1]}}\n

\n {{player2Str[2]}}\n
\n
\n\n
\n \n {{player1Str[0]}}\n
\n {{player1Str[1]}}\n

\n {{player1Str[2]}}\n
\n
\n\n
\n \n {{player0Str[0]}}\n
\n {{player0Str[1]}}\n

\n {{player0Str[2]}}\n
\n
\n \n \n \n
\n
\n\n
\n
\n {{deskStr[0]}}\n
\n {{deskStr[1]}}\n
\n
\n\n
\n \n
\n
\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HelloWorld.vue?vue&type=template&id=62298b0c&scoped=true&\"\nimport script from \"./HelloWorld.vue?vue&type=script&lang=js&\"\nexport * from \"./HelloWorld.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62298b0c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"user-select\":\"none\",\"position\":\"fixed\",\"left\":\"0\",\"right\":\"0\",\"top\":\"0\",\"bottom\":\"0\",\"background-repeat\":\"no-repeat\",\"background-size\":\"cover\"},style:({backgroundImage:'url('+require('../img/scene.jpg')+')'})},[_c('audio',{style:({ marginLeft: _vm.buttonMarginLeft + 'px' }),attrs:{\"muted\":\"\",\"autoplay\":\"\",\"loop\":\"\",\"controls\":\"\"}},[_c('source',{attrs:{\"src\":require(\"../audio/bgm.mp3\")}}),_vm._v(\" 您的浏览器不支持 audio 元素。 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"0\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" 手牌:\"+_vm._s(_vm.player2Str[1])+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"right\":\"0\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" 手牌:\"+_vm._s(_vm.player1Str[1])+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"600px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('div',{staticStyle:{\"width\":\"300px\",\"word-wrap\":\"break-word\"}},[_vm._v(\" 已出的牌: \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.deskStr[1])+\" \")])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"left\":\"10px\",\"bottom\":\"10px\"}},[_c('button',{staticStyle:{\"height\":\"50px\",\"font-size\":\"30px\"},on:{\"click\":_vm.reStart}},[_vm._v(\"开始新一局\")])]),_c('div',{staticStyle:{\"color\":\"white\",\"position\":\"fixed\",\"bottom\":\"0\",\"width\":\"100%\",\"height\":\"200px\",\"line-height\":\"200px\"},style:({ marginLeft: _vm.playerMarginLeft-150 + 'px' })},[_vm._v(\" 你是 \"),_c('span',{staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(_vm._s(_vm.game.playerList[0].type==='nongmin'?'农民':'地主'))])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"0\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.playerMarginLeft + 'px' })},_vm._l((_vm.game.playerList[0].pokerList),function(item){return _c('div',{staticClass:\"poker pokerDesk\",class:{ selected: item.selected, s:item.number===16, x:item.number===17 },on:{\"mouseenter\":function($event){return _vm.enter($event,item)},\"mousedown\":function($event){return _vm.pickPoker(item)}}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0),_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"200px\",\"width\":\"100%\",\"height\":\"100px\",\"text-align\":\"left\"}},[_c('div',{staticStyle:{\"width\":\"400px\",\"height\":\"60px\"},style:({ marginLeft: _vm.buttonMarginLeft + 'px' })},[_c('button',{staticStyle:{\"height\":\"60px\",\"border-radius\":\"4px\",\"float\":\"left\",\"font-size\":\"40px\",\"background-color\":\"red\"},on:{\"click\":_vm.pass}},[_vm._v(\"不出\")]),_c('button',{staticStyle:{\"height\":\"60px\",\"border-radius\":\"4px\",\"float\":\"right\",\"font-size\":\"40px\",\"background-color\":\"lawngreen\"},on:{\"click\":_vm.sendPoker2}},[_vm._v(\"出牌\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[0]),expression:\"game.currentPlayer===game.playerList[0]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"float\":\"left\",\"margin-left\":\"20px\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")])])]),(_vm.game.playerList[0].lastSendObj&&_vm.game.playerList[0].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"350px\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.deskPokerMarginLeft + 'px' })},_vm._l((_vm.game.playerList[0].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[0].lastSendObj&&!_vm.game.playerList[0].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"350px\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.deskPokerMarginLeft + 'px' })},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"40px\",\"left\":\"20px\",\"height\":\"200px\",\"width\":\"100px\",\"border\":\"solid 1px\",\"border-radius\":\"8px\",\"background-color\":\"azure\",\"text-align\":\"center\"}},[_c('p',{staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].type==='nongmin'?'农民':'地主')+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].name)+\" \")]),_c('p',[_vm._v(\" 剩余 \"+_vm._s(_vm.game.playerList[2].pokerList.length)+\" 张 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[2]),expression:\"game.currentPlayer===game.playerList[2]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"left\":\"0\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")])]),(_vm.game.playerList[2].lastSendObj&&_vm.game.playerList[2].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},_vm._l((_vm.game.playerList[2].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[2].lastSendObj&&!_vm.game.playerList[2].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"40px\",\"right\":\"20px\",\"height\":\"200px\",\"width\":\"100px\",\"border\":\"solid 1px\",\"border-radius\":\"8px\",\"background-color\":\"azure\",\"text-align\":\"center\"}},[_c('p',{staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].type==='nongmin'?'农民':'地主')+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].name)+\" \")]),_c('p',[_vm._v(\" 剩余 \"+_vm._s(_vm.game.playerList[1].pokerList.length)+\" 张 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[1]),expression:\"game.currentPlayer===game.playerList[1]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"right\":\"0\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")])]),(_vm.game.playerList[1].lastSendObj&&_vm.game.playerList[1].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},_vm._l((_vm.game.playerList[1].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[1].lastSendObj&&!_vm.game.playerList[1].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Game.vue?vue&type=template&id=74905788&scoped=true&\"\nimport script from \"./Game.vue?vue&type=script&lang=js&\"\nexport * from \"./Game.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Game.vue?vue&type=style&index=0&id=74905788&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74905788\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=51e9b17b&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\n\nVue.config.productionTip = false;\n\nnew Vue({\n render: h => h(App),\n}).$mount('#app');\n","module.exports = __webpack_public_path__ + \"media/bgm.8035c6a0.mp3\";"],"sourceRoot":""} \ No newline at end of file diff --git a/src/components/Game.vue b/src/components/Game.vue index 1a14e665275666eb388ef1084ca459825324c250..bd4e5dd0213ae2ec6eeadde33cff3f987313461e 100644 --- a/src/components/Game.vue +++ b/src/components/Game.vue @@ -5,17 +5,17 @@ 您的浏览器不支持 audio 元素。 -
- - 手牌:{{player2Str[1]}} - -
+ + + + + -
- - 手牌:{{player1Str[1]}} - -
+ + + + +
@@ -25,11 +25,28 @@
-
- -
+ + + + +
+ +
+ {{game.playerList[0].ready?'已准备':'未准备'}} +
+
+ +
+ + + + + + + +
-
+
你是 {{game.playerList[0].type==='nongmin'?'农民':'地主'}}
@@ -40,7 +57,7 @@
-
+
@@ -64,7 +81,7 @@
-

+

{{game.playerList[2].type==='nongmin'?'农民':'地主'}}

@@ -77,6 +94,9 @@

请在{{game.second}}秒内出牌
+
+ {{game.playerList[2].ready?'已准备':'未准备'}} +
@@ -90,9 +110,14 @@ pass
+
+
+ {{game.playerList[2].jiaoFen}}分 +
+
-

+

{{game.playerList[1].type==='nongmin'?'农民':'地主'}}

@@ -104,6 +129,9 @@

请在{{game.second}}秒内出牌
+
+ {{game.playerList[1].ready?'已准备':'未准备'}} +
@@ -117,6 +145,11 @@ pass
+
+
+ {{game.playerList[1].jiaoFen}}分 +
+
@@ -194,6 +227,12 @@ export default { window.game = this.game; }, methods:{ + + setReady: function() { + let that = this; + that.game.playerList[0].setReady(); + }, + enter: function(e, poker){ if(e.buttons === 1){ this.pickPoker(poker); diff --git a/src/doudizhu/Game.js b/src/doudizhu/Game.js index 06de767ad9b491b2e2196695c96f199610c2efcd..2f87bed5c334104b77ddca2afa0566b67d1edc69 100644 --- a/src/doudizhu/Game.js +++ b/src/doudizhu/Game.js @@ -7,11 +7,13 @@ class Game{ this.pokerList = []; this.deskPokerObj = null; this.oldPokerList = []; - this.currentPlayer = []; + this.currentPlayer = null; + this.currentJiaoFenPlayer = null; + this.jiaoFenCount = 0; this.dizhu = null; this.MaxSecond = 60; this.second = this.MaxSecond; - this.isOver = true; + this.stage = 'ready'; //阶段 ready\jiaoFen\play this.init(); } @@ -19,17 +21,55 @@ class Game{ init(){ this.initPokerList(); this.initPlayerList(); - this.sendPoker(); + } + + setReady(){ + if(this.playerList[0]&&this.playerList[0].ready&&this.playerList[1]&&this.playerList[1].ready&&this.playerList[2]&&this.playerList[2].ready){ + this.sendPoker(); + this.startJiaoFen(); + } + } + + //开始叫分 + startJiaoFen(){ + this.stage = 'jiaoFen'; + let index = this.getRandomIntInclusive(0,2); + this.currentJiaoFenPlayer = this.playerList[index]; + } + + someOneJiaoFen(){ + let that = this; + + this.jiaoFenCount++; + if(this.jiaoFenCount === 3){ + setTimeout(function () { + that.setDiZhu(); + },1000); + return; + }else{ + this.currentJiaoFenPlayer = this.currentJiaoFenPlayer.next; + } + } + + setDiZhu(){ + let sortList = this.playerList.slice(0).sort(this.sortByJiaoFen); + let dizhu = sortList[0]; + dizhu.type = 'dizhu'; + this.dizhu = dizhu; this.start(); } + sortByJiaoFen(a, b){ + return b.jiaoFen - a.jiaoFen; + } + resetTime(){ this.second = this.MaxSecond; } timeLoop(){ - if(this.isOver){ + if(this.stage !== 'play'){ return; } this.second--; @@ -50,7 +90,7 @@ class Game{ start(){ - this.isOver = false; + this.stage = 'play'; this.timeLoop(); this.currentPlayer = this.dizhu; if(this.currentPlayer.isRobot){ @@ -58,6 +98,25 @@ class Game{ } } + reset(){ + + this.playerList[0].reset(); + this.playerList[1].reset(); + this.playerList[2].reset(); + + this.pokerList = []; + this.deskPokerObj = null; + this.oldPokerList = []; + this.currentPlayer = null; + this.currentJiaoFenPlayer = null; + this.jiaoFenCount = 0; + this.dizhu = null; + this.second = this.MaxSecond; + this.stage = 'ready'; + + this.initPokerList(); + } + next(){ let over = this.checkGameOver(); if(over){ @@ -73,7 +132,8 @@ class Game{ gameOver(){ alert('游戏结束! '+this.currentPlayer.name+' ['+this.currentPlayer.type+'] 胜!'); - this.isOver = true; + + this.reset(); } checkGameOver(){ @@ -89,6 +149,15 @@ class Game{ } } + sendDiZhuPoker(){ + do{ + let poker = this.pokerList.splice(0,1)[0]; + this.dizhu.addPoker(poker); + }while(this.pokerList.length>0); + + this.dizhu.sortPoker(); + } + sendPoker(){ let player = this.playerList[0]; do{ @@ -98,11 +167,6 @@ class Game{ player = player.next; }while(this.pokerList.length>3); - do{ - let poker = this.pokerList.splice(0,1)[0]; - this.dizhu.addPoker(poker); - }while(this.pokerList.length>0); - for(let i=0; i