From de8c183e8d0358df965999fad8e096434c686943 Mon Sep 17 00:00:00 2001 From: LCJ <1119884256@qq.com> Date: Mon, 12 Oct 2020 22:56:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=87=86=E5=A4=87?= =?UTF-8?q?=E9=98=B6=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/css/app.7fb6ba30.css | 1 + dist/css/app.8693bba6.css | 1 - dist/index.html | 2 +- dist/js/app.4b39f358.js | 2 ++ dist/js/app.4b39f358.js.map | 1 + dist/js/app.fdd410da.js | 2 -- dist/js/app.fdd410da.js.map | 1 - src/components/Game.vue | 53 +++++++++++++++++++++++++------------ src/doudizhu/Game.js | 42 ++++++++++++++++++++++++----- src/doudizhu/Player.js | 27 +++++++++++++++++++ 10 files changed, 103 insertions(+), 29 deletions(-) create mode 100644 dist/css/app.7fb6ba30.css delete mode 100644 dist/css/app.8693bba6.css create mode 100644 dist/js/app.4b39f358.js create mode 100644 dist/js/app.4b39f358.js.map delete mode 100644 dist/js/app.fdd410da.js delete mode 100644 dist/js/app.fdd410da.js.map diff --git a/dist/css/app.7fb6ba30.css b/dist/css/app.7fb6ba30.css new file mode 100644 index 0000000..a12dc55 --- /dev/null +++ b/dist/css/app.7fb6ba30.css @@ -0,0 +1 @@ +.pokerDesk[data-v-b2f40602]{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-b2f40602]:hover{background-color:#faebd7}.selected[data-v-b2f40602]{margin-top:-20px}.s[data-v-b2f40602]{background-image:url(../img/s.aa339508.jpg)}.x[data-v-b2f40602]{background-image:url(../img/x.aa03af01.png)} \ No newline at end of file diff --git a/dist/css/app.8693bba6.css b/dist/css/app.8693bba6.css deleted file mode 100644 index 27c3ebe..0000000 --- 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/index.html b/dist/index.html index fd99e2e..057dbde 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.4b39f358.js b/dist/js/app.4b39f358.js new file mode 100644 index 0000000..4e22295 --- /dev/null +++ b/dist/js/app.4b39f358.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var i,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[O]):c.push(x[O][0])}if(u.length>0){for(var S=[u[0]],j=[],P=1;P2?b.push(j[_]):m=m.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&&m.length>0){var z=0,A=0;while(1){if(z>v.length-1&&A>m.length-1)break;var M=void 0,R=void 0,D=[],F=[];if(0===v.length||z>v.length-1)break;0===m.length||A>m.length-1||v[z][0].numberv.length-1&&A>m.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 l=0;le.two[0].number){o=t.two[l];break}o&&(i={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&&(i={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&&(i={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&&(i={type:r,poker:f.concat(y),three:f,two:y})}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 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&&(i={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&&(i={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&&(i={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&&(i={type:r,poker:f.concat(y),three:f,two:y})}else if("four"===r){var k;if(t.four.length>0)for(var m=0;me.four[0].number){k=t.four[m];break}k||4===t.poker15.length&&(k=t.poker15),k&&(i={type:r,poker:k,four:k})}else if("fourWithOne"===r){var b,v,d;if(t.four.length>0)for(var L=0;Le.four[0].number){b=t.four[L];break}t.one.length>1&&(v=t.one[0],d=t.one[1]),b&&v&&d&&(i={type:r,poker:b.concat(v).concat(d),four:b})}else if("fourWithTwo"===r){var x,w,O;if(t.four.length>0)for(var S=0;Se.four[0].number){x=t.four[S];break}t.two.length>1&&(w=t.two[0],O=t.two[1]),x&&w&&O&&(i={type:r,poker:x.concat(w).concat(O),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),W=t.two.slice(0,t.threeList[T].length).flat(1);i={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){i={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){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 A=0;Ae.list[0].three[0].number){i={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 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 l;t?n.three.length>0?l=n.three[0]:3===n.poker15.length&&(l=n.poker15):n.three.length>0&&(l=n.three[0]),l&&(s={type:e,poker:l,three:l})}else if("threeWithOne"===e){var a,h;n.three.length>0&&(a=n.three[0]),n.one.length>0&&(h=n.one[0]),t&&(a||3!==n.poker15.length||(a=n.poker15),h||1!==n.poker15.length||(h=n.poker15)),a&&h&&(s={type:e,poker:a.concat(h),three:a,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 f=n.threeList[0].flat(1),y=n.one.slice(0,n.threeList[0].length).flat(1);s={type:e,poker:f.concat(y),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),k=n.two.slice(0,n.threeList[0].length).flat(1);s={type:e,poker:c.concat(k),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 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 m=void 0;if(o.length>0)m=o[0];else if(l.length>0)m=l[0].slice(0,1);else if(a.length>0)for(var b=0;b0)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=[],O=0;O=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=[],R=[],D=0;D=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 I=o.slice(C,C+e.list.length);g={type:u,poker:I.flat(1),list:I.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.ready=!1,this.pokerList=[],this.name=t.name||"noName"+Math.random(),this.type=t.type||"nongmin",this.last=null,this.next=null,this.isRobot=t.isRobot,this.game=t.game,this.ai=new f({player:this,game:t.game}),this.classifyObj=null,this.lastSendObj=null,this.loopRobot()}return Object(h["a"])(e,[{key:"loopRobot",value:function(){var e=this;e.isRobot&&(e.ready||e.setReady()),setTimeout((function(){e.loopRobot()}),2e3)}},{key:"setReady",value:function(){this.ready=!0,this.game.setReady()}},{key:"reset",value:function(){this.ready=!1,this.pokerList=[],this.type="nongmin",this.classifyObj=null,this.lastSendObj=null}},{key:"getClassifyObj",value:function(){this.classifyObj=this.ai.getClassifyObj(this.pokerList),console.log(this.classifyObj)}},{key:"addPoker",value:function(e){this.pokerList.push(e)}},{key:"sortPoker",value:function(){this.pokerList.sort(this.sortFunction)}},{key:"sortFunction",value:function(e,t){return e.number-t.number}},{key:"getLastObj",value:function(){var e=this.last.lastSendObj;return!!(e&&"pass"!==e.type||(e=this.next.lastSendObj,e&&"pass"!==e.type))&&e}},{key:"playByAI",value:function(){var e=this;e.getClassifyObj(),setTimeout((function(){var t=e.getLastObj();t?e.ai.playByObj(t):e.ai.playByAllType()}),1e3)}},{key:"sendPoker",value:function(e){e.player=this,this.game.clearDesk(),this.lastSendObj=e,this.game.deskPokerObj=e,this.game.next()}},{key:"deleteFromPokerListAndSendByObj",value:function(e){var t=[];if("pass"===e.type)return this.sendPoker(e),!0;for(var r=e.poker,i=0;i0){var t=e.splice(0,1)[0];this.pokerList.push(t)}this.sortPoker()}},{key:"handleList",value:function(e){if(e){var t=u.getObjByPokerList(e);if(t){if("pass"===t.type)return this.sendPoker(t),!0;var r=this.getLastObj();if(r){if(r.type===t.type){var i=this.compareTwoObj(t,r);return i?(this.sendPoker(t),!0):(this.listBackToPokerList(e),alert("必须大于 "+u.pokerListToString(r.poker)),!1)}return"sx"===t.type||"four"===t.type&&"sx"!==r.type?(this.sendPoker(t),!0):(this.listBackToPokerList(e),alert("牌型不是 "+r.type+"!"),!1)}return this.sendPoker(t),!0}return this.listBackToPokerList(e),alert("牌型错误!"),!1}return alert("你没有此牌!"),!1}},{key:"playByPokerList",value:function(e){if(this.game.currentPlayer!==this)return alert("请等待 "+this.game.currentPlayer.name+" 出牌"),!1;var t=this.getListByList(e);return this.handleList(t)}},{key:"playByString",value:function(e){if(this.game.currentPlayer!==this)return alert("请等待 "+this.game.currentPlayer.name+" 出牌"),!1;var t=this.getListByString(e);return this.handleList(t)}},{key:"compareTwoObj",value:function(e,t){return(!e.list||!t.list||e.list.length===t.list.length)&&("one"===e.type?e.one[0].number>t.one[0].number:"two"===e.type?e.two[0].number>t.two[0].number:"three"===e.type||"threeWithOne"===e.type||"threeWithTwo"===e.type?e.three[0].number>t.three[0].number:"fourWithOne"===e.type||"fourWithTwo"===e.type?e.four[0].number>t.four[0].number:"threeWithOneList"===e.type||"threeWithTwoList"===e.type?e.list[0].three[0].number>t.list[0].three[0].number:"oneList"===e.type?e.list[0].one[0].number>t.list[0].one[0].number:"twoList"===e.type?e.list[0].two[0].number>t.list[0].two[0].number:"threeList"===e.type?e.list[0].three[0].number>t.list[0].three[0].number:"four"===e.type?e.four[0].number>t.four[0].number:void 0)}},{key:"getAndDeleteOnePokerByNumber",value:function(e){for(var t=0;t3);do{var i=this.pokerList.splice(0,1)[0];this.dizhu.addPoker(i)}while(this.pokerList.length>0);for(var n=0;n=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.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 this.loopRobot();\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\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.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; 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\":\"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.isOver),expression:\"game.isOver\"}],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.isOver),expression:\"!game.isOver\"}],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.isOver),expression:\"!game.isOver\"}],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.isOver),expression:\"game.isOver\"}],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(),_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.isOver),expression:\"!game.isOver\"}],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.isOver),expression:\"game.isOver\"}],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()])}\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=b2f40602&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=b2f40602&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 \"b2f40602\",\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\";","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=b2f40602&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=b2f40602&scoped=true&lang=css&\""],"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 bc199c7..0000000 --- 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 1a14e66..6d316e5 100644 --- a/src/components/Game.vue +++ b/src/components/Game.vue @@ -5,17 +5,17 @@ 您的浏览器不支持 audio 元素。 -
- - 手牌:{{player2Str[1]}} - -
+ + + + + -
- - 手牌:{{player1Str[1]}} - -
+ + + + +
@@ -25,11 +25,18 @@
-
- -
+ + + + +
+ +
+ {{game.playerList[0].ready?'已准备':'未准备'}} +
+
-
+
你是 {{game.playerList[0].type==='nongmin'?'农民':'地主'}}
@@ -40,7 +47,7 @@
-
+
@@ -64,7 +71,7 @@
-

+

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

@@ -77,6 +84,9 @@

请在{{game.second}}秒内出牌
+
+ {{game.playerList[2].ready?'已准备':'未准备'}} +
@@ -92,7 +102,7 @@
-

+

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

@@ -104,6 +114,9 @@

请在{{game.second}}秒内出牌
+
+ {{game.playerList[1].ready?'已准备':'未准备'}} +
@@ -194,6 +207,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 06de767..e5eca9e 100644 --- a/src/doudizhu/Game.js +++ b/src/doudizhu/Game.js @@ -19,9 +19,12 @@ class Game{ init(){ this.initPokerList(); this.initPlayerList(); - this.sendPoker(); + } - this.start(); + setReady(){ + if(this.playerList[0]&&this.playerList[0].ready&&this.playerList[1]&&this.playerList[1].ready&&this.playerList[2]&&this.playerList[2].ready){ + this.start(); + } } resetTime(){ @@ -50,6 +53,9 @@ class Game{ start(){ + this.setDiZhu(); + this.sendPoker(); + this.isOver = false; this.timeLoop(); this.currentPlayer = this.dizhu; @@ -58,6 +64,29 @@ class Game{ } } + setDiZhu(){ + let dizhuIndex = this.getRandomIntInclusive(0,2); + this.playerList[dizhuIndex].type = 'dizhu'; + this.dizhu = this.playerList[dizhuIndex]; + } + + reset(){ + + this.playerList[0].reset(); + this.playerList[1].reset(); + this.playerList[2].reset(); + + this.pokerList = []; + this.deskPokerObj = null; + this.oldPokerList = []; + this.currentPlayer = null; + this.dizhu = null; + this.second = this.MaxSecond; + this.isOver = true; + + this.initPokerList(); + } + next(){ let over = this.checkGameOver(); if(over){ @@ -74,6 +103,8 @@ class Game{ gameOver(){ alert('游戏结束! '+this.currentPlayer.name+' ['+this.currentPlayer.type+'] 胜!'); this.isOver = true; + + this.reset(); } checkGameOver(){ @@ -116,12 +147,12 @@ class Game{ game: this, }); let player1 = new Player({ - name: 'robot1', + name: '机器人1', isRobot: true, game: this, }); let player2 = new Player({ - name: 'robot2', + name: '机器人2', isRobot: true, game: this, }); @@ -134,9 +165,6 @@ class Game{ this.playerList[1].last = this.playerList[0]; this.playerList[2].last = this.playerList[1]; - let dizhuIndex = this.getRandomIntInclusive(0,2); - this.playerList[dizhuIndex].type = 'dizhu'; - this.dizhu = this.playerList[dizhuIndex]; } initPokerList(){ diff --git a/src/doudizhu/Player.js b/src/doudizhu/Player.js index 2a33ef4..e04a5a2 100644 --- a/src/doudizhu/Player.js +++ b/src/doudizhu/Player.js @@ -4,6 +4,7 @@ import AI from "./AI"; class Player{ constructor(param) { param = param || {}; + this.ready = false; //已准备 this.pokerList = []; this.name = param.name || 'noName'+Math.random(); this.type = param.type || 'nongmin'; @@ -16,7 +17,33 @@ class Player{ game: param.game, }); this.classifyObj = null; + this.lastSendObj = null; + this.loopRobot(); + } + + loopRobot(){ + let that = this; + if(that.isRobot){ + if(!that.ready){ + that.setReady(); + } + } + setTimeout(function(){ + that.loopRobot(); + },2000); + } + + setReady(){ + this.ready = true; + this.game.setReady(); + } + + reset(){ + this.ready = false; + this.pokerList = []; + this.type = 'nongmin'; + this.classifyObj = null; this.lastSendObj = null; } -- GitLab