提交 df7b3a70 编写于 作者: 微笑面对bug's avatar 微笑面对bug

新增 叫分阶段(待完善)

上级 de8c183e
.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
.pokerDesk[data-v-7bd525ec]{height:100%;width:100px;border:1px solid;border-radius:16px;float:left;margin-left:-50px;background-color:azure;font-size:30px;background-repeat:no-repeat;background-size:cover}.poker[data-v-7bd525ec]:hover{background-color:#faebd7}.selected[data-v-7bd525ec]{margin-top:-20px}.s[data-v-7bd525ec]{background-image:url(../img/s.aa339508.jpg)}.x[data-v-7bd525ec]{background-image:url(../img/x.aa03af01.png)}
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Vue App</title><link href=css/app.7fb6ba30.css rel=preload as=style><link href=js/app.4b39f358.js rel=preload as=script><link href=js/chunk-vendors.caf18475.js rel=preload as=script><link href=css/app.7fb6ba30.css rel=stylesheet></head><body><div id=app></div><script src=js/chunk-vendors.caf18475.js></script><script src=js/app.4b39f358.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Vue App</title><link href=css/app.ad699e7c.css rel=preload as=style><link href=js/app.92687945.js rel=preload as=script><link href=js/chunk-vendors.caf18475.js rel=preload as=script><link href=css/app.ad699e7c.css rel=stylesheet></head><body><div id=app></div><script src=js/chunk-vendors.caf18475.js></script><script src=js/app.92687945.js></script></body></html>
\ No newline at end of file
(function(e){function t(t){for(var i,o,l=t[0],a=t[1],h=t[2],u=0,g=[];u<l.length;u++)o=l[u],Object.prototype.hasOwnProperty.call(n,o)&&n[o]&&g.push(n[o][0]),n[o]=0;for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);p&&p(t);while(g.length)g.shift()();return s.push.apply(s,h||[]),r()}function r(){for(var e,t=0;t<s.length;t++){for(var r=s[t],i=!0,l=1;l<r.length;l++){var a=r[l];0!==n[a]&&(i=!1)}i&&(s.splice(t--,1),e=o(o.s=r[0]))}return e}var i={},n={app:0},s=[];function o(t){if(i[t])return i[t].exports;var r=i[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.m=e,o.c=i,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(r,i,function(t){return e[t]}.bind(null,i));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="";var l=window["webpackJsonp"]=window["webpackJsonp"]||[],a=l.push.bind(l);l.push=t,l=l.slice();for(var h=0;h<l.length;h++)t(l[h]);var p=a;s.push([0,"chunk-vendors"]),r()})({0:function(e,t,r){e.exports=r("56d7")},"00a8":function(e,t,r){e.exports=r.p+"img/scene.02780059.jpg"},"56d7":function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var i=r("2b0e"),n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"app"}},[r("Game")],1)},s=[],o=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"0px",top:"0px","background-color":"aliceblue","text-align":"center"}},[r("span",[e._v(" "+e._s(e.player2Str[0])+" "),r("br"),e._v(" "+e._s(e.player2Str[1])+" "),r("br"),r("br"),e._v(" "+e._s(e.player2Str[2])+" ")])]),r("div",{staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"600px",top:"0px","background-color":"aliceblue","text-align":"center"}},[r("span",[e._v(" "+e._s(e.player1Str[0])+" "),r("br"),e._v(" "+e._s(e.player1Str[1])+" "),r("br"),r("br"),e._v(" "+e._s(e.player1Str[2])+" ")])]),r("div",{staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"300px",top:"300px","background-color":"aliceblue","text-align":"center"}},[r("span",[e._v(" "+e._s(e.player0Str[0])+" "),r("br"),e._v(" "+e._s(e.player0Str[1])+" "),r("br"),r("br"),e._v(" "+e._s(e.player0Str[2])+" ")]),r("div",[r("input",{directives:[{name:"model",rawName:"v-model",value:e.playerStr,expression:"playerStr"}],attrs:{type:"text"},domProps:{value:e.playerStr},on:{input:function(t){t.target.composing||(e.playerStr=t.target.value)}}}),r("button",{on:{click:e.sendPoker}},[e._v("send")]),r("button",{on:{click:e.pass}},[e._v("pass")])])]),r("div",{staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"300px",top:"0px","background-color":"aliceblue","text-align":"center"}},[r("div",{staticStyle:{width:"300px","word-wrap":"break-word"}},[e._v(" "+e._s(e.deskStr[0])+" "),r("br"),e._v(" "+e._s(e.deskStr[1])+" ")])]),r("div",{staticStyle:{position:"fixed",left:"300px",top:"600px"}},[r("button",{on:{click:e.reStart}},[e._v("reStart")])])])},l=[],a=(r("b0c0"),r("a434"),r("d4ec")),h=r("bee2"),p=(r("d81d"),r("d3b7"),r("25f0"),function(){function e(t){Object(a["a"])(this,e),t.text?(this.text=t.text,this.number=e.textToNumber(t.text)):(this.number=t.number,this.text=e.numberToText(t.number)),this.type=t.type,this.selected=t.selected}return Object(h["a"])(e,[{key:"toString",value:function(){return this.text}}],[{key:"textToNumber",value:function(e){switch(e){case"3":return 3;case"4":return 4;case"5":return 5;case"6":return 6;case"7":return 7;case"8":return 8;case"9":return 9;case"10":case"0":case"T":case"t":return 10;case"11":case"j":case"J":return 11;case"12":case"q":case"Q":return 12;case"13":case"k":case"K":return 13;case"1":case"a":case"A":return 14;case"2":return 15;case"s":case"S":return 16;case"x":case"X":return 17}}},{key:"numberToText",value:function(e){switch(e){case 3:return"3";case 4:return"4";case 5:return"5";case 6:return"6";case 7:return"7";case 8:return"8";case 9:return"9";case 10:return"10";case 11:return"J";case 12:return"Q";case 13:return"K";case 14:return"A";case 15:return"2";case 16:return"S";case 17:return"X"}}},{key:"sortFunction",value:function(e,t){return e.number-t.number}},{key:"getObjByPokerList",value:function(t){if("pass"===t[0])return{type:"pass",poker:t};t.sort(e.sortFunction);for(var r=t[0],i=[r],n=[],s=1;s<t.length;s++)t[s].number!==r.number?(n.push(i),i=[t[s]]):i.push(t[s]),r=t[s];n.push(i);for(var o=[],l=[],a=[],h=[],p=0;p<n.length;p++)3===n[p].length?a.push(n[p]):2===n[p].length?l.push(n[p]):1===n[p].length?o.push(n[p]):4===n[p].length&&h.push(n[p]);if(1===t.length)return{type:"one",poker:t,one:t};if(2===t.length){if(1===l.length)return{type:"two",poker:t,two:t};if(16===t[0].number&&17===t[1].number)return{type:"sx",poker:t,sx:t}}else if(3===t.length){if(1===a.length)return{type:"three",poker:t,three:t}}else if(4===t.length){if(1===a.length)return{type:"threeWithOne",poker:t,three:a[0],one:o[0]};if(1===h.length)return{type:"four",poker:t,four:t}}else if(5===t.length){if(1===a.length&&1===l.length)return{type:"threeWithTwo",poker:t,three:a[0],two:l[0]}}else if(6===t.length){if(1===h.length&&2===o.length)return{type:"fourWithOne",poker:t,four:h[0]}}else if(8===t.length&&1===h.length&&2===l.length)return{type:"fourWithTwo",poker:t,four:h[0]};if(a.length>=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;r<e.length;r++){var i=e[r].toString();t+=i}return t}}]),e}()),u=p,g=(r("99af"),r("0481"),r("fb6a"),r("4069"),function(){function e(t){Object(a["a"])(this,e),t=t||{},this.player=t.player,this.game=t.game}return Object(h["a"])(e,[{key:"classify",value:function(e){if(e.sort(this.sortFunction),0===e.length)return{1:[],2:[],3:[],4:[]};for(var t=e[0],r=[t],i=[],n=1;n<e.length;n++)e[n].number!==t.number?(i.push(r),r=[e[n]]):r.push(e[n]),t=e[n];i.push(r);for(var s=[],o=[],l=[],a=[],h=0;h<i.length;h++)3===i[h].length?l.push(i[h]):2===i[h].length?o.push(i[h]):1===i[h].length?s.push(i[h]):4===i[h].length&&a.push(i[h]);return{1:s,2:o,3:l,4:a}}},{key:"getClassifyObj",value:function(e){for(var t=[],r=[],i=[],n=e.slice(0),s=0;s<n.length;s++)if(15===n[s].number){var o=n.splice(s,1);s--,t.push(o[0])}else if(16===n[s].number){var l=n.splice(s,1);s--,r.push(l[0])}else if(17===n[s].number){var a=n.splice(s,1);s--,i.push(a[0])}var h=this.classify(n),p=h[1],u=h[2],g=h[3],f=h[4],y=f,c=[],k=[],m=[],b=[],v=[],d=[];if(g.length>0){for(var L=[g[0]],x=[],w=1;w<g.length;w++)g[w][0].number!==g[w-1][0].number+1?(x.push(L),L=[g[w]]):L.push(g[w]);x.push(L);for(var O=0;O<x.length;O++)x[O].length>1?k.push(x[O]):c.push(x[O][0])}if(u.length>0){for(var S=[u[0]],j=[],P=1;P<u.length;P++)u[P][0].number!==u[P-1][0].number+1?(j.push(S),S=[u[P]]):S.push(u[P]);j.push(S);for(var _=0;_<j.length;_++)j[_].length>2?b.push(j[_]):m=m.concat(j[_])}if(p.length>0){for(var T=[p[0]],B=[],W=1;W<p.length;W++)p[W][0].number!==p[W-1][0].number+1?(B.push(T),T=[p[W]]):T.push(p[W]);B.push(T);for(var N=0;N<B.length;N++)B[N].length>4?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].number<m[A][0].number?(M=v[z][0].number,D.push(v[z]),z++):(M=m[A][0].number,F.push(m[A]),A++),R=M;do{if(z>v.length-1&&A>m.length-1)break;if(z<v.length&&v[z][0].number===R+1)D.push(v[z]),z++;else{if(!(A<m.length&&m[A][0].number===R+1))break;F.push(m[A]),A++}if(R+=1,R===M+4&&F.length<4){for(var C=[],I=0;I<D.length;I++){C.push(D[I]);for(var G=0;G<v.length;G++)if(v[G]===D[I]){v.splice(G,1);break}}for(var J=0;J<F.length;J++){for(var $=F[J],E=0;E<m.length;E++)if(m[E]===$){m.splice(E,1);break}var H=$.splice(0,1);C.push(H),v.push($)}C.sort(this.sortArray),d.push(C),v.sort(this.sortArray),z=0,A=0;break}}while(1)}}for(var K=0;K<v.length;K++){for(var Q=!1,X=0;X<d.length;X++){if(v[K][0].number===d[X][0][0].number-1){d[X].unshift(v[K]),Q=!0;break}if(v[K][0].number===d[X][d[X].length-1][0].number+1){d[X].push(v[K]),Q=!0;break}}Q&&(v.splice(K,1),K--)}d.sort(this.sortList);for(var Z=1;Z<d.length;Z++)d[Z][0][0].number===d[Z-1][d[Z-1].length-1][0].number+1&&(d[Z-1]=d[Z-1].concat(d[Z]),d.splice(Z,1),Z--);return{four:y,three:c,threeList:k,two:m,twoList:b,one:v,oneList:d,poker15:t,poker16:r,poker17:i}}},{key:"getByObj1",value:function(e){var t;return t=this.getSmallestObjByObj(e),t||(t=this.getByBoom(e)),t}},{key:"getByObj2",value:function(e){var t;return t=this.getByObj1(e),t||(t=this.getBySplit(e)),t}},{key:"getByObj3",value:function(e){var t;return t=this.getSmallestObjNoBig(e),t}},{key:"getByObj4",value:function(e){var t;return t="one"===e.type?this.getByObj5(e):this.getByObj2(e),t}},{key:"getByBoom",value:function(e){var t,r,i=this.player.classifyObj;if("sx"===e.type)return null;if(i.four.length>0)if("four"===e.type){for(var n=0;n<i.four.length;n++)if(i.four[n][0].number>e.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;i<r.length;i++)for(var n=0;n<r[i].poker.length;n++)t[r[i].poker[n].number]++;for(var s=this.game.deskPokerObj,o=0;o<s.poker.length;o++)t[s.poker[o].number]++;for(var l=this.player.pokerList,a=0;a<l.length;a++)t[l[a].number]++;var h=e.one[0].number;if(16===h){if(1!==t[17])return!1}else if(15===h){if(1!==t[16]||1!==t[17])return!1}else for(var p=h+1;p<=15;p++)if(4!==t[p])return!1;return!0}},{key:"playByTypys1",value:function(){for(var e=["threeWithTwoList","threeWithOneList","threeList","twoList","oneList","threeWithTwo","threeWithOne","three","two","one","four","sx"],t=0;t<e.length;t++){var r=this.getSmallestObjByType(e[t]);if(r){this.player.deleteFromPokerListAndSendByObj(r);break}}}},{key:"playByTypys2",value:function(){for(var e=["threeWithTwoList","threeWithOneList","threeList","twoList","oneList","threeWithTwo","threeWithOne","three","two","four","sx","one"],t=0;t<e.length;t++){var r=this.getSmallestObjByType(e[t],!0);if(r){this.player.deleteFromPokerListAndSendByObj(r);break}}}},{key:"playSmallestOne",value:function(){var e={type:"one",poker:[this.player.pokerList[0]],one:[this.player.pokerList[0]]};this.player.deleteFromPokerListAndSendByObj(e)}},{key:"playByAllType",value:function(){"dizhu"===this.player.type?1===this.player.next.pokerList.length||1===this.player.last.pokerList.length?this.playByTypys2():this.playByTypys1():"nongmin"===this.player.next.type?1===this.player.next.pokerList.length?this.playSmallestOne():this.playByTypys1():1===this.player.next.pokerList.length?this.playByTypys2():this.playByTypys1()}},{key:"getSmallestObjNoBig",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;s<t.one.length;s++)if(t.one[s][0].number>e.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;l<t.two.length;l++)if(t.two[l][0].number>e.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;h<t.three.length;h++)if(t.three[h][0].number>e.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;g<t.three.length;g++)if(t.three[g][0].number>e.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;c<t.three.length;c++)if(t.three[c][0].number>e.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;s<t.one.length;s++)if(t.one[s][0].number>e.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;l<t.two.length;l++)if(t.two[l][0].number>e.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;h<t.three.length;h++)if(t.three[h][0].number>e.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;g<t.three.length;g++)if(t.three[g][0].number>e.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;c<t.three.length;c++)if(t.three[c][0].number>e.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;m<t.four.length;m++)if(t.four[m][0].number>e.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;L<t.four.length;L++)if(t.four[L][0].number>e.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;S<t.four.length;S++)if(t.four[S][0].number>e.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;j<t.threeList.length;j++)if(t.threeList[j].length===e.list.length&&t.threeList[j][0][0].number>e.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;T<t.threeList.length;T++)if(t.threeList[T].length===e.list.length&&t.threeList[T][0][0].number>e.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;N<t.oneList.length;N++)if(t.oneList[N].length===e.list.length&&t.oneList[N][0][0].number>e.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;z<t.twoList.length;z++)if(t.twoList[z].length===e.list.length&&t.twoList[z][0][0].number>e.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;A<t.threeList.length;A++)if(t.threeList[A].length===e.list.length&&t.threeList[A][0][0].number>e.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;s<t.length;s++)t[s].number!==r.number?(n.push(i),i=[t[s]]):i.push(t[s]),r=t[s];n.push(i);for(var o=[],l=[],a=[],h=[],p=0;p<n.length;p++)3===n[p].length?a.push(n[p]):2===n[p].length?l.push(n[p]):1===n[p].length?o.push(n[p]):4===n[p].length&&h.push(n[p]);var u=e.type,g=null;if("two"===u){if(l.length>0){for(var f=0;f<l.length;f++)if(l[f][0].number>e.two[0].number){g={type:u,poker:l[f],two:l[f]};break}}else if(a.length>0)for(var y=0;y<a.length;y++)if(a[y][0].number>e.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;k<a.length;k++)if(a[k][0].number>e.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;b<a.length;b++)b!==k&&(m=a[b].slice(0,1));m&&(g={type:u,poker:a[k].concat(m),three:a[k],one:m});break}}else if("threeWithTwo"===u){if(a.length>0)for(var v=0;v<a.length;v++)if(a[v][0].number>e.three[0].number){var d=void 0;if(l.length>0)d=l[0];else if(a.length>0)for(var L=0;L<a.length;L++)L!==v&&(d=a[L].slice(0,2));d&&(g={type:u,poker:a[v].concat(d),three:a[v],two:d});break}}else if("threeWithOneList"===u){if(a.length>=e.list.length)for(var x=0;x<a.length-e.list.length+1;x++)if(a[x][0].number>e.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<o.length&&w.length<e.list.length;O++)w.push(o[O]);for(var S=0;S<l.length&&w.length<e.list.length;S++)w.push(l[S].slice(0,1)),w.length<e.list.length&&w.push(l[S].slice(1,2));for(var j=0;j<a.length&&w.length<e.list.length;j++)j>=x&&j<=x+e.list.length-1||(w.push(a[j].slice(0,1)),w.length<e.list.length&&w.push(a[j].slice(1,2)),w.length<e.list.length&&w.push(a[j].slice(2,3)));if(w.length===e.list.length){for(var P=[],_=[],T=0;T<e.list.length;T++){P=P.concat(a[x+T]),P=P.concat(w[x]);var B={three:a[x+T],one:w[x]};_.push(B)}g={type:u,poker:P,list:_}}break}}else if("threeWithTwoList"===u){if(a.length>=e.list.length)for(var W=0;W<a.length-e.list.length+1;W++)if(a[W][0].number>e.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<l.length&&N.length<e.list.length;z++)N.push(l);for(var A=0;A<a.length&&N.length<e.list.length;A++)A>=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;D++){M=M.concat(a[W+D]),M=M.concat(N[W]);var F={three:a[W+D],two:N[W]};R.push(F)}g={type:u,poker:M,list:R}}break}}else if("oneList"===u){if(o.length>=e.list.length)for(var C=0;C<o.length-e.list.length+1;C++)if(o[C][0].number>e.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;G<l.length-e.list.length+1;G++)if(l[G][0].number>e.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;$<a.length-e.list.length+1;$++)if(a[$][0].number>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;i<r.length;i++){var n=this.getAndDeleteOnePokerByNumber(r[i].number);if(!n)return this.listBackToPokerList(t),!1;t.push(n)}return this.sendPoker(e),!0}},{key:"getListByList",value:function(e){var t=[];if("pass"===e[0])return["pass"];for(var r=0;r<e.length;r++){var i=e[r],n=this.getAndDeleteOnePokerByNumber(i.number);if(!n)return this.listBackToPokerList(t),!1;t.push(n)}return t}},{key:"getListByString",value:function(e){var t=[];if("pass"===e)return["pass"];for(var r=0;r<e.length;r++){var i=e[r],n=u.textToNumber(i),s=this.getAndDeleteOnePokerByNumber(n);if(!s)return this.listBackToPokerList(t),!1;t.push(s)}return t}},{key:"listBackToPokerList",value:function(e){while(e.length>0){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;t<this.pokerList.length;t++)if(this.pokerList[t].number===e)return this.pokerList.splice(t,1)[0];return!1}},{key:"pokerListToString",value:function(){var e=u.pokerListToString(this.pokerList);return e}},{key:"lastSendObjToString",value:function(){if(!this.lastSendObj)return"";var e=u.pokerListToString(this.lastSendObj.poker);return e}}]),e}(),c=y,k=function(){function e(){Object(a["a"])(this,e),this.playerList=[],this.pokerList=[],this.deskPokerObj=null,this.oldPokerList=[],this.currentPlayer=[],this.dizhu=null,this.MaxSecond=60,this.second=this.MaxSecond,this.isOver=!0,this.init()}return Object(h["a"])(e,[{key:"init",value:function(){this.initPokerList(),this.initPlayerList()}},{key:"setReady",value:function(){this.playerList[0]&&this.playerList[0].ready&&this.playerList[1]&&this.playerList[1].ready&&this.playerList[2]&&this.playerList[2].ready&&this.start()}},{key:"resetTime",value:function(){this.second=this.MaxSecond}},{key:"timeLoop",value:function(){if(!this.isOver){this.second--,0===this.second&&this.timeout();var e=this;setTimeout((function(){e.timeLoop()}),1e3)}}},{key:"timeout",value:function(){this.currentPlayer.playByString("pass")}},{key:"start",value:function(){this.setDiZhu(),this.sendPoker(),this.isOver=!1,this.timeLoop(),this.currentPlayer=this.dizhu,this.currentPlayer.isRobot&&this.currentPlayer.playByAI()}},{key:"setDiZhu",value:function(){var e=this.getRandomIntInclusive(0,2);this.playerList[e].type="dizhu",this.dizhu=this.playerList[e]}},{key:"reset",value:function(){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=!0,this.initPokerList()}},{key:"next",value:function(){var e=this.checkGameOver();e?this.gameOver():(this.resetTime(),this.currentPlayer=this.currentPlayer.next,this.currentPlayer.isRobot&&this.currentPlayer.playByAI())}},{key:"gameOver",value:function(){alert("游戏结束! "+this.currentPlayer.name+" ["+this.currentPlayer.type+"] 胜!"),this.isOver=!0,this.reset()}},{key:"checkGameOver",value:function(){if(0===this.currentPlayer.pokerList.length)return!0}},{key:"clearDesk",value:function(){this.deskPokerObj&&(this.oldPokerList.push(this.deskPokerObj),this.deskPokerObj=null)}},{key:"sendPoker",value:function(){var e=this.playerList[0];do{var t=this.getRandomIntInclusive(0,this.pokerList.length-1),r=this.pokerList.splice(t,1)[0];e.addPoker(r),e=e.next}while(this.pokerList.length>3);do{var i=this.pokerList.splice(0,1)[0];this.dizhu.addPoker(i)}while(this.pokerList.length>0);for(var n=0;n<this.playerList.length;n++)this.playerList[n].sortPoker()}},{key:"initPlayerList",value:function(){this.playerList=[];var e=new c({name:"player",isRobot:!1,game:this}),t=new c({name:"机器人1",isRobot:!0,game:this}),r=new c({name:"机器人2",isRobot:!0,game:this});this.playerList=[e,t,r],this.playerList[0].next=this.playerList[1],this.playerList[1].next=this.playerList[2],this.playerList[2].next=this.playerList[0],this.playerList[0].last=this.playerList[2],this.playerList[1].last=this.playerList[0],this.playerList[2].last=this.playerList[1]}},{key:"initPokerList",value:function(){this.pokerList=[];for(var e=3;e<=15;e++)for(var t=0;t<4;t++){var r=new u({number:e,type:t});this.pokerList.push(r)}for(var i=16;i<=17;i++){var n=new u({number:i});this.pokerList.push(n)}}},{key:"pokerListToString",value:function(){var e="";e+=u.pokerListToString(this.pokerList),e+="\n";for(var t=0;t<this.oldPokerList.length;t++)e+=u.pokerListToString(this.oldPokerList[t].poker),t<this.oldPokerList.length-1&&(e+=",");return e+="\n",e+=this.deskPokerObj?u.pokerListToString(this.deskPokerObj.poker):"",e}},{key:"getRandomIntInclusive",value:function(e,t){return Math.floor(Math.random()*(t-e+1))+e}}]),e}(),m=k,b={name:"HelloWorld",data:function(){return{data:"fuck1",game:new m,playerStr:""}},computed:{player2Str:function(){var e=this.game,t=2;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),"last : "+e.playerList[t].lastSendObjToString()]},player1Str:function(){var e=this.game,t=1;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),"last : "+e.playerList[t].lastSendObjToString()]},player0Str:function(){var e=this.game,t=0;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),"last : "+e.playerList[t].lastSendObjToString()]},deskStr:function(){var e=this.game;return["desk",e.pokerListToString()]}},mounted:function(){this.data=this.game.playerList[1].name},methods:{reDraw:function(){},sendPoker:function(){var e=this.game,t=e.playerList[0].playByString(this.playerStr);t&&(this.playerStr="")},pass:function(){this.game.playerList[0].playByString("pass")},reStart:function(){this.game=new m,this.playerStr=""}}},v=b,d=r("2877"),L=Object(d["a"])(v,o,l,!1,null,"62298b0c",null),x=L.exports,w=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("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("+r("00a8")+")"}},[i("audio",{style:{marginLeft:e.buttonMarginLeft+"px"},attrs:{muted:"",autoplay:"",loop:"",controls:""}},[i("source",{attrs:{src:r("e791")}}),e._v(" 您的浏览器不支持 audio 元素。 ")]),i("div",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}],staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"600px",top:"0px","background-color":"aliceblue","text-align":"center"}},[i("div",{staticStyle:{width:"300px","word-wrap":"break-word"}},[e._v(" 已出的牌: "),i("br"),e._v(" "+e._s(e.deskStr[1])+" ")])]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.isOver,expression:"game.isOver"}],staticStyle:{"font-size":"20px",color:"white",position:"fixed",bottom:"200px","z-index":"999"},style:{marginLeft:e.playerMarginLeft-40+"px"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:!e.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:e.setReady}},[e._v(e._s(e.game.playerList[0].ready?"已准备":"准备"))]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.playerList[0].ready,expression:"game.playerList[0].ready"}],staticStyle:{color:"red",width:"80px",border:"solid","border-radius":"4px",position:"absolute"}},[e._v(" "+e._s(e.game.playerList[0].ready?"已准备":"未准备")+" ")])]),i("div",{directives:[{name:"show",rawName:"v-show",value:!e.game.isOver,expression:"!game.isOver"}],staticStyle:{color:"white",position:"fixed",bottom:"0",width:"100%",height:"200px","line-height":"200px"},style:{marginLeft:e.playerMarginLeft-150+"px"}},[e._v(" 你是 "),i("span",{staticStyle:{color:"red","font-size":"20px"}},[e._v(e._s("nongmin"===e.game.playerList[0].type?"农民":"地主"))])]),i("div",{staticStyle:{position:"fixed",bottom:"0",width:"100%",height:"200px"},style:{marginLeft:e.playerMarginLeft+"px"}},e._l(e.game.playerList[0].pokerList,(function(t){return i("div",{staticClass:"poker pokerDesk",class:{selected:t.selected,s:16===t.number,x:17===t.number},on:{mouseenter:function(r){return e.enter(r,t)},mousedown:function(r){return e.pickPoker(t)}}},[i("span",{directives:[{name:"show",rawName:"v-show",value:t.number<16,expression:"item.number<16"}]},[e._v(" "+e._s(t.text)+" ")])])})),0),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.currentPlayer===e.game.playerList[0],expression:"game.currentPlayer===game.playerList[0]"}],staticStyle:{position:"fixed",bottom:"200px",width:"100%",height:"100px","text-align":"left"}},[i("div",{staticStyle:{width:"400px",height:"60px"},style:{marginLeft:e.buttonMarginLeft+"px"}},[i("button",{staticStyle:{height:"60px","border-radius":"4px",float:"left","font-size":"40px","background-color":"red"},on:{click:e.pass}},[e._v("不出")]),i("button",{staticStyle:{height:"60px","border-radius":"4px",float:"right","font-size":"40px","background-color":"lawngreen"},on:{click:e.sendPoker2}},[e._v("出牌")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.currentPlayer===e.game.playerList[0],expression:"game.currentPlayer===game.playerList[0]"}],staticStyle:{color:"red",width:"150px",border:"solid","border-radius":"4px",float:"left","margin-left":"20px"}},[e._v(" 请在"+e._s(e.game.second)+"秒内出牌 ")])])]),e.game.playerList[0].lastSendObj&&e.game.playerList[0].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",bottom:"350px",width:"100%",height:"200px"},style:{marginLeft:e.deskPokerMarginLeft+"px"}},e._l(e.game.playerList[0].lastSendObj.poker,(function(t){return i("div",{staticClass:"pokerDesk",class:{s:16===t.number,x:17===t.number}},[i("span",{directives:[{name:"show",rawName:"v-show",value:t.number<16,expression:"item.number<16"}]},[e._v(" "+e._s(t.text)+" ")])])})),0):e._e(),e.game.playerList[0].lastSendObj&&!e.game.playerList[0].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",bottom:"350px",width:"100%",height:"200px"},style:{marginLeft:e.deskPokerMarginLeft+"px"}},[i("div",{staticStyle:{height:"100%",width:"100px",float:"left","margin-left":"-50px","font-size":"50px",color:"#ff0000"}},[e._v(" pass ")])]):e._e(),i("div",{staticStyle:{position:"fixed",top:"40px",left:"20px",height:"200px",width:"100px",border:"solid 1px","border-radius":"8px","background-color":"azure","text-align":"center"}},[i("p",{directives:[{name:"show",rawName:"v-show",value:!e.game.isOver,expression:"!game.isOver"}],staticStyle:{color:"red","font-size":"20px"}},[e._v(" "+e._s("nongmin"===e.game.playerList[2].type?"农民":"地主")+" ")]),i("p",[e._v(" "+e._s(e.game.playerList[2].name)+" ")]),i("p",[e._v(" 剩余 "+e._s(e.game.playerList[2].pokerList.length)+"")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.currentPlayer===e.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"}},[e._v(" 请在"+e._s(e.game.second)+"秒内出牌 ")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.isOver,expression:"game.isOver"}],staticStyle:{color:"red",width:"80px",border:"solid","border-radius":"4px",position:"absolute",bottom:"-50px",left:"0","z-index":"999"}},[e._v(" "+e._s(e.game.playerList[2].ready?"已准备":"未准备")+" ")])]),e.game.playerList[2].lastSendObj&&e.game.playerList[2].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",top:"100px",left:"200px",height:"200px"}},e._l(e.game.playerList[2].lastSendObj.poker,(function(t){return i("div",{staticClass:"pokerDesk",class:{s:16===t.number,x:17===t.number}},[i("span",{directives:[{name:"show",rawName:"v-show",value:t.number<16,expression:"item.number<16"}]},[e._v(" "+e._s(t.text)+" ")])])})),0):e._e(),e.game.playerList[2].lastSendObj&&!e.game.playerList[2].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",top:"100px",left:"200px",height:"200px"}},[i("div",{staticStyle:{height:"100%",width:"100px",float:"left","margin-left":"-50px","font-size":"50px",color:"#ff0000"}},[e._v(" pass ")])]):e._e(),i("div",{staticStyle:{position:"fixed",top:"40px",right:"20px",height:"200px",width:"100px",border:"solid 1px","border-radius":"8px","background-color":"azure","text-align":"center"}},[i("p",{directives:[{name:"show",rawName:"v-show",value:!e.game.isOver,expression:"!game.isOver"}],staticStyle:{color:"red","font-size":"20px"}},[e._v(" "+e._s("nongmin"===e.game.playerList[1].type?"农民":"地主")+" ")]),i("p",[e._v(" "+e._s(e.game.playerList[1].name)+" ")]),i("p",[e._v(" 剩余 "+e._s(e.game.playerList[1].pokerList.length)+"")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.currentPlayer===e.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"}},[e._v(" 请在"+e._s(e.game.second)+"秒内出牌 ")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.isOver,expression:"game.isOver"}],staticStyle:{color:"red",width:"80px",border:"solid","border-radius":"4px",position:"absolute",bottom:"-50px",right:"0","z-index":"999"}},[e._v(" "+e._s(e.game.playerList[1].ready?"已准备":"未准备")+" ")])]),e.game.playerList[1].lastSendObj&&e.game.playerList[1].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",top:"100px",right:"200px",height:"200px"}},e._l(e.game.playerList[1].lastSendObj.poker,(function(t){return i("div",{staticClass:"pokerDesk",class:{s:16===t.number,x:17===t.number}},[i("span",{directives:[{name:"show",rawName:"v-show",value:t.number<16,expression:"item.number<16"}]},[e._v(" "+e._s(t.text)+" ")])])})),0):e._e(),e.game.playerList[1].lastSendObj&&!e.game.playerList[1].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",top:"100px",right:"200px",height:"200px"}},[i("div",{staticStyle:{height:"100%",width:"100px",float:"left","margin-left":"-50px","font-size":"50px",color:"#ff0000"}},[e._v(" pass ")])]):e._e()])},O=[],S={name:"HelloWorld",data:function(){return{data:"fuck1",game:new m,playerStr:"",pokerList:[]}},computed:{playerMarginLeft:function(){return(window.innerWidth-50*this.game.playerList[0].pokerList.length)/2},deskPokerMarginLeft:function(){return(window.innerWidth-50*this.game.playerList[0].lastSendObj.poker.length)/2},buttonMarginLeft:function(){return(window.innerWidth-400)/2},deskPoker:function(){return this.game.deskPokerObj&&this.game.deskPokerObj.poker&&this.game.deskPokerObj.poker[0]&&this.game.deskPokerObj.poker[0].text?this.game.deskPokerObj.poker:[]},player2Str:function(){var e=this.game,t=2;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),e.playerList[t].lastSendObjToString()]},player1Str:function(){var e=this.game,t=1;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),e.playerList[t].lastSendObjToString()]},player0Str:function(){var e=this.game,t=0;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),e.playerList[t].lastSendObjToString()]},deskStr:function(){var e=this.game;return["desk",e.pokerListToString()]}},mounted:function(){this.data=this.game.playerList[1].name,window.game=this.game},methods:{setReady:function(){var e=this;e.game.playerList[0].setReady()},enter:function(e,t){1===e.buttons&&this.pickPoker(t)},pickPoker:function(e){if(e.selected){e.selected=!1;for(var t=0;t<this.pokerList.length;t++)this.pokerList[t]===e&&this.pokerList.splice(t,1)}else e.selected=!0,this.pokerList.push(e)},sendPoker2:function(){var e=this.game,t=e.playerList[0].playByPokerList(this.pokerList);t&&(this.pokerList=[])},sendPoker:function(){var e=this.game,t=e.playerList[0].playByString(this.playerStr);t&&(this.playerStr="")},pass:function(){this.game.playerList[0].playByString("pass")},reStart:function(){this.game=new m,this.playerStr=""}}},j=S,P=(r("f754"),Object(d["a"])(j,w,O,!1,null,"b2f40602",null)),_=P.exports,T={name:"App",components:{HelloWorld:x,Game:_}},B=T,W=Object(d["a"])(B,n,s,!1,null,null,null),N=W.exports;i["a"].config.productionTip=!1,new i["a"]({render:function(e){return e(N)}}).$mount("#app")},e791:function(e,t,r){e.exports=r.p+"media/bgm.8035c6a0.mp3"},f754:function(e,t,r){"use strict";var i=r("fee2"),n=r.n(i);n.a},fee2:function(e,t,r){}});
//# sourceMappingURL=app.4b39f358.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/img/scene.jpg","webpack:///./src/App.vue?4625","webpack:///./src/components/HelloWorld.vue?f3a1","webpack:///./src/doudizhu/Poker.js","webpack:///./src/doudizhu/AI.js","webpack:///./src/doudizhu/Player.js","webpack:///./src/doudizhu/Game.js","webpack:///src/components/HelloWorld.vue","webpack:///./src/components/HelloWorld.vue?ddb2","webpack:///./src/components/HelloWorld.vue","webpack:///./src/components/Game.vue?6449","webpack:///src/components/Game.vue","webpack:///./src/components/Game.vue?bf2b","webpack:///./src/components/Game.vue","webpack:///src/App.vue","webpack:///./src/App.vue?a7d1","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/audio/bgm.mp3","webpack:///./src/components/Game.vue?1aa8"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","staticStyle","_v","_s","player2Str","player1Str","player0Str","directives","rawName","expression","domProps","on","$event","target","composing","playerStr","sendPoker","pass","deskStr","reStart","Poker","param","text","number","textToNumber","numberToText","type","selected","a","b","pokerList","poker","sort","sortFunction","lastPoker","curList","lists","Count1List","Count2List","Count3List","Count4List","one","two","sx","three","four","list","map","item","str","toString","AI","player","game","1","2","3","4","pokerList0","poker15","poker16","poker17","obj","classify","threeList","twoList","oneList","i2","i3","curList2","lists2","i4","i5","concat","curList1","lists1","i6","i7","oneIndex","twoIndex","startN","lastN","ones","twos","cmbList","i8","i9","pokers","j1","sortArray","i10","find1","i11","unshift","sortList","i12","lastObj","getSmallestObjByObj","getByBoom","getByObj1","getBySplit","getSmallestObjNoBig","getByObj5","getByObj2","classifyObj","getByObj3","deleteFromPokerListAndSendByObj","next","last","getByObj4","getByObj6","canNotGet","isPlayerCanNotGetOne","allPoker","5","6","7","8","9","10","11","12","13","14","15","16","17","oldPokerList","deskPokerObj","num","types","getSmallestObjByType","playByTypys2","playByTypys1","playSmallestOne","pokerThree","pokerFour","one1","one2","two1","two2","flat","pokerOne","pokerTwo","oneBigToSmall","threeOne","Player","ready","Math","random","isRobot","ai","lastSendObj","loopRobot","that","setReady","setTimeout","getClassifyObj","console","log","getLastObj","playByObj","playByAllType","clearDesk","tempList","getAndDeleteOnePokerByNumber","listBackToPokerList","po","sortPoker","getObjByPokerList","comp","compareTwoObj","alert","pokerListToString","currentPlayer","getListByList","handleList","getListByString","obj1","obj2","Game","playerList","dizhu","MaxSecond","second","isOver","init","initPokerList","initPlayerList","start","timeout","timeLoop","playByString","setDiZhu","playByAI","dizhuIndex","getRandomIntInclusive","reset","over","checkGameOver","gameOver","resetTime","index","addPoker","player0","player1","player2","min","max","floor","computed","mounted","methods","reDraw","component","style","backgroundImage","marginLeft","buttonMarginLeft","playerMarginLeft","_l","staticClass","class","x","enter","pickPoker","sendPoker2","deskPokerMarginLeft","_e","components","HelloWorld","Vue","config","productionTip","render","h","App","$mount"],"mappings":"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","file":"js/app.4b39f358.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/scene.02780059.jpg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('Game')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"0px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.player2Str[0])+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.player2Str[1])+\" \"),_c('br'),_c('br'),_vm._v(\" \"+_vm._s(_vm.player2Str[2])+\" \")])]),_c('div',{staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"600px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.player1Str[0])+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.player1Str[1])+\" \"),_c('br'),_c('br'),_vm._v(\" \"+_vm._s(_vm.player1Str[2])+\" \")])]),_c('div',{staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"300px\",\"top\":\"300px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.player0Str[0])+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.player0Str[1])+\" \"),_c('br'),_c('br'),_vm._v(\" \"+_vm._s(_vm.player0Str[2])+\" \")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.playerStr),expression:\"playerStr\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.playerStr)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.playerStr=$event.target.value}}}),_c('button',{on:{\"click\":_vm.sendPoker}},[_vm._v(\"send\")]),_c('button',{on:{\"click\":_vm.pass}},[_vm._v(\"pass\")])])]),_c('div',{staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"300px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('div',{staticStyle:{\"width\":\"300px\",\"word-wrap\":\"break-word\"}},[_vm._v(\" \"+_vm._s(_vm.deskStr[0])+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.deskStr[1])+\" \")])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"left\":\"300px\",\"top\":\"600px\"}},[_c('button',{on:{\"click\":_vm.reStart}},[_vm._v(\"reStart\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","class Poker{\r\n constructor(param) {\r\n if(param.text){\r\n this.text = param.text;\r\n this.number = Poker.textToNumber(param.text);\r\n }else{\r\n this.number = param.number;\r\n this.text = Poker.numberToText(param.number);\r\n }\r\n this.type = param.type;\r\n this.selected = param.selected;\r\n }\r\n\r\n static textToNumber(text){\r\n switch (text) {\r\n case '3': return 3;\r\n case '4': return 4;\r\n case '5': return 5;\r\n case '6': return 6;\r\n case '7': return 7;\r\n case '8': return 8;\r\n case '9': return 9;\r\n case '10':\r\n case '0':\r\n case 'T':\r\n case 't': return 10;\r\n case '11':\r\n case 'j':\r\n case 'J': return 11;\r\n case '12':\r\n case 'q':\r\n case 'Q': return 12;\r\n case '13':\r\n case 'k':\r\n case 'K': return 13;\r\n case '1':\r\n case 'a':\r\n case 'A': return 14;\r\n case '2': return 15;\r\n case 's':\r\n case 'S': return 16;\r\n case 'x':\r\n case 'X': return 17;\r\n }\r\n }\r\n\r\n static numberToText(number){\r\n switch (number) {\r\n case 3: return '3';\r\n case 4: return '4';\r\n case 5: return '5';\r\n case 6: return '6';\r\n case 7: return '7';\r\n case 8: return '8';\r\n case 9: return '9';\r\n case 10: return '10';\r\n case 11: return 'J';\r\n case 12: return 'Q';\r\n case 13: return 'K';\r\n case 14: return 'A';\r\n case 15: return '2';\r\n case 16: return 'S';\r\n case 17: return 'X';\r\n }\r\n }\r\n\r\n static sortFunction(a, b){\r\n return a.number - b.number;\r\n }\r\n\r\n static getObjByPokerList(pokerList){\r\n if(pokerList[0] === 'pass'){\r\n return {\r\n type:'pass',\r\n poker: pokerList,\r\n };\r\n }\r\n pokerList.sort(Poker.sortFunction);\r\n\r\n let lastPoker = pokerList[0];\r\n let curList = [lastPoker];\r\n let lists = [];\r\n for(let i=1; i<pokerList.length; i++){\r\n if(pokerList[i].number !== lastPoker.number){\r\n lists.push(curList);\r\n curList = [pokerList[i]];\r\n }else{\r\n curList.push(pokerList[i]);\r\n }\r\n lastPoker = pokerList[i];\r\n }\r\n lists.push(curList);\r\n\r\n let Count1List = [];\r\n let Count2List = [];\r\n let Count3List = [];\r\n let Count4List = [];\r\n for(let i=0; i<lists.length; i++){\r\n if(lists[i].length === 3){\r\n Count3List.push(lists[i]);\r\n }else if(lists[i].length === 2){\r\n Count2List.push(lists[i]);\r\n }else if(lists[i].length === 1){\r\n Count1List.push(lists[i]);\r\n }else if(lists[i].length === 4){\r\n Count4List.push(lists[i]);\r\n }\r\n }\r\n\r\n if(pokerList.length === 1){\r\n\r\n return {\r\n type:'one',\r\n poker: pokerList,\r\n one: pokerList,\r\n };\r\n\r\n }else if(pokerList.length === 2){\r\n\r\n if(Count2List.length === 1){\r\n return {\r\n type:'two',\r\n poker: pokerList,\r\n two: pokerList,\r\n };\r\n }else if(pokerList[0].number === 16 && pokerList[1].number === 17){\r\n return {\r\n type:'sx',\r\n poker: pokerList,\r\n sx: pokerList,\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 3){\r\n\r\n if(Count3List.length === 1){\r\n return {\r\n type:'three',\r\n poker: pokerList,\r\n three: pokerList,\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 4){\r\n\r\n if(Count3List.length === 1){\r\n return {\r\n type:'threeWithOne',\r\n poker: pokerList,\r\n three: Count3List[0],\r\n one: Count1List[0],\r\n };\r\n }else if(Count4List.length === 1){\r\n return {\r\n type:'four',\r\n poker: pokerList,\r\n four: pokerList,\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 5){\r\n\r\n if(Count3List.length === 1 && Count2List.length === 1){\r\n return {\r\n type:'threeWithTwo',\r\n poker: pokerList,\r\n three: Count3List[0],\r\n two: Count2List[0],\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 6){\r\n\r\n if(Count4List.length === 1 && Count1List.length === 2){\r\n return {\r\n type:'fourWithOne',\r\n poker: pokerList,\r\n four: Count4List[0],\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 8){\r\n\r\n if(Count4List.length === 1 && Count2List.length === 2){\r\n return {\r\n type:'fourWithTwo',\r\n poker: pokerList,\r\n four: Count4List[0],\r\n };\r\n }\r\n\r\n }\r\n\r\n if(Count3List.length>=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; i<pokerList.length; i++){\r\n let str = pokerList[i].toString();\r\n result += str;\r\n }\r\n return result;\r\n }\r\n\r\n toString(){\r\n return this.text;\r\n }\r\n\r\n}\r\n\r\nexport default Poker;","\r\nclass AI{\r\n constructor(param) {\r\n param = param || {};\r\n this.player = param.player;\r\n this.game = param.game;\r\n }\r\n\r\n classify(pokerList){\r\n\r\n pokerList.sort(this.sortFunction);\r\n if(pokerList.length===0){\r\n return {\r\n 1: [],\r\n 2: [],\r\n 3: [],\r\n 4: [],\r\n };\r\n }\r\n let lastPoker = pokerList[0];\r\n let curList = [lastPoker];\r\n let lists = [];\r\n for(let i=1; i<pokerList.length; i++){\r\n if(pokerList[i].number !== lastPoker.number){\r\n lists.push(curList);\r\n curList = [pokerList[i]];\r\n }else{\r\n curList.push(pokerList[i]);\r\n }\r\n lastPoker = pokerList[i];\r\n }\r\n lists.push(curList);\r\n\r\n let Count1List = [];\r\n let Count2List = [];\r\n let Count3List = [];\r\n let Count4List = [];\r\n for(let i=0; i<lists.length; i++){\r\n if(lists[i].length === 3){\r\n Count3List.push(lists[i]);\r\n }else if(lists[i].length === 2){\r\n Count2List.push(lists[i]);\r\n }else if(lists[i].length === 1){\r\n Count1List.push(lists[i]);\r\n }else if(lists[i].length === 4){\r\n Count4List.push(lists[i]);\r\n }\r\n }\r\n\r\n return {\r\n 1: Count1List,\r\n 2: Count2List,\r\n 3: Count3List,\r\n 4: Count4List,\r\n };\r\n\r\n }\r\n\r\n getClassifyObj(pokerList0){\r\n\r\n let poker15 = [];\r\n let poker16 = [];\r\n let poker17 = [];\r\n\r\n let pokerList = pokerList0.slice(0);\r\n\r\n for(let i=0; i<pokerList.length; i++){\r\n if(pokerList[i].number === 15){\r\n let poker = pokerList.splice(i,1);\r\n i--;\r\n poker15.push(poker[0]);\r\n }else if(pokerList[i].number === 16){\r\n let poker = pokerList.splice(i,1);\r\n i--;\r\n poker16.push(poker[0]);\r\n }else if(pokerList[i].number === 17){\r\n let poker = pokerList.splice(i,1);\r\n i--;\r\n poker17.push(poker[0]);\r\n }\r\n }\r\n\r\n let obj = this.classify(pokerList);\r\n let Count1List = obj[1];\r\n let Count2List = obj[2];\r\n let Count3List = obj[3];\r\n let Count4List = obj[4];\r\n\r\n let four = Count4List;\r\n let three = [];\r\n let threeList = [];\r\n let two = [];\r\n let twoList = [];\r\n let one = [];\r\n let oneList = [];\r\n\r\n if(Count3List.length>0){\r\n let curList = [Count3List[0]];\r\n let lists = [];\r\n\r\n for(let i2=1; i2<Count3List.length; i2++){\r\n if(Count3List[i2][0].number !== Count3List[i2-1][0].number+1){\r\n lists.push(curList);\r\n curList = [Count3List[i2]];\r\n }else{\r\n curList.push(Count3List[i2]);\r\n }\r\n }\r\n lists.push(curList);\r\n for(let i3=0; i3<lists.length; i3++){\r\n if(lists[i3].length>1){\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; i4<Count2List.length; i4++){\r\n if(Count2List[i4][0].number !== Count2List[i4-1][0].number+1){\r\n lists2.push(curList2);\r\n curList2 = [Count2List[i4]];\r\n }else{\r\n curList2.push(Count2List[i4]);\r\n }\r\n }\r\n lists2.push(curList2);\r\n for(let i5=0; i5<lists2.length; i5++){\r\n if(lists2[i5].length>2){\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; i6<Count1List.length; i6++){\r\n if(Count1List[i6][0].number !== Count1List[i6-1][0].number+1){\r\n lists1.push(curList1);\r\n curList1 = [Count1List[i6]];\r\n }else{\r\n curList1.push(Count1List[i6]);\r\n }\r\n }\r\n lists1.push(curList1);\r\n for(let i7=0; i7<lists1.length; i7++){\r\n if(lists1[i7].length>4){\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].number<two[twoIndex][0].number){\r\n startN = one[oneIndex][0].number;\r\n ones.push(one[oneIndex]);\r\n oneIndex++;\r\n }else {\r\n startN = two[twoIndex][0].number;\r\n twos.push(two[twoIndex]);\r\n twoIndex++;\r\n }\r\n }\r\n lastN = startN;\r\n\r\n do{\r\n if(oneIndex>one.length-1&&twoIndex>two.length-1){\r\n break;\r\n }\r\n\r\n if(oneIndex<one.length&&one[oneIndex][0].number === lastN+1){\r\n ones.push(one[oneIndex]);\r\n oneIndex++;\r\n }else if(twoIndex<two.length&&two[twoIndex][0].number === lastN+1){\r\n twos.push(two[twoIndex]);\r\n twoIndex++;\r\n }else{\r\n break;\r\n }\r\n\r\n lastN = lastN+1;\r\n if(lastN===startN+4){\r\n if(twos.length<4){\r\n //combine\r\n let cmbList = [];\r\n for(let i8=0; i8<ones.length; i8++){\r\n cmbList.push(ones[i8]);\r\n\r\n //delete from one\r\n for(let j=0; j<one.length; j++){\r\n if(one[j]===ones[i8]){\r\n one.splice(j,1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for(let i9=0; i9<twos.length; i9++){\r\n let pokers = twos[i9];\r\n\r\n //delete from two\r\n for(let j1=0; j1<two.length; j1++){\r\n if(two[j1]===pokers){\r\n two.splice(j1,1);\r\n break;\r\n }\r\n }\r\n\r\n let poker = pokers.splice(0,1);\r\n cmbList.push(poker);\r\n one.push(pokers);\r\n\r\n }\r\n\r\n cmbList.sort(this.sortArray);\r\n oneList.push(cmbList);\r\n one.sort(this.sortArray);\r\n\r\n oneIndex = 0;\r\n twoIndex = 0;\r\n break;\r\n\r\n }\r\n }\r\n\r\n }while(true);\r\n\r\n }\r\n\r\n }\r\n\r\n //combine one oneList together\r\n for(let i10=0; i10<one.length; i10++){\r\n let find1 = false;\r\n for(let i11=0; i11<oneList.length; i11++){\r\n if(one[i10][0].number===oneList[i11][0][0].number-1){\r\n oneList[i11].unshift(one[i10]);\r\n find1 = true;\r\n break;\r\n }else if(one[i10][0].number===oneList[i11][oneList[i11].length-1][0].number+1){\r\n oneList[i11].push(one[i10]);\r\n find1 = true;\r\n break;\r\n }\r\n }\r\n if(find1){\r\n one.splice(i10,1);\r\n i10--;\r\n }\r\n }\r\n\r\n //combine oneList oneList together\r\n oneList.sort(this.sortList);\r\n for(let i12=1; i12<oneList.length; i12++){\r\n if(oneList[i12][0][0].number===oneList[i12-1][oneList[i12-1].length-1][0].number+1){\r\n oneList[i12-1] = oneList[i12-1].concat(oneList[i12]);\r\n oneList.splice(i12,1);\r\n i12--;\r\n }\r\n }\r\n\r\n return {\r\n four,\r\n three,\r\n threeList,\r\n two,\r\n twoList,\r\n one,\r\n oneList,\r\n poker15,\r\n poker16,\r\n poker17,\r\n };\r\n }\r\n\r\n //接牌1 最小接 不拆 炸\r\n getByObj1(lastObj){\r\n let obj;\r\n obj = this.getSmallestObjByObj(lastObj);\r\n if(!obj){\r\n obj = this.getByBoom(lastObj);\r\n }\r\n return obj;\r\n }\r\n\r\n //接牌2 最小接 炸 拆\r\n getByObj2(lastObj){\r\n let obj;\r\n obj = this.getByObj1(lastObj);\r\n if(!obj){\r\n obj = this.getBySplit(lastObj);\r\n }\r\n return obj;\r\n }\r\n\r\n //接牌3 最小接 不拆 不炸 不出王、2、AAA\r\n getByObj3(lastObj){\r\n let obj;\r\n obj = this.getSmallestObjNoBig(lastObj);\r\n\r\n return obj;\r\n }\r\n\r\n //接牌4\r\n getByObj4(lastObj){\r\n let obj;\r\n if(lastObj.type==='one'){\r\n obj = this.getByObj5(lastObj);\r\n }else{\r\n obj = this.getByObj2(lastObj);\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n getByBoom(lastObj){\r\n let classifyObj = this.player.classifyObj;\r\n\r\n let obj;\r\n let poker;\r\n\r\n if(lastObj.type==='sx'){\r\n return null;\r\n }\r\n\r\n if(classifyObj.four.length>0){\r\n if(lastObj.type==='four'){\r\n for(let i=0; i<classifyObj.four.length; i++){\r\n if(classifyObj.four[i][0].number>lastObj.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; i<oldPokerList.length; i++){\r\n for(let j=0; j<oldPokerList[i].poker.length; j++){\r\n allPoker[oldPokerList[i].poker[j].number]++;\r\n }\r\n }\r\n let deskPokerObj = this.game.deskPokerObj;\r\n for(let j=0; j<deskPokerObj.poker.length; j++){\r\n allPoker[deskPokerObj.poker[j].number]++;\r\n }\r\n let pokers = this.player.pokerList;\r\n for(let j=0; j<pokers.length; j++){\r\n allPoker[pokers[j].number]++;\r\n }\r\n\r\n let num = obj.one[0].number;\r\n let result = true;\r\n if(num===16){\r\n if(allPoker[17]!==1){\r\n return false;\r\n }\r\n }else if(num===15){\r\n if(allPoker[16]!==1||allPoker[17]!==1){\r\n return false;\r\n }\r\n }else{\r\n for(let n=num+1; n<=15; n++){\r\n if(allPoker[n]!==4){\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n //出牌1\r\n playByTypys1(){\r\n let types = ['threeWithTwoList','threeWithOneList','threeList','twoList','oneList','threeWithTwo','threeWithOne','three','two','one','four','sx'];\r\n for(let i=0; i<types.length; i++){\r\n let obj = this.getSmallestObjByType(types[i]);\r\n if(!obj){\r\n continue;\r\n }\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n break;\r\n }\r\n }\r\n\r\n //出牌2\r\n playByTypys2(){\r\n let types = ['threeWithTwoList','threeWithOneList','threeList','twoList','oneList','threeWithTwo','threeWithOne','three','two','four','sx','one'];\r\n for(let i=0; i<types.length; i++){\r\n let obj = this.getSmallestObjByType(types[i], true);\r\n if(!obj){\r\n continue;\r\n }\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n break;\r\n }\r\n }\r\n\r\n //出牌 最小一张\r\n playSmallestOne(){\r\n let obj = {\r\n type: 'one',\r\n poker: [this.player.pokerList[0]],\r\n one: [this.player.pokerList[0]],\r\n };\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n }\r\n\r\n //出牌\r\n playByAllType(){\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 this.playByTypys2();\r\n }else{\r\n this.playByTypys1();\r\n }\r\n }else{\r\n if(this.player.next.type==='nongmin'){\r\n if(this.player.next.pokerList.length===1){\r\n this.playSmallestOne();\r\n }else{\r\n this.playByTypys1();\r\n }\r\n }else{\r\n if(this.player.next.pokerList.length===1){\r\n this.playByTypys2();\r\n }else{\r\n this.playByTypys1();\r\n }\r\n }\r\n }\r\n }\r\n\r\n //接 队友\r\n getSmallestObjNoBig(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; i<classifyObj.one.length; i++){\r\n if(classifyObj.one[i][0].number>lastObj.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; i<classifyObj.two.length; i++){\r\n if(classifyObj.two[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.one.length; i++){\r\n if(classifyObj.one[i][0].number>lastObj.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; i<classifyObj.two.length; i++){\r\n if(classifyObj.two[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.four.length; i++){\r\n if(classifyObj.four[i][0].number>lastObj.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; i<classifyObj.four.length; i++){\r\n if(classifyObj.four[i][0].number>lastObj.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; i<classifyObj.four.length; i++){\r\n if(classifyObj.four[i][0].number>lastObj.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; i<classifyObj.threeList.length; i++){\r\n if(classifyObj.threeList[i].length===lastObj.list.length && classifyObj.threeList[i][0][0].number>lastObj.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; i<classifyObj.threeList.length; i++){\r\n if(classifyObj.threeList[i].length===lastObj.list.length && classifyObj.threeList[i][0][0].number>lastObj.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<classifyObj.oneList.length; i++) {\r\n if (classifyObj.oneList[i].length === lastObj.list.length && classifyObj.oneList[i][0][0].number > 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<classifyObj.twoList.length; i++) {\r\n if (classifyObj.twoList[i].length === lastObj.list.length && classifyObj.twoList[i][0][0].number > 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<classifyObj.threeList.length; i++) {\r\n if (classifyObj.threeList[i].length === lastObj.list.length && classifyObj.threeList[i][0][0].number > 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; i<pokerList.length; i++){\r\n if(pokerList[i].number !== lastPoker.number){\r\n lists.push(curList);\r\n curList = [pokerList[i]];\r\n }else{\r\n curList.push(pokerList[i]);\r\n }\r\n lastPoker = pokerList[i];\r\n }\r\n lists.push(curList);\r\n\r\n let Count1List = [];\r\n let Count2List = [];\r\n let Count3List = [];\r\n let Count4List = [];\r\n for(let i=0; i<lists.length; i++){\r\n if(lists[i].length === 3){\r\n Count3List.push(lists[i]);\r\n }else if(lists[i].length === 2){\r\n Count2List.push(lists[i]);\r\n }else if(lists[i].length === 1){\r\n Count1List.push(lists[i]);\r\n }else if(lists[i].length === 4){\r\n Count4List.push(lists[i]);\r\n }\r\n }\r\n\r\n let type = lastObj.type;\r\n let obj = null;\r\n\r\n if(type === 'two'){\r\n if(Count2List.length>0){\r\n for(let i=0; i<Count2List.length; i++){\r\n if(Count2List[i][0].number>lastObj.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; i<Count3List.length; i++){\r\n if(Count3List[i][0].number>lastObj.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; i<Count3List.length; i++){\r\n if(Count3List[i][0].number>lastObj.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; j<Count3List.length; j++){\r\n if(j===i){\r\n continue;\r\n }\r\n one = Count3List[j].slice(0,1);\r\n }\r\n }\r\n\r\n if(one){\r\n obj = {\r\n type: type,\r\n poker: Count3List[i].concat(one),\r\n three: Count3List[i],\r\n one: one,\r\n };\r\n }\r\n break;\r\n\r\n }\r\n }\r\n }\r\n }else if(type === 'threeWithTwo'){\r\n if(Count3List.length>0){\r\n for(let i=0; i<Count3List.length; i++){\r\n if(Count3List[i][0].number>lastObj.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<Count3List.length; j++){\r\n if(j===i){\r\n continue;\r\n }\r\n two = Count3List[j].slice(0,2);\r\n }\r\n }\r\n\r\n if(two){\r\n obj = {\r\n type: type,\r\n poker: Count3List[i].concat(two),\r\n three: Count3List[i],\r\n two: two,\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'threeWithOneList'){\r\n if(Count3List.length>=lastObj.list.length){\r\n for(let i=0; i<Count3List.length-lastObj.list.length+1; i++){\r\n if(Count3List[i][0].number>lastObj.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<Count1List.length&&oneList.length<lastObj.list.length; j++){\r\n oneList.push(Count1List[j]);\r\n }\r\n\r\n for(let j=0; j<Count2List.length&&oneList.length<lastObj.list.length; j++){\r\n oneList.push(Count2List[j].slice(0,1));\r\n if(oneList.length<lastObj.list.length){\r\n oneList.push(Count2List[j].slice(1,2));\r\n }\r\n }\r\n\r\n for(let j=0; j<Count3List.length&&oneList.length<lastObj.list.length; j++){\r\n if(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 oneList.push(Count3List[j].slice(1,2));\r\n }\r\n if(oneList.length<lastObj.list.length){\r\n oneList.push(Count3List[j].slice(2,3));\r\n }\r\n }\r\n\r\n if(oneList.length === lastObj.list.length){\r\n\r\n let poker = [];\r\n let list = [];\r\n for(let j=0; j<lastObj.list.length; j++){\r\n poker = poker.concat(Count3List[i+j]);\r\n poker = poker.concat(oneList[i]);\r\n let threeOne = {\r\n three: Count3List[i+j],\r\n one: oneList[i],\r\n };\r\n list.push(threeOne);\r\n }\r\n\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n list: list,\r\n };\r\n }\r\n break;\r\n\r\n }\r\n }\r\n }\r\n }else if(type === 'threeWithTwoList'){\r\n if(Count3List.length>=lastObj.list.length){\r\n for(let i=0; i<Count3List.length-lastObj.list.length+1; i++){\r\n if(Count3List[i][0].number>lastObj.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<Count2List.length&&twoList.length<lastObj.list.length; j++){\r\n twoList.push(Count2List);\r\n }\r\n\r\n for(let j=0; j<Count3List.length&&twoList.length<lastObj.list.length; j++){\r\n if(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; j++){\r\n poker = poker.concat(Count3List[i+j]);\r\n poker = poker.concat(twoList[i]);\r\n let threeOne = {\r\n three: Count3List[i+j],\r\n two: twoList[i],\r\n };\r\n list.push(threeOne);\r\n }\r\n\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n list: list,\r\n };\r\n }\r\n break;\r\n\r\n }\r\n }\r\n }\r\n }else if(type === 'oneList'){\r\n if(Count1List.length>=lastObj.list.length ){\r\n for(let i=0; i<Count1List.length-lastObj.list.length+1; i++){\r\n if(Count1List[i][0].number>lastObj.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; i<Count2List.length-lastObj.list.length+1; i++){\r\n if(Count2List[i][0].number>lastObj.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; i<Count3List.length-lastObj.list.length+1; i++){\r\n if(Count3List[i][0].number>lastObj.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; i<pokerList.length; i++){\r\n\r\n let poker = this.getAndDeleteOnePokerByNumber(pokerList[i].number);\r\n if(poker){\r\n tempList.push(poker);\r\n }else{\r\n this.listBackToPokerList(tempList);\r\n return false;\r\n }\r\n }\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n\r\n getListByList(list){\r\n let tempList = [];\r\n if(list[0] === 'pass'){\r\n return ['pass'];\r\n }\r\n for(let i=0; i<list.length; i++){\r\n let po = list[i];\r\n let poker = this.getAndDeleteOnePokerByNumber(po.number);\r\n if(poker){\r\n tempList.push(poker);\r\n }else{\r\n this.listBackToPokerList(tempList);\r\n return false;\r\n }\r\n }\r\n return tempList;\r\n }\r\n\r\n getListByString(str){\r\n let tempList = [];\r\n if(str === 'pass'){\r\n return ['pass'];\r\n }\r\n for(let i=0; i<str.length; i++){\r\n let text = str[i];\r\n let number = Poker.textToNumber(text);\r\n let poker = this.getAndDeleteOnePokerByNumber(number);\r\n if(poker){\r\n tempList.push(poker);\r\n }else{\r\n this.listBackToPokerList(tempList);\r\n return false;\r\n }\r\n }\r\n return tempList;\r\n }\r\n\r\n listBackToPokerList(list){\r\n while (list.length>0){\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; i<this.pokerList.length; i++){\r\n if(this.pokerList[i].number === number){\r\n return this.pokerList.splice(i,1)[0];\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n pokerListToString(){\r\n let result = Poker.pokerListToString(this.pokerList);\r\n return result;\r\n }\r\n\r\n lastSendObjToString(){\r\n if(!this.lastSendObj){\r\n return '';\r\n }\r\n let result = Poker.pokerListToString(this.lastSendObj.poker);\r\n return result;\r\n }\r\n\r\n}\r\n\r\nexport default Player;","import Player from \"./Player\";\r\nimport Poker from \"./Poker\";\r\n\r\nclass Game{\r\n constructor() {\r\n this.playerList = [];\r\n this.pokerList = [];\r\n this.deskPokerObj = null;\r\n this.oldPokerList = [];\r\n this.currentPlayer = [];\r\n this.dizhu = null;\r\n this.MaxSecond = 60;\r\n this.second = this.MaxSecond;\r\n this.isOver = true;\r\n\r\n this.init();\r\n }\r\n\r\n init(){\r\n this.initPokerList();\r\n this.initPlayerList();\r\n }\r\n\r\n setReady(){\r\n if(this.playerList[0]&&this.playerList[0].ready&&this.playerList[1]&&this.playerList[1].ready&&this.playerList[2]&&this.playerList[2].ready){\r\n this.start();\r\n }\r\n }\r\n\r\n resetTime(){\r\n this.second = this.MaxSecond;\r\n }\r\n\r\n timeLoop(){\r\n if(this.isOver){\r\n return;\r\n }\r\n this.second--;\r\n\r\n if(this.second === 0){\r\n this.timeout();\r\n }\r\n\r\n let that = this;\r\n setTimeout(function () {\r\n that.timeLoop();\r\n },1000);\r\n }\r\n\r\n timeout(){\r\n this.currentPlayer.playByString('pass');\r\n }\r\n\r\n start(){\r\n\r\n this.setDiZhu();\r\n this.sendPoker();\r\n\r\n this.isOver = false;\r\n this.timeLoop();\r\n this.currentPlayer = this.dizhu;\r\n if(this.currentPlayer.isRobot){\r\n this.currentPlayer.playByAI();\r\n }\r\n }\r\n\r\n setDiZhu(){\r\n let dizhuIndex = this.getRandomIntInclusive(0,2);\r\n this.playerList[dizhuIndex].type = 'dizhu';\r\n this.dizhu = this.playerList[dizhuIndex];\r\n }\r\n\r\n reset(){\r\n\r\n this.playerList[0].reset();\r\n this.playerList[1].reset();\r\n this.playerList[2].reset();\r\n\r\n this.pokerList = [];\r\n this.deskPokerObj = null;\r\n this.oldPokerList = [];\r\n this.currentPlayer = null;\r\n this.dizhu = null;\r\n this.second = this.MaxSecond;\r\n this.isOver = true;\r\n\r\n this.initPokerList();\r\n }\r\n\r\n next(){\r\n let over = this.checkGameOver();\r\n if(over){\r\n this.gameOver();\r\n return;\r\n }\r\n this.resetTime();\r\n this.currentPlayer = this.currentPlayer.next;\r\n if(this.currentPlayer.isRobot){\r\n this.currentPlayer.playByAI();\r\n }\r\n }\r\n\r\n gameOver(){\r\n alert('游戏结束! '+this.currentPlayer.name+' ['+this.currentPlayer.type+'] 胜!');\r\n this.isOver = true;\r\n\r\n this.reset();\r\n }\r\n\r\n checkGameOver(){\r\n if(this.currentPlayer.pokerList.length === 0) {\r\n return true;\r\n }\r\n }\r\n\r\n clearDesk(){\r\n if(this.deskPokerObj){\r\n this.oldPokerList.push(this.deskPokerObj);\r\n this.deskPokerObj = null;\r\n }\r\n }\r\n\r\n sendPoker(){\r\n let player = this.playerList[0];\r\n do{\r\n let index = this.getRandomIntInclusive(0,this.pokerList.length-1);\r\n let poker = this.pokerList.splice(index,1)[0];\r\n player.addPoker(poker);\r\n player = player.next;\r\n }while(this.pokerList.length>3);\r\n\r\n 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<this.playerList.length; i++){\r\n this.playerList[i].sortPoker();\r\n }\r\n }\r\n\r\n initPlayerList(){\r\n this.playerList = [];\r\n let player0 = new Player({\r\n name: 'player',\r\n isRobot: false,\r\n game: this,\r\n });\r\n let player1 = new Player({\r\n name: '机器人1',\r\n isRobot: true,\r\n game: this,\r\n });\r\n let player2 = new Player({\r\n name: '机器人2',\r\n isRobot: true,\r\n game: this,\r\n });\r\n this.playerList = [player0,player1,player2];\r\n\r\n this.playerList[0].next = this.playerList[1];\r\n this.playerList[1].next = this.playerList[2];\r\n this.playerList[2].next = this.playerList[0];\r\n this.playerList[0].last = this.playerList[2];\r\n this.playerList[1].last = this.playerList[0];\r\n this.playerList[2].last = this.playerList[1];\r\n\r\n }\r\n\r\n initPokerList(){\r\n this.pokerList = [];\r\n for(let number=3; number<=15; number++){\r\n for(let type=0; type<4; type++){\r\n let poker = new Poker({\r\n number: number,\r\n type: type,\r\n });\r\n this.pokerList.push(poker);\r\n }\r\n }\r\n for(let number=16; number<=17; number++){\r\n let poker = new Poker({\r\n number: number,\r\n });\r\n this.pokerList.push(poker);\r\n }\r\n\r\n }\r\n\r\n pokerListToString(){\r\n let result = '';\r\n result += Poker.pokerListToString(this.pokerList);\r\n result += '\\n';\r\n for(let i=0; i<this.oldPokerList.length; i++){\r\n result += Poker.pokerListToString(this.oldPokerList[i].poker);\r\n if(i<this.oldPokerList.length-1){\r\n result += ',';\r\n }\r\n }\r\n result += '\\n';\r\n result += this.deskPokerObj?Poker.pokerListToString(this.deskPokerObj.poker):'';\r\n return result;\r\n }\r\n\r\n getRandomIntInclusive(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n}\r\n\r\nexport default Game;","<template>\n <div>\n <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 0px; top: 0px; background-color: aliceblue; text-align: center\">\n <span>\n {{player2Str[0]}}\n </br>\n {{player2Str[1]}}\n </br></br>\n {{player2Str[2]}}\n </span>\n </div>\n\n <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 600px; top: 0px; background-color: aliceblue; text-align: center\">\n <span>\n {{player1Str[0]}}\n </br>\n {{player1Str[1]}}\n </br></br>\n {{player1Str[2]}}\n </span>\n </div>\n\n <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 300px; top: 300px; background-color: aliceblue; text-align: center\">\n <span>\n {{player0Str[0]}}\n </br>\n {{player0Str[1]}}\n </br></br>\n {{player0Str[2]}}\n </span>\n <div>\n <input v-model=\"playerStr\" type=\"text\"/>\n <button @click=\"sendPoker\">send</button>\n <button @click=\"pass\">pass</button>\n </div>\n </div>\n\n <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 300px; top: 0px; background-color: aliceblue; text-align: center\">\n <div style=\"width: 300px;word-wrap: break-word;\">\n {{deskStr[0]}}\n </br>\n {{deskStr[1]}}\n </div>\n </div>\n\n <div style=\"position: fixed;left: 300px;top: 600px;\">\n <button @click=\"reStart\">reStart</button>\n </div>\n </div>\n</template>\n\n\n<script>\n import Game from \"../doudizhu/Game\";\nexport default {\n name: 'HelloWorld',\n data(){\n return {\n data:'fuck1',\n game: new Game(),\n playerStr: '',\n }\n },\n computed: {\n\n player2Str: function () {\n let game = this.game;\n let i = 2;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n 'last : '+game.playerList[i].lastSendObjToString()\n ];\n },\n player1Str: function () {\n let game = this.game;\n let i = 1;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n 'last : '+game.playerList[i].lastSendObjToString()\n ];\n },\n player0Str: function () {\n let game = this.game;\n let i = 0;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n 'last : '+game.playerList[i].lastSendObjToString()\n ];\n },\n deskStr: function () {\n let game = this.game;\n return [\n 'desk',\n game.pokerListToString()\n ];\n },\n },\n mounted() {\n this.data = this.game.playerList[1].name;\n },\n methods:{\n reDraw() {\n\n },\n\n sendPoker() {\n let game = this.game;\n let success = game.playerList[0].playByString(this.playerStr);\n if(success){\n this.playerStr='';\n }\n },\n\n pass() {\n this.game.playerList[0].playByString('pass');\n },\n\n reStart() {\n this.game = new Game();\n this.playerStr='';\n },\n\n },\n}\n</script>\n\n<style scoped>\n\n</style>\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 }","<template>\n <div style=\"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')+')'}\">\n <audio muted autoplay loop controls :style=\"{ marginLeft: buttonMarginLeft + 'px' }\">\n <source src=\"../audio/bgm.mp3\">\n 您的浏览器不支持 audio 元素。\n </audio>\n\n<!-- <div v-show=\"false\" style=\"width: 300px;height:300px;float: left; position: fixed ; left: 0; top: 0px; background-color: aliceblue; text-align: center\">-->\n<!-- <span>-->\n<!-- 手牌:{{player2Str[1]}}-->\n<!-- </span>-->\n<!-- </div>-->\n\n<!-- <div v-show=\"false\" style=\"width: 300px;height:300px;float: left; position: fixed ; right: 0; top: 0px; background-color: aliceblue; text-align: center\">-->\n<!-- <span>-->\n<!-- 手牌:{{player1Str[1]}}-->\n<!-- </span>-->\n<!-- </div>-->\n\n <div v-show=\"false\" style=\"width: 300px;height:300px;float: left; position: fixed ; left: 600px; top: 0px; background-color: aliceblue; text-align: center\">\n <div style=\"width: 300px;word-wrap: break-word;\">\n 已出的牌:\n <br/>\n {{deskStr[1]}}\n </div>\n </div>\n\n<!-- <div style=\"position: fixed;left: 10px;bottom: 10px;\">-->\n<!-- <button @click=\"reStart\" style=\"height: 50px;font-size:30px;\">开始新一局</button>-->\n<!-- </div>-->\n\n <div v-show=\"game.isOver\" :style=\"{ marginLeft: playerMarginLeft-40 + 'px' }\" style=\"font-size: 20px;color:white;position: fixed;bottom:200px;z-index: 999;\">\n <button v-show=\"!game.playerList[0].ready\" @mousedown=\"setReady\" style=\"font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;\">{{game.playerList[0].ready?'已准备':'准备'}}</button>\n <div v-show=\"game.playerList[0].ready\" style=\"color: red;width:80px;border: solid;border-radius: 4px;position: absolute;\">\n {{game.playerList[0].ready?'已准备':'未准备'}}\n </div>\n </div>\n\n <div v-show=\"!game.isOver\" :style=\"{ marginLeft: playerMarginLeft-150 + 'px' }\" style=\"color:white;position: fixed;bottom:0;width: 100%;height: 200px;line-height: 200px;\">\n 你是 <span style=\"color:red;font-size: 20px\">{{game.playerList[0].type==='nongmin'?'农民':'地主'}}</span>\n </div>\n <div :style=\"{ marginLeft: playerMarginLeft + 'px' }\" style=\"position: fixed;bottom:0;width: 100%;height: 200px;\">\n <div @mouseenter=\"enter($event,item)\" @mousedown=\"pickPoker(item)\" v-for=\"item in game.playerList[0].pokerList\" :class=\"{ selected: item.selected, s:item.number===16, x:item.number===17 }\" class=\"poker pokerDesk\" style=\"\">\n <span v-show=\"item.number<16\">\n {{item.text}}\n </span>\n </div>\n </div>\n\n <div v-show=\"game.currentPlayer===game.playerList[0]\" style=\"position: fixed;bottom:200px;width: 100%;height: 100px;text-align:left;\">\n <div :style=\"{ marginLeft: buttonMarginLeft + 'px' }\" style=\"width: 400px;height: 60px;\">\n <button @click=\"pass\" style=\"height: 60px;border-radius: 4px;float:left;font-size:40px;background-color: red\">不出</button>\n <button @click=\"sendPoker2\" style=\"height: 60px;border-radius: 4px;float:right;font-size:40px;background-color: lawngreen\">出牌</button>\n <div v-show=\"game.currentPlayer===game.playerList[0]\" style=\"color: red;width:150px;border: solid;border-radius: 4px;float: left;margin-left: 20px;\">\n 请在{{game.second}}秒内出牌\n </div>\n </div>\n </div>\n\n <div v-if=\"game.playerList[0].lastSendObj&&game.playerList[0].lastSendObj.poker[0].text\" :style=\"{ marginLeft: deskPokerMarginLeft + 'px' }\" style=\"position: fixed;bottom:350px;width: 100%;height: 200px\">\n <div v-for=\"item in game.playerList[0].lastSendObj.poker\" class=\"pokerDesk\" :class=\"{ s:item.number===16, x:item.number===17 }\">\n <span v-show=\"item.number<16\">\n {{item.text}}\n </span>\n </div>\n </div>\n <div v-if=\"game.playerList[0].lastSendObj&&!game.playerList[0].lastSendObj.poker[0].text\" :style=\"{ marginLeft: deskPokerMarginLeft + 'px' }\" style=\"position: fixed;bottom:350px;width: 100%;height: 200px\">\n <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\n pass\n </div>\n </div>\n\n <div style=\"position: fixed;top:40px;left: 20px;height:200px;width:100px;border: solid 1px;border-radius: 8px;background-color: azure;text-align: center\">\n <p v-show=\"!game.isOver\" style=\"color:red;font-size: 20px\">\n {{game.playerList[2].type==='nongmin'?'农民':'地主'}}\n </p>\n <p>\n {{game.playerList[2].name}}\n </p>\n <p>\n 剩余 {{game.playerList[2].pokerList.length}} 张\n </p>\n\n <div v-show=\"game.currentPlayer===game.playerList[2]\" style=\"color: red;width:150px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;left: 0\">\n 请在{{game.second}}秒内出牌\n </div>\n <div v-show=\"game.isOver\" style=\"color: red;width:80px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;left: 0;z-index: 999;\">\n {{game.playerList[2].ready?'已准备':'未准备'}}\n </div>\n </div>\n <div v-if=\"game.playerList[2].lastSendObj&&game.playerList[2].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;left:200px;height: 200px;\">\n <div v-for=\"item in game.playerList[2].lastSendObj.poker\" class=\"pokerDesk\" :class=\"{ s:item.number===16, x:item.number===17 }\">\n <span v-show=\"item.number<16\">\n {{item.text}}\n </span>\n </div>\n </div>\n <div v-if=\"game.playerList[2].lastSendObj&&!game.playerList[2].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;left:200px;height: 200px;\">\n <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\n pass\n </div>\n </div>\n\n <div style=\"position: fixed;top:40px;right: 20px;height:200px;width:100px;border: solid 1px;border-radius: 8px;background-color: azure;text-align: center\">\n <p v-show=\"!game.isOver\" style=\"color:red;font-size: 20px\">\n {{game.playerList[1].type==='nongmin'?'农民':'地主'}}\n </p>\n <p>\n {{game.playerList[1].name}}\n </p>\n <p>\n 剩余 {{game.playerList[1].pokerList.length}} 张\n </p>\n <div v-show=\"game.currentPlayer===game.playerList[1]\" style=\"color: red;width:150px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;right: 0\">\n 请在{{game.second}}秒内出牌\n </div>\n <div v-show=\"game.isOver\" style=\"color: red;width:80px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;right: 0;z-index: 999;\">\n {{game.playerList[1].ready?'已准备':'未准备'}}\n </div>\n </div>\n <div v-if=\"game.playerList[1].lastSendObj&&game.playerList[1].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;right:200px;height: 200px;\">\n <div v-for=\"item in game.playerList[1].lastSendObj.poker\" class=\"pokerDesk\" :class=\"{ s:item.number===16, x:item.number===17 }\">\n <span v-show=\"item.number<16\">\n {{item.text}}\n </span>\n </div>\n </div>\n <div v-if=\"game.playerList[1].lastSendObj&&!game.playerList[1].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;right:200px;height: 200px;\">\n <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\n pass\n </div>\n </div>\n\n </div>\n</template>\n\n\n<script>\n import Game from \"../doudizhu/Game\";\nexport default {\n name: 'HelloWorld',\n data(){\n return {\n data:'fuck1',\n game: new Game(),\n playerStr: '',\n pokerList: [],\n }\n },\n computed: {\n\n playerMarginLeft: function(){\n return (window.innerWidth - (this.game.playerList[0].pokerList.length*50))/2;\n },\n deskPokerMarginLeft: function(){\n return (window.innerWidth - (this.game.playerList[0].lastSendObj.poker.length*50))/2;\n },\n buttonMarginLeft: function(){\n return (window.innerWidth - 400)/2;\n },\n\n deskPoker: function(){\n if(this.game.deskPokerObj && this.game.deskPokerObj.poker){\n if(this.game.deskPokerObj.poker[0] && this.game.deskPokerObj.poker[0].text){\n return this.game.deskPokerObj.poker;\n }\n }\n return [];\n },\n player2Str: function () {\n let game = this.game;\n let i = 2;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n game.playerList[i].lastSendObjToString()\n ];\n },\n player1Str: function () {\n let game = this.game;\n let i = 1;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n game.playerList[i].lastSendObjToString()\n ];\n },\n player0Str: function () {\n let game = this.game;\n let i = 0;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n game.playerList[i].lastSendObjToString()\n ];\n },\n deskStr: function () {\n let game = this.game;\n return [\n 'desk',\n game.pokerListToString()\n ];\n },\n },\n mounted() {\n this.data = this.game.playerList[1].name;\n window.game = this.game;\n },\n methods:{\n\n setReady: function() {\n let that = this;\n that.game.playerList[0].setReady();\n },\n\n enter: function(e, poker){\n if(e.buttons === 1){\n this.pickPoker(poker);\n }\n },\n\n pickPoker(poker){\n if(!poker.selected){\n poker.selected = true;\n this.pokerList.push(poker);\n }else{\n poker.selected = false;\n for(let i=0; i<this.pokerList.length; i++){\n if(this.pokerList[i] === poker){\n this.pokerList.splice(i,1);\n }\n }\n }\n },\n\n sendPoker2() {\n let game = this.game;\n let success = game.playerList[0].playByPokerList(this.pokerList);\n if(success){\n this.pokerList=[];\n }\n },\n\n sendPoker() {\n let game = this.game;\n let success = game.playerList[0].playByString(this.playerStr);\n if(success){\n this.playerStr='';\n }\n },\n\n pass() {\n this.game.playerList[0].playByString('pass');\n },\n\n reStart() {\n this.game = new Game();\n this.playerStr='';\n },\n\n },\n}\n</script>\n\n<style scoped>\n .pokerDesk{\n height:100%;width:100px;border: solid 1px;border-radius: 16px;float: left;margin-left:-50px;background-color: azure;\n font-size: 30px;\n background-repeat: no-repeat;background-size: cover;\n }\n\n .poker:hover{\n background-color: antiquewhite;\n }\n\n .selected{\n margin-top: -20px;\n }\n\n .s{\n background-image: url(\"../img/s.jpg\");\n }\n\n .x{\n background-image: url(\"../img/x.png\");\n }\n</style>\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","<template>\n <div id=\"app\">\n <Game></Game>\n </div>\n</template>\n\n<script>\nimport HelloWorld from './components/HelloWorld.vue';\nimport Game from './components/Game.vue';\n\nexport default {\n name: 'App',\n components: {\n HelloWorld,\n Game,\n }\n}\n</script>\n\n<style>\n\n</style>\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
(function(e){function t(t){for(var i,o,a=t[0],l=t[1],h=t[2],u=0,g=[];u<a.length;u++)o=a[u],Object.prototype.hasOwnProperty.call(n,o)&&n[o]&&g.push(n[o][0]),n[o]=0;for(i in l)Object.prototype.hasOwnProperty.call(l,i)&&(e[i]=l[i]);p&&p(t);while(g.length)g.shift()();return s.push.apply(s,h||[]),r()}function r(){for(var e,t=0;t<s.length;t++){for(var r=s[t],i=!0,a=1;a<r.length;a++){var l=r[a];0!==n[l]&&(i=!1)}i&&(s.splice(t--,1),e=o(o.s=r[0]))}return e}var i={},n={app:0},s=[];function o(t){if(i[t])return i[t].exports;var r=i[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.l=!0,r.exports}o.m=e,o.c=i,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(r,i,function(t){return e[t]}.bind(null,i));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="";var a=window["webpackJsonp"]=window["webpackJsonp"]||[],l=a.push.bind(a);a.push=t,a=a.slice();for(var h=0;h<a.length;h++)t(a[h]);var p=l;s.push([0,"chunk-vendors"]),r()})({0:function(e,t,r){e.exports=r("56d7")},"00a8":function(e,t,r){e.exports=r.p+"img/scene.02780059.jpg"},"56d7":function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var i=r("2b0e"),n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"app"}},[r("Game")],1)},s=[],o=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",{staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"0px",top:"0px","background-color":"aliceblue","text-align":"center"}},[r("span",[e._v(" "+e._s(e.player2Str[0])+" "),r("br"),e._v(" "+e._s(e.player2Str[1])+" "),r("br"),r("br"),e._v(" "+e._s(e.player2Str[2])+" ")])]),r("div",{staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"600px",top:"0px","background-color":"aliceblue","text-align":"center"}},[r("span",[e._v(" "+e._s(e.player1Str[0])+" "),r("br"),e._v(" "+e._s(e.player1Str[1])+" "),r("br"),r("br"),e._v(" "+e._s(e.player1Str[2])+" ")])]),r("div",{staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"300px",top:"300px","background-color":"aliceblue","text-align":"center"}},[r("span",[e._v(" "+e._s(e.player0Str[0])+" "),r("br"),e._v(" "+e._s(e.player0Str[1])+" "),r("br"),r("br"),e._v(" "+e._s(e.player0Str[2])+" ")]),r("div",[r("input",{directives:[{name:"model",rawName:"v-model",value:e.playerStr,expression:"playerStr"}],attrs:{type:"text"},domProps:{value:e.playerStr},on:{input:function(t){t.target.composing||(e.playerStr=t.target.value)}}}),r("button",{on:{click:e.sendPoker}},[e._v("send")]),r("button",{on:{click:e.pass}},[e._v("pass")])])]),r("div",{staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"300px",top:"0px","background-color":"aliceblue","text-align":"center"}},[r("div",{staticStyle:{width:"300px","word-wrap":"break-word"}},[e._v(" "+e._s(e.deskStr[0])+" "),r("br"),e._v(" "+e._s(e.deskStr[1])+" ")])]),r("div",{staticStyle:{position:"fixed",left:"300px",top:"600px"}},[r("button",{on:{click:e.reStart}},[e._v("reStart")])])])},a=[],l=(r("b0c0"),r("fb6a"),r("a434"),r("d4ec")),h=r("bee2"),p=(r("d81d"),r("d3b7"),r("25f0"),function(){function e(t){Object(l["a"])(this,e),t.text?(this.text=t.text,this.number=e.textToNumber(t.text)):(this.number=t.number,this.text=e.numberToText(t.number)),this.type=t.type,this.selected=t.selected}return Object(h["a"])(e,[{key:"toString",value:function(){return this.text}}],[{key:"textToNumber",value:function(e){switch(e){case"3":return 3;case"4":return 4;case"5":return 5;case"6":return 6;case"7":return 7;case"8":return 8;case"9":return 9;case"10":case"0":case"T":case"t":return 10;case"11":case"j":case"J":return 11;case"12":case"q":case"Q":return 12;case"13":case"k":case"K":return 13;case"1":case"a":case"A":return 14;case"2":return 15;case"s":case"S":return 16;case"x":case"X":return 17}}},{key:"numberToText",value:function(e){switch(e){case 3:return"3";case 4:return"4";case 5:return"5";case 6:return"6";case 7:return"7";case 8:return"8";case 9:return"9";case 10:return"10";case 11:return"J";case 12:return"Q";case 13:return"K";case 14:return"A";case 15:return"2";case 16:return"S";case 17:return"X"}}},{key:"sortFunction",value:function(e,t){return e.number-t.number}},{key:"getObjByPokerList",value:function(t){if("pass"===t[0])return{type:"pass",poker:t};t.sort(e.sortFunction);for(var r=t[0],i=[r],n=[],s=1;s<t.length;s++)t[s].number!==r.number?(n.push(i),i=[t[s]]):i.push(t[s]),r=t[s];n.push(i);for(var o=[],a=[],l=[],h=[],p=0;p<n.length;p++)3===n[p].length?l.push(n[p]):2===n[p].length?a.push(n[p]):1===n[p].length?o.push(n[p]):4===n[p].length&&h.push(n[p]);if(1===t.length)return{type:"one",poker:t,one:t};if(2===t.length){if(1===a.length)return{type:"two",poker:t,two:t};if(16===t[0].number&&17===t[1].number)return{type:"sx",poker:t,sx:t}}else if(3===t.length){if(1===l.length)return{type:"three",poker:t,three:t}}else if(4===t.length){if(1===l.length)return{type:"threeWithOne",poker:t,three:l[0],one:o[0]};if(1===h.length)return{type:"four",poker:t,four:t}}else if(5===t.length){if(1===l.length&&1===a.length)return{type:"threeWithTwo",poker:t,three:l[0],two:a[0]}}else if(6===t.length){if(1===h.length&&2===o.length)return{type:"fourWithOne",poker:t,four:h[0]}}else if(8===t.length&&1===h.length&&2===a.length)return{type:"fourWithTwo",poker:t,four:h[0]};if(l.length>=2&&l[l.length-1][0].number<=14&&l[0][0].number+l.length-1===l[l.length-1][0].number){if(t.length-3*l.length===l.length)return{type:"threeWithOneList",poker:t,list:l.map((function(e){return{three:e}}))};if(a.length===l.length)return{type:"threeWithTwoList",poker:t,list:l.map((function(e){return{three:e}}))}}return t.length>=5&&t[t.length-1].number<=14&&o.length===t.length&&t[0].number+t.length-1===t[t.length-1].number?{type:"oneList",poker:t,list:o.map((function(e){return{one:e}}))}:t.length>=6&&t[t.length-1].number<=14&&t.length%2===0&&a.length===t.length/2&&t[0].number+t.length/2-1===t[t.length-1].number?{type:"twoList",poker:t,list:a.map((function(e){return{two:e}}))}:t.length>=6&&t[t.length-1].number<=14&&t.length%3===0&&l.length===t.length/3&&t[0].number+t.length/3-1===t[t.length-1].number&&{type:"threeList",poker:t,list:l.map((function(e){return{three:e}}))}}},{key:"pokerListToString",value:function(e){for(var t="",r=0;r<e.length;r++){var i=e[r].toString();t+=i}return t}}]),e}()),u=p,g=(r("99af"),r("0481"),r("4069"),function(){function e(t){Object(l["a"])(this,e),t=t||{},this.player=t.player,this.game=t.game}return Object(h["a"])(e,[{key:"classify",value:function(e){if(e.sort(this.sortFunction),0===e.length)return{1:[],2:[],3:[],4:[]};for(var t=e[0],r=[t],i=[],n=1;n<e.length;n++)e[n].number!==t.number?(i.push(r),r=[e[n]]):r.push(e[n]),t=e[n];i.push(r);for(var s=[],o=[],a=[],l=[],h=0;h<i.length;h++)3===i[h].length?a.push(i[h]):2===i[h].length?o.push(i[h]):1===i[h].length?s.push(i[h]):4===i[h].length&&l.push(i[h]);return{1:s,2:o,3:a,4:l}}},{key:"getClassifyObj",value:function(e){for(var t=[],r=[],i=[],n=e.slice(0),s=0;s<n.length;s++)if(15===n[s].number){var o=n.splice(s,1);s--,t.push(o[0])}else if(16===n[s].number){var a=n.splice(s,1);s--,r.push(a[0])}else if(17===n[s].number){var l=n.splice(s,1);s--,i.push(l[0])}var h=this.classify(n),p=h[1],u=h[2],g=h[3],y=h[4],f=y,c=[],m=[],k=[],b=[],d=[],v=[];if(g.length>0){for(var L=[g[0]],x=[],w=1;w<g.length;w++)g[w][0].number!==g[w-1][0].number+1?(x.push(L),L=[g[w]]):L.push(g[w]);x.push(L);for(var S=0;S<x.length;S++)x[S].length>1?m.push(x[S]):c.push(x[S][0])}if(u.length>0){for(var O=[u[0]],j=[],P=1;P<u.length;P++)u[P][0].number!==u[P-1][0].number+1?(j.push(O),O=[u[P]]):O.push(u[P]);j.push(O);for(var _=0;_<j.length;_++)j[_].length>2?b.push(j[_]):k=k.concat(j[_])}if(p.length>0){for(var T=[p[0]],B=[],F=1;F<p.length;F++)p[F][0].number!==p[F-1][0].number+1?(B.push(T),T=[p[F]]):T.push(p[F]);B.push(T);for(var W=0;W<B.length;W++)B[W].length>4?v.push(B[W]):d=d.concat(B[W])}if(d.length>0&&k.length>0){var z=0,N=0;while(1){if(z>d.length-1&&N>k.length-1)break;var J=void 0,M=void 0,R=[],A=[];if(0===d.length||z>d.length-1)break;0===k.length||N>k.length-1||d[z][0].number<k[N][0].number?(J=d[z][0].number,R.push(d[z]),z++):(J=k[N][0].number,A.push(k[N]),N++),M=J;do{if(z>d.length-1&&N>k.length-1)break;if(z<d.length&&d[z][0].number===M+1)R.push(d[z]),z++;else{if(!(N<k.length&&k[N][0].number===M+1))break;A.push(k[N]),N++}if(M+=1,M===J+4&&A.length<4){for(var C=[],D=0;D<R.length;D++){C.push(R[D]);for(var I=0;I<d.length;I++)if(d[I]===R[D]){d.splice(I,1);break}}for(var G=0;G<A.length;G++){for(var $=A[G],E=0;E<k.length;E++)if(k[E]===$){k.splice(E,1);break}var H=$.splice(0,1);C.push(H),d.push($)}C.sort(this.sortArray),v.push(C),d.sort(this.sortArray),z=0,N=0;break}}while(1)}}for(var Z=0;Z<d.length;Z++){for(var K=!1,Q=0;Q<v.length;Q++){if(d[Z][0].number===v[Q][0][0].number-1){v[Q].unshift(d[Z]),K=!0;break}if(d[Z][0].number===v[Q][v[Q].length-1][0].number+1){v[Q].push(d[Z]),K=!0;break}}K&&(d.splice(Z,1),Z--)}v.sort(this.sortList);for(var X=1;X<v.length;X++)v[X][0][0].number===v[X-1][v[X-1].length-1][0].number+1&&(v[X-1]=v[X-1].concat(v[X]),v.splice(X,1),X--);return{four:f,three:c,threeList:m,two:k,twoList:b,one:d,oneList:v,poker15:t,poker16:r,poker17:i}}},{key:"getByObj1",value:function(e){var t;return t=this.getSmallestObjByObj(e),t||(t=this.getByBoom(e)),t}},{key:"getByObj2",value:function(e){var t;return t=this.getByObj1(e),t||(t=this.getBySplit(e)),t}},{key:"getByObj3",value:function(e){var t;return t=this.getSmallestObjNoBig(e),t}},{key:"getByObj4",value:function(e){var t;return t="one"===e.type?this.getByObj5(e):this.getByObj2(e),t}},{key:"getByBoom",value:function(e){var t,r,i=this.player.classifyObj;if("sx"===e.type)return null;if(i.four.length>0)if("four"===e.type){for(var n=0;n<i.four.length;n++)if(i.four[n][0].number>e.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;i<r.length;i++)for(var n=0;n<r[i].poker.length;n++)t[r[i].poker[n].number]++;for(var s=this.game.deskPokerObj,o=0;o<s.poker.length;o++)t[s.poker[o].number]++;for(var a=this.player.pokerList,l=0;l<a.length;l++)t[a[l].number]++;var h=e.one[0].number;if(16===h){if(1!==t[17])return!1}else if(15===h){if(1!==t[16]||1!==t[17])return!1}else for(var p=h+1;p<=15;p++)if(4!==t[p])return!1;return!0}},{key:"playByTypys1",value:function(){for(var e=["threeWithTwoList","threeWithOneList","threeList","twoList","oneList","threeWithTwo","threeWithOne","three","two","one","four","sx"],t=0;t<e.length;t++){var r=this.getSmallestObjByType(e[t]);if(r){this.player.deleteFromPokerListAndSendByObj(r);break}}}},{key:"playByTypys2",value:function(){for(var e=["threeWithTwoList","threeWithOneList","threeList","twoList","oneList","threeWithTwo","threeWithOne","three","two","four","sx","one"],t=0;t<e.length;t++){var r=this.getSmallestObjByType(e[t],!0);if(r){this.player.deleteFromPokerListAndSendByObj(r);break}}}},{key:"playSmallestOne",value:function(){var e={type:"one",poker:[this.player.pokerList[0]],one:[this.player.pokerList[0]]};this.player.deleteFromPokerListAndSendByObj(e)}},{key:"playByAllType",value:function(){"dizhu"===this.player.type?1===this.player.next.pokerList.length||1===this.player.last.pokerList.length?this.playByTypys2():this.playByTypys1():"nongmin"===this.player.next.type?1===this.player.next.pokerList.length?this.playSmallestOne():this.playByTypys1():1===this.player.next.pokerList.length?this.playByTypys2():this.playByTypys1()}},{key:"getSmallestObjNoBig",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;s<t.one.length;s++)if(t.one[s][0].number>e.one[0].number){n=t.one[s];break}n&&(i={type:r,poker:n,one:n})}else if("two"===r){var o;if(t.two.length>0)for(var a=0;a<t.two.length;a++)if(t.two[a][0].number>e.two[0].number){o=t.two[a];break}o&&(i={type:r,poker:o,two:o})}else if("three"===r){var l;if(t.three.length>0)for(var h=0;h<t.three.length;h++)if(t.three[h][0].number>e.three[0].number){t.three[h][0].number<=13&&(l=t.three[h]);break}l&&(i={type:r,poker:l,three:l})}else if("threeWithOne"===r){var p,u;if(t.three.length>0&&t.three.length>0)for(var g=0;g<t.three.length;g++)if(t.three[g][0].number>e.three[0].number){t.three[g][0].number<=13&&(p=t.three[g]);break}t.one.length>0&&(u=t.one[0]),p&&u&&(i={type:r,poker:p.concat(u),three:p,one:u})}else if("threeWithTwo"===r){var y,f;if(t.three.length>0&&t.three.length>0)for(var c=0;c<t.three.length;c++)if(t.three[c][0].number>e.three[0].number){t.three[c][0].number<=13&&(y=t.three[c]);break}t.two.length>0&&(f=t.two[0]),y&&f&&(i={type:r,poker:y.concat(f),three:y,two:f})}return i}},{key:"getSmallestObjByObj",value:function(e){var t=this.player.classifyObj,r=e.type,i=null;if("one"===r){var n;if(t.one.length>0)for(var s=0;s<t.one.length;s++)if(t.one[s][0].number>e.one[0].number){n=t.one[s];break}n||(e.one[0].number<15&&t.poker15.length>0?n=t.poker15.slice(0,1):e.one[0].number<16&&t.poker16.length>0?n=t.poker16:e.one[0].number<17&&t.poker17.length>0&&(n=t.poker17)),n&&(i={type:r,poker:n,one:n})}else if("two"===r){var o;if(t.two.length>0)for(var a=0;a<t.two.length;a++)if(t.two[a][0].number>e.two[0].number){o=t.two[a];break}o||e.two[0].number<15&&t.poker15.length>1&&(o=t.poker15.slice(0,2)),o&&(i={type:r,poker:o,two:o})}else if("three"===r){var l;if(t.three.length>0)for(var h=0;h<t.three.length;h++)if(t.three[h][0].number>e.three[0].number){l=t.three[h];break}l||e.three[0].number<15&&3===t.poker15.length&&(l=t.poker15),l&&(i={type:r,poker:l,three:l})}else if("threeWithOne"===r){var p,u;if(t.three.length>0&&t.three.length>0)for(var g=0;g<t.three.length;g++)if(t.three[g][0].number>e.three[0].number){p=t.three[g];break}p||e.three[0].number<15&&3===t.poker15.length&&(p=t.poker15),t.one.length>0&&(u=t.one[0]),!u&&t.poker15.length>0&&(u=t.poker15.slice(0,1)),p&&u&&(i={type:r,poker:p.concat(u),three:p,one:u})}else if("threeWithTwo"===r){var y,f;if(t.three.length>0&&t.three.length>0)for(var c=0;c<t.three.length;c++)if(t.three[c][0].number>e.three[0].number){y=t.three[c];break}y||e.three[0].number<15&&3===t.poker15.length&&(y=t.poker15),t.two.length>0&&(f=t.two[0]),!f&&t.poker15.length>1&&(f=t.poker15.slice(0,2)),y&&f&&(i={type:r,poker:y.concat(f),three:y,two:f})}else if("four"===r){var m;if(t.four.length>0)for(var k=0;k<t.four.length;k++)if(t.four[k][0].number>e.four[0].number){m=t.four[k];break}m||4===t.poker15.length&&(m=t.poker15),m&&(i={type:r,poker:m,four:m})}else if("fourWithOne"===r){var b,d,v;if(t.four.length>0)for(var L=0;L<t.four.length;L++)if(t.four[L][0].number>e.four[0].number){b=t.four[L];break}t.one.length>1&&(d=t.one[0],v=t.one[1]),b&&d&&v&&(i={type:r,poker:b.concat(d).concat(v),four:b})}else if("fourWithTwo"===r){var x,w,S;if(t.four.length>0)for(var O=0;O<t.four.length;O++)if(t.four[O][0].number>e.four[0].number){x=t.four[O];break}t.two.length>1&&(w=t.two[0],S=t.two[1]),x&&w&&S&&(i={type:r,poker:x.concat(w).concat(S),four:x})}else if("threeWithOneList"===r){if(t.threeList.length>0)for(var j=0;j<t.threeList.length;j++)if(t.threeList[j].length===e.list.length&&t.threeList[j][0][0].number>e.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;T<t.threeList.length;T++)if(t.threeList[T].length===e.list.length&&t.threeList[T][0][0].number>e.list[0].three[0].number){if(t.two.length>=t.threeList[T].length){var B=t.threeList[T].flat(1),F=t.two.slice(0,t.threeList[T].length).flat(1);i={type:r,poker:B.concat(F),list:t.threeList[T].map((function(e){return{three:e}}))}}break}}else if("oneList"===r){if(t.oneList.length>0)for(var W=0;W<t.oneList.length;W++)if(t.oneList[W].length===e.list.length&&t.oneList[W][0][0].number>e.list[0].one[0].number){i={type:r,poker:t.oneList[W].flat(1),list:t.oneList[W].map((function(e){return{one:e}}))};break}}else if("twoList"===r){if(t.twoList.length>0)for(var z=0;z<t.twoList.length;z++)if(t.twoList[z].length===e.list.length&&t.twoList[z][0][0].number>e.list[0].two[0].number){i={type:r,poker:t.twoList[z].flat(1),list:t.twoList[z].map((function(e){return{two:e}}))};break}}else if("threeList"===r){if(t.threeList.length>0)for(var N=0;N<t.threeList.length;N++)if(t.threeList[N].length===e.list.length&&t.threeList[N][0][0].number>e.list[0].three[0].number){i={type:r,poker:t.threeList[N].flat(1),list:t.threeList[N].map((function(e){return{three:e}}))};break}}else if("sx"===r&&t.poker16.length>0&&t.poker17.length>0)return{type:r,poker:t.poker16.concat(t.poker17),sx:t.poker16.concat(t.poker17)};return i}},{key:"getSmallestObjByType",value:function(e,t){var r,i,n=this.player.classifyObj,s=null;if("one"===e)t?(r=n.poker17.length>0?n.poker17:n.poker16.length>0?n.poker16:n.poker15.length>0?n.poker15.slice(0,1):n.one[n.one.length-1],s={type:e,poker:r,one:r}):(n.one.length>0?i=n.one[0]:n.poker15.length>0&&n.poker15.length<4?i=n.poker15.slice(0,1):0!==n.poker17.length&&0!==n.poker16.length||(n.poker16.length>0?i=n.poker16:n.poker17.length>0&&(i=n.poker17)),i&&(s={type:e,poker:i,one:i}));else if("two"===e){var o;t?n.two.length>0?o=n.two[0]:2===n.poker15.length&&(o=n.poker15):n.two.length>0&&(o=n.two[0]),o&&(s={type:e,poker:o,two:o})}else if("three"===e){var a;t?n.three.length>0?a=n.three[0]:3===n.poker15.length&&(a=n.poker15):n.three.length>0&&(a=n.three[0]),a&&(s={type:e,poker:a,three:a})}else if("threeWithOne"===e){var l,h;n.three.length>0&&(l=n.three[0]),n.one.length>0&&(h=n.one[0]),t&&(l||3!==n.poker15.length||(l=n.poker15),h||1!==n.poker15.length||(h=n.poker15)),l&&h&&(s={type:e,poker:l.concat(h),three:l,one:h})}else if("four"===e){var p;t?n.four.length>0?p=n.four[0]:4===n.poker15.length&&(p=n.poker15):n.four.length>0&&(p=n.four[0]),p&&(s={type:e,poker:p,four:p})}else if("threeWithTwo"===e){var u,g;n.three.length>0&&(u=n.three[0]),n.two.length>0&&(g=n.two[0]),t&&(u||3!==n.poker15.length||(u=n.poker15),g||2!==n.poker15.length||(g=n.poker15)),u&&g&&(s={type:e,poker:u.concat(g),three:u,two:g})}else if("threeWithOneList"===e){if(n.threeList.length>0&&n.one.length>=n.threeList[0].length){var y=n.threeList[0].flat(1),f=n.one.slice(0,n.threeList[0].length).flat(1);s={type:e,poker:y.concat(f),list:n.threeList[0].map((function(e){return{three:e}}))}}}else if("threeWithTwoList"===e){if(n.threeList.length>0&&n.two.length>=n.threeList[0].length){var c=n.threeList[0].flat(1),m=n.two.slice(0,n.threeList[0].length).flat(1);s={type:e,poker:c.concat(m),list:n.threeList[0].map((function(e){return{three:e}}))}}}else if("oneList"===e)n.oneList.length>0&&(s={type:e,poker:n.oneList[0].flat(1),list:n.oneList[0].map((function(e){return{one:e}}))});else if("twoList"===e)n.twoList.length>0&&(s={type:e,poker:n.twoList[0].flat(1),list:n.twoList[0].map((function(e){return{two:e}}))});else if("threeList"===e)n.threeList.length>0&&(s={type:e,poker:n.threeList[0].flat(1),list:n.threeList[0].map((function(e){return{three:e}}))});else if("sx"===e&&n.poker16.length>0&&n.poker17.length>0)return{type:e,poker:n.poker16.concat(n.poker17),sx:n.poker16.concat(n.poker17)};return s}},{key:"getBySplit",value:function(e){for(var t=this.player.pokerList,r=t[0],i=[r],n=[],s=1;s<t.length;s++)t[s].number!==r.number?(n.push(i),i=[t[s]]):i.push(t[s]),r=t[s];n.push(i);for(var o=[],a=[],l=[],h=[],p=0;p<n.length;p++)3===n[p].length?l.push(n[p]):2===n[p].length?a.push(n[p]):1===n[p].length?o.push(n[p]):4===n[p].length&&h.push(n[p]);var u=e.type,g=null;if("two"===u){if(a.length>0){for(var y=0;y<a.length;y++)if(a[y][0].number>e.two[0].number){g={type:u,poker:a[y],two:a[y]};break}}else if(l.length>0)for(var f=0;f<l.length;f++)if(l[f][0].number>e.two[0].number){var c=l[f].slice(0,2);g={type:u,poker:c,two:c};break}}else if("threeWithOne"===u){if(l.length>0)for(var m=0;m<l.length;m++)if(l[m][0].number>e.three[0].number){var k=void 0;if(o.length>0)k=o[0];else if(a.length>0)k=a[0].slice(0,1);else if(l.length>0)for(var b=0;b<l.length;b++)b!==m&&(k=l[b].slice(0,1));k&&(g={type:u,poker:l[m].concat(k),three:l[m],one:k});break}}else if("threeWithTwo"===u){if(l.length>0)for(var d=0;d<l.length;d++)if(l[d][0].number>e.three[0].number){var v=void 0;if(a.length>0)v=a[0];else if(l.length>0)for(var L=0;L<l.length;L++)L!==d&&(v=l[L].slice(0,2));v&&(g={type:u,poker:l[d].concat(v),three:l[d],two:v});break}}else if("threeWithOneList"===u){if(l.length>=e.list.length)for(var x=0;x<l.length-e.list.length+1;x++)if(l[x][0].number>e.list[0].three[0].number&&l[x][0].number+e.list.length-1===l[x+e.list.length-1][0].number&&l[x+e.list.length-1][0].number<=14){for(var w=[],S=0;S<o.length&&w.length<e.list.length;S++)w.push(o[S]);for(var O=0;O<a.length&&w.length<e.list.length;O++)w.push(a[O].slice(0,1)),w.length<e.list.length&&w.push(a[O].slice(1,2));for(var j=0;j<l.length&&w.length<e.list.length;j++)j>=x&&j<=x+e.list.length-1||(w.push(l[j].slice(0,1)),w.length<e.list.length&&w.push(l[j].slice(1,2)),w.length<e.list.length&&w.push(l[j].slice(2,3)));if(w.length===e.list.length){for(var P=[],_=[],T=0;T<e.list.length;T++){P=P.concat(l[x+T]),P=P.concat(w[x]);var B={three:l[x+T],one:w[x]};_.push(B)}g={type:u,poker:P,list:_}}break}}else if("threeWithTwoList"===u){if(l.length>=e.list.length)for(var F=0;F<l.length-e.list.length+1;F++)if(l[F][0].number>e.list[0].three[0].number&&l[F][0].number+e.list.length-1===l[F+e.list.length-1][0].number&&l[F+e.list.length-1][0].number<=14){for(var W=[],z=0;z<a.length&&W.length<e.list.length;z++)W.push(a);for(var N=0;N<l.length&&W.length<e.list.length;N++)N>=F&&N<=F+e.list.length-1||W.push(l[N].slice(0,2));if(W.length===e.list.length){for(var J=[],M=[],R=0;R<e.list.length;R++){J=J.concat(l[F+R]),J=J.concat(W[F]);var A={three:l[F+R],two:W[F]};M.push(A)}g={type:u,poker:J,list:M}}break}}else if("oneList"===u){if(o.length>=e.list.length)for(var C=0;C<o.length-e.list.length+1;C++)if(o[C][0].number>e.list[0].one[0].number&&o[C][0].number+e.list.length-1===o[C+e.list.length-1][0].number&&o[C+e.list.length-1][0].number<=14){var D=o.slice(C,C+e.list.length);g={type:u,poker:D.flat(1),list:D.map((function(e){return{one:e}}))};break}}else if("twoList"===u){if(a.length>=e.list.length)for(var I=0;I<a.length-e.list.length+1;I++)if(a[I][0].number>e.list[0].two[0].number&&a[I][0].number+e.list.length-1===a[I+e.list.length-1][0].number&&a[I+e.list.length-1][0].number<=14){var G=a.slice(I,I+e.list.length);g={type:u,poker:G.flat(1),list:G.map((function(e){return{two:e}}))};break}}else if("threeList"===u&&l.length>=e.list.length)for(var $=0;$<l.length-e.list.length+1;$++)if(l[$][0].number>e.list[0].two[0].number&&l[$][0].number+e.list.length-1===l[$+e.list.length-1][0].number&&l[$+e.list.length-1][0].number<=14){var E=l.slice($,$+e.list.length);g={type:u,poker:E.flat(1),list:E.map((function(e){return{three:e}}))};break}return g}},{key:"sortFunction",value:function(e,t){return e.number-t.number}},{key:"sortArray",value:function(e,t){return e[0].number-t[0].number}},{key:"sortList",value:function(e,t){return e[0][0].number-t[0][0].number}}]),e}()),y=g,f=function(){function e(t){Object(l["a"])(this,e),t=t||{},this.ready=!1,this.jiaoFen=0,this.pokerList=[],this.name=t.name||"noName"+Math.random(),this.type=t.type||"nongmin",this.last=null,this.next=null,this.isRobot=t.isRobot,this.game=t.game,this.ai=new y({player:this,game:t.game}),this.classifyObj=null,this.lastSendObj=null,this.isRobot&&this.loopRobot()}return Object(h["a"])(e,[{key:"setJiaoFen",value:function(e){this.jiaoFen=e,this.game.someOneJiaoFen()}},{key:"loopRobot",value:function(){var e=this;e.isRobot&&(e.ready||e.setReady()),"jiaoFen"===e.game.stage&&e.game.currentJiaoFenPlayer===e&&e.setJiaoFen(3),setTimeout((function(){e.loopRobot()}),2e3)}},{key:"setReady",value:function(){this.ready=!0,this.game.setReady()}},{key:"reset",value:function(){this.ready=!1,this.jiaoFen=0,this.pokerList=[],this.type="nongmin",this.classifyObj=null,this.lastSendObj=null}},{key:"getClassifyObj",value:function(){this.classifyObj=this.ai.getClassifyObj(this.pokerList),console.log(this.classifyObj)}},{key:"addPoker",value:function(e){this.pokerList.push(e)}},{key:"sortPoker",value:function(){this.pokerList.sort(this.sortFunction)}},{key:"sortFunction",value:function(e,t){return e.number-t.number}},{key:"getLastObj",value:function(){var e=this.last.lastSendObj;return!!(e&&"pass"!==e.type||(e=this.next.lastSendObj,e&&"pass"!==e.type))&&e}},{key:"playByAI",value:function(){var e=this;e.getClassifyObj(),setTimeout((function(){var t=e.getLastObj();t?e.ai.playByObj(t):e.ai.playByAllType()}),1e3)}},{key:"sendPoker",value:function(e){e.player=this,this.game.clearDesk(),this.lastSendObj=e,this.game.deskPokerObj=e,this.game.next()}},{key:"deleteFromPokerListAndSendByObj",value:function(e){var t=[];if("pass"===e.type)return this.sendPoker(e),!0;for(var r=e.poker,i=0;i<r.length;i++){var n=this.getAndDeleteOnePokerByNumber(r[i].number);if(!n)return this.listBackToPokerList(t),!1;t.push(n)}return this.sendPoker(e),!0}},{key:"getListByList",value:function(e){var t=[];if("pass"===e[0])return["pass"];for(var r=0;r<e.length;r++){var i=e[r],n=this.getAndDeleteOnePokerByNumber(i.number);if(!n)return this.listBackToPokerList(t),!1;t.push(n)}return t}},{key:"getListByString",value:function(e){var t=[];if("pass"===e)return["pass"];for(var r=0;r<e.length;r++){var i=e[r],n=u.textToNumber(i),s=this.getAndDeleteOnePokerByNumber(n);if(!s)return this.listBackToPokerList(t),!1;t.push(s)}return t}},{key:"listBackToPokerList",value:function(e){while(e.length>0){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;t<this.pokerList.length;t++)if(this.pokerList[t].number===e)return this.pokerList.splice(t,1)[0];return!1}},{key:"pokerListToString",value:function(){var e=u.pokerListToString(this.pokerList);return e}},{key:"lastSendObjToString",value:function(){if(!this.lastSendObj)return"";var e=u.pokerListToString(this.lastSendObj.poker);return e}}]),e}(),c=f,m=function(){function e(){Object(l["a"])(this,e),this.playerList=[],this.pokerList=[],this.deskPokerObj=null,this.oldPokerList=[],this.currentPlayer=null,this.currentJiaoFenPlayer=null,this.jiaoFenCount=0,this.dizhu=null,this.MaxSecond=60,this.second=this.MaxSecond,this.stage="ready",this.init()}return Object(h["a"])(e,[{key:"init",value:function(){this.initPokerList(),this.initPlayerList()}},{key:"setReady",value:function(){this.playerList[0]&&this.playerList[0].ready&&this.playerList[1]&&this.playerList[1].ready&&this.playerList[2]&&this.playerList[2].ready&&(this.sendPoker(),this.startJiaoFen())}},{key:"startJiaoFen",value:function(){this.stage="jiaoFen";var e=this.getRandomIntInclusive(0,2);this.currentJiaoFenPlayer=this.playerList[e]}},{key:"someOneJiaoFen",value:function(){var e=this;this.jiaoFenCount++,3!==this.jiaoFenCount?this.currentJiaoFenPlayer=this.currentJiaoFenPlayer.next:setTimeout((function(){e.setDiZhu()}),1e3)}},{key:"setDiZhu",value:function(){var e=this.playerList.slice(0).sort(this.sortByJiaoFen),t=e[0];t.type="dizhu",this.dizhu=t,this.start()}},{key:"sortByJiaoFen",value:function(e,t){return t.jiaoFen-e.jiaoFen}},{key:"resetTime",value:function(){this.second=this.MaxSecond}},{key:"timeLoop",value:function(){if("play"===this.stage){this.second--,0===this.second&&this.timeout();var e=this;setTimeout((function(){e.timeLoop()}),1e3)}}},{key:"timeout",value:function(){this.currentPlayer.playByString("pass")}},{key:"start",value:function(){this.stage="play",this.timeLoop(),this.currentPlayer=this.dizhu,this.currentPlayer.isRobot&&this.currentPlayer.playByAI()}},{key:"reset",value:function(){this.playerList[0].reset(),this.playerList[1].reset(),this.playerList[2].reset(),this.pokerList=[],this.deskPokerObj=null,this.oldPokerList=[],this.currentPlayer=null,this.currentJiaoFenPlayer=null,this.jiaoFenCount=0,this.dizhu=null,this.second=this.MaxSecond,this.stage="ready",this.initPokerList()}},{key:"next",value:function(){var e=this.checkGameOver();e?this.gameOver():(this.resetTime(),this.currentPlayer=this.currentPlayer.next,this.currentPlayer.isRobot&&this.currentPlayer.playByAI())}},{key:"gameOver",value:function(){alert("游戏结束! "+this.currentPlayer.name+" ["+this.currentPlayer.type+"] 胜!"),this.reset()}},{key:"checkGameOver",value:function(){if(0===this.currentPlayer.pokerList.length)return!0}},{key:"clearDesk",value:function(){this.deskPokerObj&&(this.oldPokerList.push(this.deskPokerObj),this.deskPokerObj=null)}},{key:"sendDiZhuPoker",value:function(){do{var e=this.pokerList.splice(0,1)[0];this.dizhu.addPoker(e)}while(this.pokerList.length>0);this.dizhu.sortPoker()}},{key:"sendPoker",value:function(){var e=this.playerList[0];do{var t=this.getRandomIntInclusive(0,this.pokerList.length-1),r=this.pokerList.splice(t,1)[0];e.addPoker(r),e=e.next}while(this.pokerList.length>3);for(var i=0;i<this.playerList.length;i++)this.playerList[i].sortPoker()}},{key:"initPlayerList",value:function(){this.playerList=[];var e=new c({name:"player",isRobot:!1,game:this}),t=new c({name:"机器人1",isRobot:!0,game:this}),r=new c({name:"机器人2",isRobot:!0,game:this});this.playerList=[e,t,r],this.playerList[0].next=this.playerList[1],this.playerList[1].next=this.playerList[2],this.playerList[2].next=this.playerList[0],this.playerList[0].last=this.playerList[2],this.playerList[1].last=this.playerList[0],this.playerList[2].last=this.playerList[1]}},{key:"initPokerList",value:function(){this.pokerList=[];for(var e=3;e<=15;e++)for(var t=0;t<4;t++){var r=new u({number:e,type:t});this.pokerList.push(r)}for(var i=16;i<=17;i++){var n=new u({number:i});this.pokerList.push(n)}}},{key:"pokerListToString",value:function(){var e="";e+=u.pokerListToString(this.pokerList),e+="\n";for(var t=0;t<this.oldPokerList.length;t++)e+=u.pokerListToString(this.oldPokerList[t].poker),t<this.oldPokerList.length-1&&(e+=",");return e+="\n",e+=this.deskPokerObj?u.pokerListToString(this.deskPokerObj.poker):"",e}},{key:"getRandomIntInclusive",value:function(e,t){return Math.floor(Math.random()*(t-e+1))+e}}]),e}(),k=m,b={name:"HelloWorld",data:function(){return{data:"fuck1",game:new k,playerStr:""}},computed:{player2Str:function(){var e=this.game,t=2;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),"last : "+e.playerList[t].lastSendObjToString()]},player1Str:function(){var e=this.game,t=1;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),"last : "+e.playerList[t].lastSendObjToString()]},player0Str:function(){var e=this.game,t=0;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),"last : "+e.playerList[t].lastSendObjToString()]},deskStr:function(){var e=this.game;return["desk",e.pokerListToString()]}},mounted:function(){this.data=this.game.playerList[1].name},methods:{reDraw:function(){},sendPoker:function(){var e=this.game,t=e.playerList[0].playByString(this.playerStr);t&&(this.playerStr="")},pass:function(){this.game.playerList[0].playByString("pass")},reStart:function(){this.game=new k,this.playerStr=""}}},d=b,v=r("2877"),L=Object(v["a"])(d,o,a,!1,null,"62298b0c",null),x=L.exports,w=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("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("+r("00a8")+")"}},[i("audio",{style:{marginLeft:e.buttonMarginLeft+"px"},attrs:{muted:"",autoplay:"",loop:"",controls:""}},[i("source",{attrs:{src:r("e791")}}),e._v(" 您的浏览器不支持 audio 元素。 ")]),i("div",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}],staticStyle:{width:"300px",height:"300px",float:"left",position:"fixed",left:"600px",top:"0px","background-color":"aliceblue","text-align":"center"}},[i("div",{staticStyle:{width:"300px","word-wrap":"break-word"}},[e._v(" 已出的牌: "),i("br"),e._v(" "+e._s(e.deskStr[1])+" ")])]),i("div",{directives:[{name:"show",rawName:"v-show",value:"ready"===e.game.stage,expression:"game.stage==='ready'"}],staticStyle:{"font-size":"20px",color:"white",position:"fixed",bottom:"200px","z-index":"999"},style:{marginLeft:e.playerMarginLeft-40+"px"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:!e.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:e.setReady}},[e._v(e._s(e.game.playerList[0].ready?"已准备":"准备"))]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.playerList[0].ready,expression:"game.playerList[0].ready"}],staticStyle:{color:"red",width:"80px",border:"solid","border-radius":"4px",position:"absolute"}},[e._v(" "+e._s(e.game.playerList[0].ready?"已准备":"未准备")+" ")])]),i("div",{directives:[{name:"show",rawName:"v-show",value:"jiaoFen"===e.game.stage&&e.game.currentJiaoFenPlayer===e.game.playerList[0],expression:"game.stage==='jiaoFen'&&game.currentJiaoFenPlayer===game.playerList[0]"}],staticStyle:{"font-size":"20px",color:"white",position:"fixed",bottom:"200px","z-index":"999"},style:{marginLeft:e.playerMarginLeft-40+"px"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:!0,expression:"true"}],staticStyle:{"font-size":"40px",height:"60px","line-height":"30px","border-radius":"4px","background-color":"lawngreen"},on:{mousedown:function(t){return e.game.playerList[0].setJiaoFen(0)}}},[e._v("不叫")]),i("button",{directives:[{name:"show",rawName:"v-show",value:!0,expression:"true"}],staticStyle:{"font-size":"40px",height:"60px","line-height":"30px","border-radius":"4px","background-color":"lawngreen"},on:{mousedown:function(t){return e.game.playerList[0].setJiaoFen(1)}}},[e._v("1分")]),i("button",{directives:[{name:"show",rawName:"v-show",value:!0,expression:"true"}],staticStyle:{"font-size":"40px",height:"60px","line-height":"30px","border-radius":"4px","background-color":"lawngreen"},on:{mousedown:function(t){return e.game.playerList[0].setJiaoFen(2)}}},[e._v("2分")]),i("button",{directives:[{name:"show",rawName:"v-show",value:!0,expression:"true"}],staticStyle:{"font-size":"40px",height:"60px","line-height":"30px","border-radius":"4px","background-color":"lawngreen"},on:{mousedown:function(t){return e.game.playerList[0].setJiaoFen(3)}}},[e._v("3分")])]),i("div",{directives:[{name:"show",rawName:"v-show",value:"play"===e.game.stage,expression:"game.stage==='play'"}],staticStyle:{color:"white",position:"fixed",bottom:"0",width:"100%",height:"200px","line-height":"200px"},style:{marginLeft:e.playerMarginLeft-150+"px"}},[e._v(" 你是 "),i("span",{staticStyle:{color:"red","font-size":"20px"}},[e._v(e._s("nongmin"===e.game.playerList[0].type?"农民":"地主"))])]),i("div",{staticStyle:{position:"fixed",bottom:"0",width:"100%",height:"200px"},style:{marginLeft:e.playerMarginLeft+"px"}},e._l(e.game.playerList[0].pokerList,(function(t){return i("div",{staticClass:"poker pokerDesk",class:{selected:t.selected,s:16===t.number,x:17===t.number},on:{mouseenter:function(r){return e.enter(r,t)},mousedown:function(r){return e.pickPoker(t)}}},[i("span",{directives:[{name:"show",rawName:"v-show",value:t.number<16,expression:"item.number<16"}]},[e._v(" "+e._s(t.text)+" ")])])})),0),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.currentPlayer===e.game.playerList[0],expression:"game.currentPlayer===game.playerList[0]"}],staticStyle:{position:"fixed",bottom:"200px",width:"100%",height:"100px","text-align":"left"}},[i("div",{staticStyle:{width:"400px",height:"60px"},style:{marginLeft:e.buttonMarginLeft+"px"}},[i("button",{staticStyle:{height:"60px","border-radius":"4px",float:"left","font-size":"40px","background-color":"red"},on:{click:e.pass}},[e._v("不出")]),i("button",{staticStyle:{height:"60px","border-radius":"4px",float:"right","font-size":"40px","background-color":"lawngreen"},on:{click:e.sendPoker2}},[e._v("出牌")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.currentPlayer===e.game.playerList[0],expression:"game.currentPlayer===game.playerList[0]"}],staticStyle:{color:"red",width:"150px",border:"solid","border-radius":"4px",float:"left","margin-left":"20px"}},[e._v(" 请在"+e._s(e.game.second)+"秒内出牌 ")])])]),e.game.playerList[0].lastSendObj&&e.game.playerList[0].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",bottom:"350px",width:"100%",height:"200px"},style:{marginLeft:e.deskPokerMarginLeft+"px"}},e._l(e.game.playerList[0].lastSendObj.poker,(function(t){return i("div",{staticClass:"pokerDesk",class:{s:16===t.number,x:17===t.number}},[i("span",{directives:[{name:"show",rawName:"v-show",value:t.number<16,expression:"item.number<16"}]},[e._v(" "+e._s(t.text)+" ")])])})),0):e._e(),e.game.playerList[0].lastSendObj&&!e.game.playerList[0].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",bottom:"350px",width:"100%",height:"200px"},style:{marginLeft:e.deskPokerMarginLeft+"px"}},[i("div",{staticStyle:{height:"100%",width:"100px",float:"left","margin-left":"-50px","font-size":"50px",color:"#ff0000"}},[e._v(" pass ")])]):e._e(),i("div",{staticStyle:{position:"fixed",top:"40px",left:"20px",height:"200px",width:"100px",border:"solid 1px","border-radius":"8px","background-color":"azure","text-align":"center"}},[i("p",{directives:[{name:"show",rawName:"v-show",value:"play"===e.game.stage,expression:"game.stage==='play'"}],staticStyle:{color:"red","font-size":"20px"}},[e._v(" "+e._s("nongmin"===e.game.playerList[2].type?"农民":"地主")+" ")]),i("p",[e._v(" "+e._s(e.game.playerList[2].name)+" ")]),i("p",[e._v(" 剩余 "+e._s(e.game.playerList[2].pokerList.length)+"")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.currentPlayer===e.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"}},[e._v(" 请在"+e._s(e.game.second)+"秒内出牌 ")]),i("div",{directives:[{name:"show",rawName:"v-show",value:"ready"===e.game.stage,expression:"game.stage==='ready'"}],staticStyle:{color:"red",width:"80px",border:"solid","border-radius":"4px",position:"absolute",bottom:"-50px",left:"0","z-index":"999"}},[e._v(" "+e._s(e.game.playerList[2].ready?"已准备":"未准备")+" ")])]),e.game.playerList[2].lastSendObj&&e.game.playerList[2].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",top:"100px",left:"200px",height:"200px"}},e._l(e.game.playerList[2].lastSendObj.poker,(function(t){return i("div",{staticClass:"pokerDesk",class:{s:16===t.number,x:17===t.number}},[i("span",{directives:[{name:"show",rawName:"v-show",value:t.number<16,expression:"item.number<16"}]},[e._v(" "+e._s(t.text)+" ")])])})),0):e._e(),e.game.playerList[2].lastSendObj&&!e.game.playerList[2].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",top:"100px",left:"200px",height:"200px"}},[i("div",{staticStyle:{height:"100%",width:"100px",float:"left","margin-left":"-50px","font-size":"50px",color:"#ff0000"}},[e._v(" pass ")])]):e._e(),"jiaoFen"===e.game.stage?i("div",{staticStyle:{position:"fixed",top:"100px",left:"200px",height:"200px"}},[i("div",{staticStyle:{height:"100%",width:"100px",float:"left","margin-left":"-50px","font-size":"50px",color:"#ff0000"}},[e._v(" "+e._s(e.game.playerList[2].jiaoFen)+"")])]):e._e(),i("div",{staticStyle:{position:"fixed",top:"40px",right:"20px",height:"200px",width:"100px",border:"solid 1px","border-radius":"8px","background-color":"azure","text-align":"center"}},[i("p",{directives:[{name:"show",rawName:"v-show",value:"play"===e.game.stage,expression:"game.stage==='play'"}],staticStyle:{color:"red","font-size":"20px"}},[e._v(" "+e._s("nongmin"===e.game.playerList[1].type?"农民":"地主")+" ")]),i("p",[e._v(" "+e._s(e.game.playerList[1].name)+" ")]),i("p",[e._v(" 剩余 "+e._s(e.game.playerList[1].pokerList.length)+"")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.game.currentPlayer===e.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"}},[e._v(" 请在"+e._s(e.game.second)+"秒内出牌 ")]),i("div",{directives:[{name:"show",rawName:"v-show",value:"ready"===e.game.stage,expression:"game.stage==='ready'"}],staticStyle:{color:"red",width:"80px",border:"solid","border-radius":"4px",position:"absolute",bottom:"-50px",right:"0","z-index":"999"}},[e._v(" "+e._s(e.game.playerList[1].ready?"已准备":"未准备")+" ")])]),e.game.playerList[1].lastSendObj&&e.game.playerList[1].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",top:"100px",right:"200px",height:"200px"}},e._l(e.game.playerList[1].lastSendObj.poker,(function(t){return i("div",{staticClass:"pokerDesk",class:{s:16===t.number,x:17===t.number}},[i("span",{directives:[{name:"show",rawName:"v-show",value:t.number<16,expression:"item.number<16"}]},[e._v(" "+e._s(t.text)+" ")])])})),0):e._e(),e.game.playerList[1].lastSendObj&&!e.game.playerList[1].lastSendObj.poker[0].text?i("div",{staticStyle:{position:"fixed",top:"100px",right:"200px",height:"200px"}},[i("div",{staticStyle:{height:"100%",width:"100px",float:"left","margin-left":"-50px","font-size":"50px",color:"#ff0000"}},[e._v(" pass ")])]):e._e(),"jiaoFen"===e.game.stage?i("div",{staticStyle:{position:"fixed",top:"100px",right:"200px",height:"200px"}},[i("div",{staticStyle:{height:"100%",width:"100px",float:"left","margin-left":"-50px","font-size":"50px",color:"#ff0000"}},[e._v(" "+e._s(e.game.playerList[1].jiaoFen)+"")])]):e._e()])},S=[],O={name:"HelloWorld",data:function(){return{data:"fuck1",game:new k,playerStr:"",pokerList:[]}},computed:{playerMarginLeft:function(){return(window.innerWidth-50*this.game.playerList[0].pokerList.length)/2},deskPokerMarginLeft:function(){return(window.innerWidth-50*this.game.playerList[0].lastSendObj.poker.length)/2},buttonMarginLeft:function(){return(window.innerWidth-400)/2},deskPoker:function(){return this.game.deskPokerObj&&this.game.deskPokerObj.poker&&this.game.deskPokerObj.poker[0]&&this.game.deskPokerObj.poker[0].text?this.game.deskPokerObj.poker:[]},player2Str:function(){var e=this.game,t=2;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),e.playerList[t].lastSendObjToString()]},player1Str:function(){var e=this.game,t=1;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),e.playerList[t].lastSendObjToString()]},player0Str:function(){var e=this.game,t=0;return[e.playerList[t].name+" : "+e.playerList[t].type+" : "+e.playerList[t].pokerList.length,e.playerList[t].pokerListToString(),e.playerList[t].lastSendObjToString()]},deskStr:function(){var e=this.game;return["desk",e.pokerListToString()]}},mounted:function(){this.data=this.game.playerList[1].name,window.game=this.game},methods:{setReady:function(){var e=this;e.game.playerList[0].setReady()},enter:function(e,t){1===e.buttons&&this.pickPoker(t)},pickPoker:function(e){if(e.selected){e.selected=!1;for(var t=0;t<this.pokerList.length;t++)this.pokerList[t]===e&&this.pokerList.splice(t,1)}else e.selected=!0,this.pokerList.push(e)},sendPoker2:function(){var e=this.game,t=e.playerList[0].playByPokerList(this.pokerList);t&&(this.pokerList=[])},sendPoker:function(){var e=this.game,t=e.playerList[0].playByString(this.playerStr);t&&(this.playerStr="")},pass:function(){this.game.playerList[0].playByString("pass")},reStart:function(){this.game=new k,this.playerStr=""}}},j=O,P=(r("83b1"),Object(v["a"])(j,w,S,!1,null,"7bd525ec",null)),_=P.exports,T={name:"App",components:{HelloWorld:x,Game:_}},B=T,F=Object(v["a"])(B,n,s,!1,null,null,null),W=F.exports;i["a"].config.productionTip=!1,new i["a"]({render:function(e){return e(W)}}).$mount("#app")},"6c97":function(e,t,r){},"83b1":function(e,t,r){"use strict";var i=r("6c97"),n=r.n(i);n.a},e791:function(e,t,r){e.exports=r.p+"media/bgm.8035c6a0.mp3"}});
//# sourceMappingURL=app.92687945.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/img/scene.jpg","webpack:///./src/App.vue?4625","webpack:///./src/components/HelloWorld.vue?f3a1","webpack:///./src/doudizhu/Poker.js","webpack:///./src/doudizhu/AI.js","webpack:///./src/doudizhu/Player.js","webpack:///./src/doudizhu/Game.js","webpack:///src/components/HelloWorld.vue","webpack:///./src/components/HelloWorld.vue?ddb2","webpack:///./src/components/HelloWorld.vue","webpack:///./src/components/Game.vue?b295","webpack:///src/components/Game.vue","webpack:///./src/components/Game.vue?bf2b","webpack:///./src/components/Game.vue","webpack:///src/App.vue","webpack:///./src/App.vue?a7d1","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/components/Game.vue?fcf2","webpack:///./src/audio/bgm.mp3"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","staticStyle","_v","_s","player2Str","player1Str","player0Str","directives","rawName","expression","domProps","on","$event","target","composing","playerStr","sendPoker","pass","deskStr","reStart","Poker","param","text","number","textToNumber","numberToText","type","selected","a","b","pokerList","poker","sort","sortFunction","lastPoker","curList","lists","Count1List","Count2List","Count3List","Count4List","one","two","sx","three","four","list","map","item","str","toString","AI","player","game","1","2","3","4","pokerList0","poker15","poker16","poker17","obj","classify","threeList","twoList","oneList","i2","i3","curList2","lists2","i4","i5","concat","curList1","lists1","i6","i7","oneIndex","twoIndex","startN","lastN","ones","twos","cmbList","i8","i9","pokers","j1","sortArray","i10","find1","i11","unshift","sortList","i12","lastObj","getSmallestObjByObj","getByBoom","getByObj1","getBySplit","getSmallestObjNoBig","getByObj5","getByObj2","classifyObj","getByObj3","deleteFromPokerListAndSendByObj","next","last","getByObj4","getByObj6","canNotGet","isPlayerCanNotGetOne","allPoker","5","6","7","8","9","10","11","12","13","14","15","16","17","oldPokerList","deskPokerObj","num","types","getSmallestObjByType","playByTypys2","playByTypys1","playSmallestOne","pokerThree","pokerFour","one1","one2","two1","two2","flat","pokerOne","pokerTwo","oneBigToSmall","threeOne","Player","ready","jiaoFen","Math","random","isRobot","ai","lastSendObj","loopRobot","fen","someOneJiaoFen","that","setReady","stage","currentJiaoFenPlayer","setJiaoFen","setTimeout","getClassifyObj","console","log","getLastObj","playByObj","playByAllType","clearDesk","tempList","getAndDeleteOnePokerByNumber","listBackToPokerList","po","sortPoker","getObjByPokerList","comp","compareTwoObj","alert","pokerListToString","currentPlayer","getListByList","handleList","getListByString","obj1","obj2","Game","playerList","jiaoFenCount","dizhu","MaxSecond","second","init","initPokerList","initPlayerList","startJiaoFen","index","getRandomIntInclusive","setDiZhu","sortByJiaoFen","start","timeout","timeLoop","playByString","playByAI","reset","over","checkGameOver","gameOver","resetTime","addPoker","player0","player1","player2","min","max","floor","computed","mounted","methods","reDraw","component","style","backgroundImage","marginLeft","buttonMarginLeft","playerMarginLeft","_l","staticClass","class","x","enter","pickPoker","sendPoker2","deskPokerMarginLeft","_e","components","HelloWorld","Vue","config","productionTip","render","h","App","$mount"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAKnBhB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU6B,QAGnC,IAAIC,EAASF,EAAiB5B,GAAY,CACzCK,EAAGL,EACH+B,GAAG,EACHF,QAAS,IAUV,OANAf,EAAQd,GAAUW,KAAKmB,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOC,GAAI,EAGJD,EAAOD,QAKfH,EAAoBM,EAAIlB,EAGxBY,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,SAASL,EAASM,EAAMC,GAC3CV,EAAoBW,EAAER,EAASM,IAClC3B,OAAO8B,eAAeT,EAASM,EAAM,CAAEI,YAAY,EAAMC,IAAKJ,KAKhEV,EAAoBe,EAAI,SAASZ,GACX,qBAAXa,QAA0BA,OAAOC,aAC1CnC,OAAO8B,eAAeT,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DpC,OAAO8B,eAAeT,EAAS,aAAc,CAAEe,OAAO,KAQvDlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKxC,OAAOyC,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBxC,OAAO8B,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBQ,EAAEc,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRtB,EAAoB0B,EAAI,SAAStB,GAChC,IAAIM,EAASN,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAJ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASgB,EAAQC,GAAY,OAAO9C,OAAOC,UAAUC,eAAeC,KAAK0C,EAAQC,IAGzG5B,EAAoB6B,EAAI,GAExB,IAAIC,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAW3C,KAAKsC,KAAKK,GAC5CA,EAAW3C,KAAOf,EAClB0D,EAAaA,EAAWG,QACxB,IAAI,IAAItD,EAAI,EAAGA,EAAImD,EAAWjD,OAAQF,IAAKP,EAAqB0D,EAAWnD,IAC3E,IAAIU,EAAsB2C,EAI1BzC,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,gECvJTW,EAAOD,QAAU,IAA0B,0B,mGCAvC,EAAS,WAAa,IAAI+B,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,MAAM,CAAC,GAAK,QAAQ,CAACF,EAAG,SAAS,IACvIG,EAAkB,GCDlB,EAAS,WAAa,IAAIP,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,QAAQ,OAAS,QAAQ,MAAQ,OAAO,SAAW,QAAQ,KAAO,MAAM,IAAM,MAAM,mBAAmB,YAAY,aAAa,WAAW,CAACJ,EAAG,OAAO,CAACJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIW,WAAW,IAAI,KAAKP,EAAG,MAAMJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIW,WAAW,IAAI,KAAKP,EAAG,MAAMA,EAAG,MAAMJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIW,WAAW,IAAI,SAASP,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,QAAQ,OAAS,QAAQ,MAAQ,OAAO,SAAW,QAAQ,KAAO,QAAQ,IAAM,MAAM,mBAAmB,YAAY,aAAa,WAAW,CAACJ,EAAG,OAAO,CAACJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIY,WAAW,IAAI,KAAKR,EAAG,MAAMJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIY,WAAW,IAAI,KAAKR,EAAG,MAAMA,EAAG,MAAMJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIY,WAAW,IAAI,SAASR,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,QAAQ,OAAS,QAAQ,MAAQ,OAAO,SAAW,QAAQ,KAAO,QAAQ,IAAM,QAAQ,mBAAmB,YAAY,aAAa,WAAW,CAACJ,EAAG,OAAO,CAACJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIa,WAAW,IAAI,KAAKT,EAAG,MAAMJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIa,WAAW,IAAI,KAAKT,EAAG,MAAMA,EAAG,MAAMJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIa,WAAW,IAAI,OAAOT,EAAG,MAAM,CAACA,EAAG,QAAQ,CAACU,WAAW,CAAC,CAACvC,KAAK,QAAQwC,QAAQ,UAAU/B,MAAOgB,EAAa,UAAEgB,WAAW,cAAcV,MAAM,CAAC,KAAO,QAAQW,SAAS,CAAC,MAASjB,EAAa,WAAGkB,GAAG,CAAC,MAAQ,SAASC,GAAWA,EAAOC,OAAOC,YAAqBrB,EAAIsB,UAAUH,EAAOC,OAAOpC,WAAUoB,EAAG,SAAS,CAACc,GAAG,CAAC,MAAQlB,EAAIuB,YAAY,CAACvB,EAAIS,GAAG,UAAUL,EAAG,SAAS,CAACc,GAAG,CAAC,MAAQlB,EAAIwB,OAAO,CAACxB,EAAIS,GAAG,cAAcL,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,QAAQ,OAAS,QAAQ,MAAQ,OAAO,SAAW,QAAQ,KAAO,QAAQ,IAAM,MAAM,mBAAmB,YAAY,aAAa,WAAW,CAACJ,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,QAAQ,YAAY,eAAe,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIyB,QAAQ,IAAI,KAAKrB,EAAG,MAAMJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIyB,QAAQ,IAAI,SAASrB,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,KAAO,QAAQ,IAAM,UAAU,CAACJ,EAAG,SAAS,CAACc,GAAG,CAAC,MAAQlB,EAAI0B,UAAU,CAAC1B,EAAIS,GAAG,kBAC/6D,EAAkB,G,wDCDhBkB,G,yCACF,WAAYC,GAAO,uBACZA,EAAMC,MACL5B,KAAK4B,KAAOD,EAAMC,KAClB5B,KAAK6B,OAASH,EAAMI,aAAaH,EAAMC,QAEvC5B,KAAK6B,OAASF,EAAME,OACpB7B,KAAK4B,KAAOF,EAAMK,aAAaJ,EAAME,SAEzC7B,KAAKgC,KAAOL,EAAMK,KAClBhC,KAAKiC,SAAWN,EAAMM,S,0DAuQtB,OAAOjC,KAAK4B,Q,oCApQIA,GAChB,OAAQA,GACJ,IAAK,IAAK,OAAO,EACjB,IAAK,IAAK,OAAO,EACjB,IAAK,IAAK,OAAO,EACjB,IAAK,IAAK,OAAO,EACjB,IAAK,IAAK,OAAO,EACjB,IAAK,IAAK,OAAO,EACjB,IAAK,IAAK,OAAO,EACjB,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IAAK,OAAO,GACjB,IAAK,KACL,IAAK,IACL,IAAK,IAAK,OAAO,GACjB,IAAK,KACL,IAAK,IACL,IAAK,IAAK,OAAO,GACjB,IAAK,KACL,IAAK,IACL,IAAK,IAAK,OAAO,GACjB,IAAK,IACL,IAAK,IACL,IAAK,IAAK,OAAO,GACjB,IAAK,IAAK,OAAO,GACjB,IAAK,IACL,IAAK,IAAK,OAAO,GACjB,IAAK,IACL,IAAK,IAAK,OAAO,M,mCAILC,GAChB,OAAQA,GACJ,KAAK,EAAG,MAAO,IACf,KAAK,EAAG,MAAO,IACf,KAAK,EAAG,MAAO,IACf,KAAK,EAAG,MAAO,IACf,KAAK,EAAG,MAAO,IACf,KAAK,EAAG,MAAO,IACf,KAAK,EAAG,MAAO,IACf,KAAK,GAAI,MAAO,KAChB,KAAK,GAAI,MAAO,IAChB,KAAK,GAAI,MAAO,IAChB,KAAK,GAAI,MAAO,IAChB,KAAK,GAAI,MAAO,IAChB,KAAK,GAAI,MAAO,IAChB,KAAK,GAAI,MAAO,IAChB,KAAK,GAAI,MAAO,O,mCAIJK,EAAGC,GACnB,OAAOD,EAAEL,OAASM,EAAEN,S,wCAGCO,GACrB,GAAoB,SAAjBA,EAAU,GACT,MAAO,CACHJ,KAAK,OACLK,MAAOD,GAGfA,EAAUE,KAAKZ,EAAMa,cAKrB,IAHA,IAAIC,EAAYJ,EAAU,GACtBK,EAAU,CAACD,GACXE,EAAQ,GACJlG,EAAE,EAAGA,EAAE4F,EAAU1F,OAAQF,IAC1B4F,EAAU5F,GAAGqF,SAAWW,EAAUX,QACjCa,EAAM1F,KAAKyF,GACXA,EAAU,CAACL,EAAU5F,KAErBiG,EAAQzF,KAAKoF,EAAU5F,IAE3BgG,EAAYJ,EAAU5F,GAE1BkG,EAAM1F,KAAKyF,GAMX,IAJA,IAAIE,EAAa,GACbC,EAAa,GACbC,EAAa,GACbC,EAAa,GACTtG,EAAE,EAAGA,EAAEkG,EAAMhG,OAAQF,IACF,IAApBkG,EAAMlG,GAAGE,OACRmG,EAAW7F,KAAK0F,EAAMlG,IACG,IAApBkG,EAAMlG,GAAGE,OACdkG,EAAW5F,KAAK0F,EAAMlG,IACG,IAApBkG,EAAMlG,GAAGE,OACdiG,EAAW3F,KAAK0F,EAAMlG,IACG,IAApBkG,EAAMlG,GAAGE,QACdoG,EAAW9F,KAAK0F,EAAMlG,IAI9B,GAAwB,IAArB4F,EAAU1F,OAET,MAAO,CACHsF,KAAK,MACLK,MAAOD,EACPW,IAAKX,GAGP,GAAwB,IAArBA,EAAU1F,OAAa,CAE5B,GAAyB,IAAtBkG,EAAWlG,OACV,MAAO,CACHsF,KAAK,MACLK,MAAOD,EACPY,IAAKZ,GAEP,GAA2B,KAAxBA,EAAU,GAAGP,QAAyC,KAAxBO,EAAU,GAAGP,OAChD,MAAO,CACHG,KAAK,KACLK,MAAOD,EACPa,GAAIb,QAIV,GAAwB,IAArBA,EAAU1F,QAEf,GAAyB,IAAtBmG,EAAWnG,OACV,MAAO,CACHsF,KAAK,QACLK,MAAOD,EACPc,MAAOd,QAIb,GAAwB,IAArBA,EAAU1F,OAAa,CAE5B,GAAyB,IAAtBmG,EAAWnG,OACV,MAAO,CACHsF,KAAK,eACLK,MAAOD,EACPc,MAAOL,EAAW,GAClBE,IAAKJ,EAAW,IAElB,GAAyB,IAAtBG,EAAWpG,OAChB,MAAO,CACHsF,KAAK,OACLK,MAAOD,EACPe,KAAMf,QAIZ,GAAwB,IAArBA,EAAU1F,QAEf,GAAyB,IAAtBmG,EAAWnG,QAAsC,IAAtBkG,EAAWlG,OACrC,MAAO,CACHsF,KAAK,eACLK,MAAOD,EACPc,MAAOL,EAAW,GAClBG,IAAKJ,EAAW,SAItB,GAAwB,IAArBR,EAAU1F,QAEf,GAAyB,IAAtBoG,EAAWpG,QAAsC,IAAtBiG,EAAWjG,OACrC,MAAO,CACHsF,KAAK,cACLK,MAAOD,EACPe,KAAML,EAAW,SAIvB,GAAwB,IAArBV,EAAU1F,QAEU,IAAtBoG,EAAWpG,QAAsC,IAAtBkG,EAAWlG,OACrC,MAAO,CACHsF,KAAK,cACLK,MAAOD,EACPe,KAAML,EAAW,IAM7B,GAAGD,EAAWnG,QAAQ,GAAKmG,EAAWA,EAAWnG,OAAO,GAAG,GAAGmF,QAAQ,IAAMgB,EAAW,GAAG,GAAGhB,OAAOgB,EAAWnG,OAAO,IAAImG,EAAWA,EAAWnG,OAAO,GAAG,GAAGmF,OAAO,CAEhK,GAAGO,EAAU1F,OAAO,EAAEmG,EAAWnG,SAASmG,EAAWnG,OACjD,MAAO,CACHsF,KAAK,mBACLK,MAAOD,EACPgB,KAAMP,EAAWQ,KAAI,SAAUC,GAC3B,MAAO,CACHJ,MAAOI,OAMnB,GAAGV,EAAWlG,SAASmG,EAAWnG,OAC9B,MAAO,CACHsF,KAAK,mBACLK,MAAOD,EACPgB,KAAMP,EAAWQ,KAAI,SAAUC,GAC3B,MAAO,CACHJ,MAAOI,OAS/B,OAAGlB,EAAU1F,QAAU,GAAK0F,EAAUA,EAAU1F,OAAO,GAAGmF,QAAQ,IAAMc,EAAWjG,SAAW0F,EAAU1F,QAAU0F,EAAU,GAAGP,OAAOO,EAAU1F,OAAO,IAAI0F,EAAUA,EAAU1F,OAAO,GAAGmF,OAC9K,CACHG,KAAK,UACLK,MAAOD,EACPgB,KAAMT,EAAWU,KAAI,SAAUC,GAC3B,MAAO,CACHP,IAAKO,OAOlBlB,EAAU1F,QAAU,GAAK0F,EAAUA,EAAU1F,OAAO,GAAGmF,QAAQ,IAAMO,EAAU1F,OAAO,IAAM,GAAKkG,EAAWlG,SAAW0F,EAAU1F,OAAO,GAAK0F,EAAU,GAAGP,OAAOO,EAAU1F,OAAO,EAAE,IAAI0F,EAAUA,EAAU1F,OAAO,GAAGmF,OAC9M,CACHG,KAAK,UACLK,MAAOD,EACPgB,KAAMR,EAAWS,KAAI,SAAUC,GAC3B,MAAO,CACHN,IAAKM,OAOlBlB,EAAU1F,QAAU,GAAK0F,EAAUA,EAAU1F,OAAO,GAAGmF,QAAQ,IAAMO,EAAU1F,OAAO,IAAM,GAAKmG,EAAWnG,SAAW0F,EAAU1F,OAAO,GAAK0F,EAAU,GAAGP,OAAOO,EAAU1F,OAAO,EAAE,IAAI0F,EAAUA,EAAU1F,OAAO,GAAGmF,QAC9M,CACHG,KAAK,YACLK,MAAOD,EACPgB,KAAMP,EAAWQ,KAAI,SAAUC,GAC3B,MAAO,CACHJ,MAAOI,S,wCASFlB,GAErB,IADA,IAAI7E,EAAS,GACLf,EAAE,EAAGA,EAAE4F,EAAU1F,OAAQF,IAAI,CACjC,IAAI+G,EAAMnB,EAAU5F,GAAGgH,WACvBjG,GAAUgG,EAEd,OAAOhG,M,MASAmE,ICrRT+B,G,yCACF,WAAY9B,GAAO,uBACfA,EAAQA,GAAS,GACjB3B,KAAK0D,OAAS/B,EAAM+B,OACpB1D,KAAK2D,KAAOhC,EAAMgC,K,wDAGbvB,GAGL,GADAA,EAAUE,KAAKtC,KAAKuC,cACE,IAAnBH,EAAU1F,OACT,MAAO,CACHkH,EAAG,GACHC,EAAG,GACHC,EAAG,GACHC,EAAG,IAMX,IAHA,IAAIvB,EAAYJ,EAAU,GACtBK,EAAU,CAACD,GACXE,EAAQ,GACJlG,EAAE,EAAGA,EAAE4F,EAAU1F,OAAQF,IAC1B4F,EAAU5F,GAAGqF,SAAWW,EAAUX,QACjCa,EAAM1F,KAAKyF,GACXA,EAAU,CAACL,EAAU5F,KAErBiG,EAAQzF,KAAKoF,EAAU5F,IAE3BgG,EAAYJ,EAAU5F,GAE1BkG,EAAM1F,KAAKyF,GAMX,IAJA,IAAIE,EAAa,GACbC,EAAa,GACbC,EAAa,GACbC,EAAa,GACTtG,EAAE,EAAGA,EAAEkG,EAAMhG,OAAQF,IACF,IAApBkG,EAAMlG,GAAGE,OACRmG,EAAW7F,KAAK0F,EAAMlG,IACG,IAApBkG,EAAMlG,GAAGE,OACdkG,EAAW5F,KAAK0F,EAAMlG,IACG,IAApBkG,EAAMlG,GAAGE,OACdiG,EAAW3F,KAAK0F,EAAMlG,IACG,IAApBkG,EAAMlG,GAAGE,QACdoG,EAAW9F,KAAK0F,EAAMlG,IAI9B,MAAO,CACHoH,EAAGjB,EACHkB,EAAGjB,EACHkB,EAAGjB,EACHkB,EAAGjB,K,qCAKIkB,GAQX,IANA,IAAIC,EAAU,GACVC,EAAU,GACVC,EAAU,GAEV/B,EAAY4B,EAAWlE,MAAM,GAEzBtD,EAAE,EAAGA,EAAE4F,EAAU1F,OAAQF,IAC7B,GAA2B,KAAxB4F,EAAU5F,GAAGqF,OAAc,CAC1B,IAAIQ,EAAQD,EAAUxE,OAAOpB,EAAE,GAC/BA,IACAyH,EAAQjH,KAAKqF,EAAM,SACjB,GAA2B,KAAxBD,EAAU5F,GAAGqF,OAAc,CAChC,IAAIQ,EAAQD,EAAUxE,OAAOpB,EAAE,GAC/BA,IACA0H,EAAQlH,KAAKqF,EAAM,SACjB,GAA2B,KAAxBD,EAAU5F,GAAGqF,OAAc,CAChC,IAAIQ,EAAQD,EAAUxE,OAAOpB,EAAE,GAC/BA,IACA2H,EAAQnH,KAAKqF,EAAM,IAI3B,IAAI+B,EAAMpE,KAAKqE,SAASjC,GACpBO,EAAayB,EAAI,GACjBxB,EAAawB,EAAI,GACjBvB,EAAauB,EAAI,GACjBtB,EAAasB,EAAI,GAEjBjB,EAAOL,EACPI,EAAQ,GACRoB,EAAY,GACZtB,EAAM,GACNuB,EAAU,GACVxB,EAAM,GACNyB,EAAU,GAEd,GAAG3B,EAAWnG,OAAO,EAAE,CAInB,IAHA,IAAI+F,EAAU,CAACI,EAAW,IACtBH,EAAQ,GAEJ+B,EAAG,EAAGA,EAAG5B,EAAWnG,OAAQ+H,IAC7B5B,EAAW4B,GAAI,GAAG5C,SAAWgB,EAAW4B,EAAG,GAAG,GAAG5C,OAAO,GACvDa,EAAM1F,KAAKyF,GACXA,EAAU,CAACI,EAAW4B,KAEtBhC,EAAQzF,KAAK6F,EAAW4B,IAGhC/B,EAAM1F,KAAKyF,GACX,IAAI,IAAIiC,EAAG,EAAGA,EAAGhC,EAAMhG,OAAQgI,IACxBhC,EAAMgC,GAAIhI,OAAO,EAChB4H,EAAUtH,KAAK0F,EAAMgC,IAErBxB,EAAMlG,KAAK0F,EAAMgC,GAAI,IAKjC,GAAG9B,EAAWlG,OAAO,EAAE,CAGnB,IAFA,IAAIiI,EAAW,CAAC/B,EAAW,IACvBgC,EAAS,GACLC,EAAG,EAAGA,EAAGjC,EAAWlG,OAAQmI,IAC7BjC,EAAWiC,GAAI,GAAGhD,SAAWe,EAAWiC,EAAG,GAAG,GAAGhD,OAAO,GACvD+C,EAAO5H,KAAK2H,GACZA,EAAW,CAAC/B,EAAWiC,KAEvBF,EAAS3H,KAAK4F,EAAWiC,IAGjCD,EAAO5H,KAAK2H,GACZ,IAAI,IAAIG,EAAG,EAAGA,EAAGF,EAAOlI,OAAQoI,IACzBF,EAAOE,GAAIpI,OAAO,EACjB6H,EAAQvH,KAAK4H,EAAOE,IAEpB9B,EAAMA,EAAI+B,OAAOH,EAAOE,IAKpC,GAAGnC,EAAWjG,OAAO,EAAE,CAGnB,IAFA,IAAIsI,EAAW,CAACrC,EAAW,IACvBsC,EAAS,GACLC,EAAG,EAAGA,EAAGvC,EAAWjG,OAAQwI,IAC7BvC,EAAWuC,GAAI,GAAGrD,SAAWc,EAAWuC,EAAG,GAAG,GAAGrD,OAAO,GACvDoD,EAAOjI,KAAKgI,GACZA,EAAW,CAACrC,EAAWuC,KAEvBF,EAAShI,KAAK2F,EAAWuC,IAGjCD,EAAOjI,KAAKgI,GACZ,IAAI,IAAIG,EAAG,EAAGA,EAAGF,EAAOvI,OAAQyI,IACzBF,EAAOE,GAAIzI,OAAO,EACjB8H,EAAQxH,KAAKiI,EAAOE,IAEpBpC,EAAMA,EAAIgC,OAAOE,EAAOE,IAMpC,GAAGpC,EAAIrG,OAAO,GAAGsG,EAAItG,OAAO,EAAE,CAE1B,IAAI0I,EAAW,EACXC,EAAW,EAEf,MAAM,EAAK,CAEP,GAAGD,EAASrC,EAAIrG,OAAO,GAAG2I,EAASrC,EAAItG,OAAO,EAC1C,MAGJ,IAAI4I,OAAM,EACNC,OAAK,EACLC,EAAO,GACPC,EAAO,GAEX,GAAgB,IAAb1C,EAAIrG,QAAc0I,EAASrC,EAAIrG,OAAO,EACrC,MAGY,IAAbsG,EAAItG,QAAc2I,EAASrC,EAAItG,OAAO,GAKlCqG,EAAIqC,GAAU,GAAGvD,OAAOmB,EAAIqC,GAAU,GAAGxD,QAJ5CyD,EAASvC,EAAIqC,GAAU,GAAGvD,OAC1B2D,EAAKxI,KAAK+F,EAAIqC,IACdA,MAOIE,EAAStC,EAAIqC,GAAU,GAAGxD,OAC1B4D,EAAKzI,KAAKgG,EAAIqC,IACdA,KAGRE,EAAQD,EAER,EAAE,CACE,GAAGF,EAASrC,EAAIrG,OAAO,GAAG2I,EAASrC,EAAItG,OAAO,EAC1C,MAGJ,GAAG0I,EAASrC,EAAIrG,QAAQqG,EAAIqC,GAAU,GAAGvD,SAAW0D,EAAM,EACtDC,EAAKxI,KAAK+F,EAAIqC,IACdA,QACE,MAAGC,EAASrC,EAAItG,QAAQsG,EAAIqC,GAAU,GAAGxD,SAAW0D,EAAM,GAI5D,MAHAE,EAAKzI,KAAKgG,EAAIqC,IACdA,IAMJ,GADAE,GAAc,EACXA,IAAQD,EAAO,GACXG,EAAK/I,OAAO,EAAE,CAGb,IADA,IAAIgJ,EAAU,GACNC,EAAG,EAAGA,EAAGH,EAAK9I,OAAQiJ,IAAK,CAC/BD,EAAQ1I,KAAKwI,EAAKG,IAGlB,IAAI,IAAIjI,EAAE,EAAGA,EAAEqF,EAAIrG,OAAQgB,IACvB,GAAGqF,EAAIrF,KAAK8H,EAAKG,GAAI,CACjB5C,EAAInF,OAAOF,EAAE,GACb,OAKZ,IAAI,IAAIkI,EAAG,EAAGA,EAAGH,EAAK/I,OAAQkJ,IAAK,CAI/B,IAHA,IAAIC,EAASJ,EAAKG,GAGVE,EAAG,EAAGA,EAAG9C,EAAItG,OAAQoJ,IACzB,GAAG9C,EAAI8C,KAAMD,EAAO,CAChB7C,EAAIpF,OAAOkI,EAAG,GACd,MAIR,IAAIzD,EAAQwD,EAAOjI,OAAO,EAAE,GAC5B8H,EAAQ1I,KAAKqF,GACbU,EAAI/F,KAAK6I,GAIbH,EAAQpD,KAAKtC,KAAK+F,WAClBvB,EAAQxH,KAAK0I,GACb3C,EAAIT,KAAKtC,KAAK+F,WAEdX,EAAW,EACXC,EAAW,EACX,aAKL,IAOf,IAAI,IAAIW,EAAI,EAAGA,EAAIjD,EAAIrG,OAAQsJ,IAAM,CAEjC,IADA,IAAIC,GAAQ,EACJC,EAAI,EAAGA,EAAI1B,EAAQ9H,OAAQwJ,IAAM,CACrC,GAAGnD,EAAIiD,GAAK,GAAGnE,SAAS2C,EAAQ0B,GAAK,GAAG,GAAGrE,OAAO,EAAE,CAChD2C,EAAQ0B,GAAKC,QAAQpD,EAAIiD,IACzBC,GAAQ,EACR,MACE,GAAGlD,EAAIiD,GAAK,GAAGnE,SAAS2C,EAAQ0B,GAAK1B,EAAQ0B,GAAKxJ,OAAO,GAAG,GAAGmF,OAAO,EAAE,CAC1E2C,EAAQ0B,GAAKlJ,KAAK+F,EAAIiD,IACtBC,GAAQ,EACR,OAGLA,IACClD,EAAInF,OAAOoI,EAAI,GACfA,KAKRxB,EAAQlC,KAAKtC,KAAKoG,UAClB,IAAI,IAAIC,EAAI,EAAGA,EAAI7B,EAAQ9H,OAAQ2J,IAC5B7B,EAAQ6B,GAAK,GAAG,GAAGxE,SAAS2C,EAAQ6B,EAAI,GAAG7B,EAAQ6B,EAAI,GAAG3J,OAAO,GAAG,GAAGmF,OAAO,IAC7E2C,EAAQ6B,EAAI,GAAK7B,EAAQ6B,EAAI,GAAGtB,OAAOP,EAAQ6B,IAC/C7B,EAAQ5G,OAAOyI,EAAI,GACnBA,KAIR,MAAO,CACHlD,OACAD,QACAoB,YACAtB,MACAuB,UACAxB,MACAyB,UACAP,UACAC,UACAC,a,gCAKEmC,GACN,IAAIlC,EAKJ,OAJAA,EAAMpE,KAAKuG,oBAAoBD,GAC3BlC,IACAA,EAAMpE,KAAKwG,UAAUF,IAElBlC,I,gCAIDkC,GACN,IAAIlC,EAKJ,OAJAA,EAAMpE,KAAKyG,UAAUH,GACjBlC,IACAA,EAAMpE,KAAK0G,WAAWJ,IAEnBlC,I,gCAIDkC,GACN,IAAIlC,EAGJ,OAFAA,EAAMpE,KAAK2G,oBAAoBL,GAExBlC,I,gCAIDkC,GACN,IAAIlC,EAOJ,OALIA,EADc,QAAfkC,EAAQtE,KACDhC,KAAK4G,UAAUN,GAEftG,KAAK6G,UAAUP,GAGlBlC,I,gCAGDkC,GACN,IAEIlC,EACA/B,EAHAyE,EAAc9G,KAAK0D,OAAOoD,YAK9B,GAAkB,OAAfR,EAAQtE,KACP,OAAO,KAGX,GAAG8E,EAAY3D,KAAKzG,OAAO,EACvB,GAAkB,SAAf4J,EAAQtE,MACP,IAAI,IAAIxF,EAAE,EAAGA,EAAEsK,EAAY3D,KAAKzG,OAAQF,IACpC,GAAGsK,EAAY3D,KAAK3G,GAAG,GAAGqF,OAAOyE,EAAQnD,KAAK,GAAGtB,OAAO,CACpDQ,EAAQyE,EAAY3D,KAAK3G,GACzB,YAIR6F,EAAQyE,EAAY3D,KAAK,GA2BjC,OAtBId,GACgC,IAA7ByE,EAAY7C,QAAQvH,SACnB2F,EAAQyE,EAAY7C,SAIzB5B,EACC+B,EAAM,CACFpC,KAAM,OACNK,MAAOA,EACPc,KAAMd,GAGPyE,EAAY5C,QAAQxH,OAAO,GAAGoK,EAAY3C,QAAQzH,OAAO,IACxD0H,EAAM,CACFpC,KAAM,KACNK,MAAOyE,EAAY5C,QAAQa,OAAO+B,EAAY3C,SAC9ClB,GAAI6D,EAAY5C,QAAQa,OAAO+B,EAAY3C,WAKhDC,I,gCAIDkC,GAEN,IAAIlC,EAAMpE,KAAKwG,UAAUF,GAYzB,OAVIlC,GACGpE,KAAK0D,OAAOtB,UAAUpC,KAAK0D,OAAOtB,UAAU1F,OAAO,GAAGmF,OAAOyE,EAAQvD,IAAI,GAAGlB,SAC3EuC,EAAM,CACFpC,KAAM,MACNK,MAAO,CAACrC,KAAK0D,OAAOtB,UAAUpC,KAAK0D,OAAOtB,UAAU1F,OAAO,IAC3DqG,IAAK,CAAC/C,KAAK0D,OAAOtB,UAAUpC,KAAK0D,OAAOtB,UAAU1F,OAAO,MAK9D0H,I,gCAKDkC,GAEN,IAAIlC,EAOJ,OALIA,EADqB,UAAtBkC,EAAQ5C,OAAO1B,KACRhC,KAAKyG,UAAUH,GAEftG,KAAK+G,UAAUT,GAGlBlC,I,gCAKDkC,GACN,IAAIlC,EAEJ,GAAkB,OAAfkC,EAAQtE,KAMP,OALAoC,EAAM,CACFpC,KAAM,OACNK,MAAO,CAAC,cAEZrC,KAAK0D,OAAOsD,gCAAgC5C,GAIhD,GAAsB,UAAnBpE,KAAK0D,OAAO1B,KAEPoC,EADmC,IAApCpE,KAAK0D,OAAOuD,KAAK7E,UAAU1F,QAAgD,IAApCsD,KAAK0D,OAAOwD,KAAK9E,UAAU1F,OAC3DsD,KAAKmH,UAAUb,GAEftG,KAAKyG,UAAUH,QAGzB,GAAGtG,KAAK0D,OAAOuD,KAAKjF,OAAOhC,KAAK0D,OAAO1B,KACnCoC,EAAMpE,KAAKoH,UAAUd,QAErB,GAAuC,IAApCtG,KAAK0D,OAAOuD,KAAK7E,UAAU1F,QAC1B,GAAyB,UAAtB4J,EAAQ5C,OAAO1B,KACdoC,EAAMpE,KAAKmH,UAAUb,QAErB,GAAkB,QAAfA,EAAQtE,KAAa,CACpB,IAAIqF,EAAYrH,KAAKsH,qBAAqBhB,GACvCe,IAGCjD,EAAMpE,KAAK4G,UAAUN,UAOjClC,EAAMpE,KAAKoH,UAAUd,GAK7BlC,IACAA,EAAM,CACFpC,KAAM,OACNK,MAAO,CAAC,UAGhBrC,KAAK0D,OAAOsD,gCAAgC5C,K,2CAG3BA,GAmBjB,IAlBA,IAAImD,EAAW,CACXzD,EAAE,EACFC,EAAE,EACFyD,EAAE,EACFC,EAAE,EACFC,EAAE,EACFC,EAAE,EACFC,EAAE,EACFC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,EACHC,GAAG,GAEHC,EAAerI,KAAK2D,KAAK0E,aACrB7L,EAAE,EAAGA,EAAE6L,EAAa3L,OAAQF,IAChC,IAAI,IAAIkB,EAAE,EAAGA,EAAE2K,EAAa7L,GAAG6F,MAAM3F,OAAQgB,IACzC6J,EAASc,EAAa7L,GAAG6F,MAAM3E,GAAGmE,UAI1C,IADA,IAAIyG,EAAetI,KAAK2D,KAAK2E,aACrB5K,EAAE,EAAGA,EAAE4K,EAAajG,MAAM3F,OAAQgB,IACtC6J,EAASe,EAAajG,MAAM3E,GAAGmE,UAGnC,IADA,IAAIgE,EAAS7F,KAAK0D,OAAOtB,UACjB1E,EAAE,EAAGA,EAAEmI,EAAOnJ,OAAQgB,IAC1B6J,EAAS1B,EAAOnI,GAAGmE,UAGvB,IAAI0G,EAAMnE,EAAIrB,IAAI,GAAGlB,OAErB,GAAS,KAAN0G,GACC,GAAkB,IAAfhB,EAAS,IACR,OAAO,OAET,GAAS,KAANgB,GACL,GAAkB,IAAfhB,EAAS,KAAwB,IAAfA,EAAS,IAC1B,OAAO,OAGX,IAAI,IAAIhI,EAAEgJ,EAAI,EAAGhJ,GAAG,GAAIA,IACpB,GAAiB,IAAdgI,EAAShI,GACR,OAAO,EAKnB,OAAO,I,qCAMP,IADA,IAAIiJ,EAAQ,CAAC,mBAAmB,mBAAmB,YAAY,UAAU,UAAU,eAAe,eAAe,QAAQ,MAAM,MAAM,OAAO,MACpIhM,EAAE,EAAGA,EAAEgM,EAAM9L,OAAQF,IAAI,CAC7B,IAAI4H,EAAMpE,KAAKyI,qBAAqBD,EAAMhM,IAC1C,GAAI4H,EAAJ,CAGApE,KAAK0D,OAAOsD,gCAAgC5C,GAC5C,U,qCAOJ,IADA,IAAIoE,EAAQ,CAAC,mBAAmB,mBAAmB,YAAY,UAAU,UAAU,eAAe,eAAe,QAAQ,MAAM,OAAO,KAAK,OACnIhM,EAAE,EAAGA,EAAEgM,EAAM9L,OAAQF,IAAI,CAC7B,IAAI4H,EAAMpE,KAAKyI,qBAAqBD,EAAMhM,IAAI,GAC9C,GAAI4H,EAAJ,CAGApE,KAAK0D,OAAOsD,gCAAgC5C,GAC5C,U,wCAMJ,IAAIA,EAAM,CACNpC,KAAM,MACNK,MAAO,CAACrC,KAAK0D,OAAOtB,UAAU,IAC9BW,IAAK,CAAC/C,KAAK0D,OAAOtB,UAAU,KAEhCpC,KAAK0D,OAAOsD,gCAAgC5C,K,sCAMtB,UAAnBpE,KAAK0D,OAAO1B,KAC4B,IAApChC,KAAK0D,OAAOuD,KAAK7E,UAAU1F,QAAgD,IAApCsD,KAAK0D,OAAOwD,KAAK9E,UAAU1F,OACjEsD,KAAK0I,eAEL1I,KAAK2I,eAGkB,YAAxB3I,KAAK0D,OAAOuD,KAAKjF,KACuB,IAApChC,KAAK0D,OAAOuD,KAAK7E,UAAU1F,OAC1BsD,KAAK4I,kBAEL5I,KAAK2I,eAG8B,IAApC3I,KAAK0D,OAAOuD,KAAK7E,UAAU1F,OAC1BsD,KAAK0I,eAEL1I,KAAK2I,iB,0CAODrC,GAChB,IAAIQ,EAAc9G,KAAK0D,OAAOoD,YAE1B9E,EAAOsE,EAAQtE,KACfoC,EAAM,KACV,GAAY,QAATpC,EAAe,CACd,IAAIK,EACJ,GAAGyE,EAAY/D,IAAIrG,OAAO,EACtB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY/D,IAAIrG,OAAQF,IACnC,GAAGsK,EAAY/D,IAAIvG,GAAG,GAAGqF,OAAOyE,EAAQvD,IAAI,GAAGlB,OAAO,CAClDQ,EAAQyE,EAAY/D,IAAIvG,GACxB,MAMT6F,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPU,IAAKV,SAGX,GAAY,QAATL,EAAe,CACpB,IAAIK,EAEJ,GAAGyE,EAAY9D,IAAItG,OAAO,EACtB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY9D,IAAItG,OAAQF,IACnC,GAAGsK,EAAY9D,IAAIxG,GAAG,GAAGqF,OAAOyE,EAAQtD,IAAI,GAAGnB,OAAO,CAClDQ,EAAQyE,EAAY9D,IAAIxG,GACxB,MAKT6F,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPW,IAAKX,SAGX,GAAY,UAATL,EAAiB,CACtB,IAAIK,EAEJ,GAAGyE,EAAY5D,MAAMxG,OAAO,EACxB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY5D,MAAMxG,OAAQF,IACrC,GAAGsK,EAAY5D,MAAM1G,GAAG,GAAGqF,OAAOyE,EAAQpD,MAAM,GAAGrB,OAAO,CACnDiF,EAAY5D,MAAM1G,GAAG,GAAGqF,QAAQ,KAC/BQ,EAAQyE,EAAY5D,MAAM1G,IAE9B,MAKT6F,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPa,MAAOb,SAGb,GAAY,iBAATL,EAAwB,CAC7B,IAAI6G,EACA9F,EACJ,GAAG+D,EAAY5D,MAAMxG,OAAO,GACrBoK,EAAY5D,MAAMxG,OAAO,EACxB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY5D,MAAMxG,OAAQF,IACrC,GAAGsK,EAAY5D,MAAM1G,GAAG,GAAGqF,OAAOyE,EAAQpD,MAAM,GAAGrB,OAAO,CACnDiF,EAAY5D,MAAM1G,GAAG,GAAGqF,QAAQ,KAC/BgH,EAAa/B,EAAY5D,MAAM1G,IAEnC,MAMbsK,EAAY/D,IAAIrG,OAAO,IACtBqG,EAAM+D,EAAY/D,IAAI,IAGvB8F,GAAY9F,IACXqB,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAOhC,GACzBG,MAAO2F,EACP9F,IAAKA,SAIX,GAAY,iBAATf,EAAwB,CAE7B,IAAI6G,EACA7F,EACJ,GAAG8D,EAAY5D,MAAMxG,OAAO,GACrBoK,EAAY5D,MAAMxG,OAAO,EACxB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY5D,MAAMxG,OAAQF,IACrC,GAAGsK,EAAY5D,MAAM1G,GAAG,GAAGqF,OAAOyE,EAAQpD,MAAM,GAAGrB,OAAO,CACnDiF,EAAY5D,MAAM1G,GAAG,GAAGqF,QAAQ,KAC/BgH,EAAa/B,EAAY5D,MAAM1G,IAEnC,MAMbsK,EAAY9D,IAAItG,OAAO,IACtBsG,EAAM8D,EAAY9D,IAAI,IAGvB6F,GAAY7F,IACXoB,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAO/B,GACzBE,MAAO2F,EACP7F,IAAKA,IAMjB,OAAOoB,I,0CAISkC,GAChB,IAAIQ,EAAc9G,KAAK0D,OAAOoD,YAE1B9E,EAAOsE,EAAQtE,KACfoC,EAAM,KACV,GAAY,QAATpC,EAAe,CACd,IAAIK,EACJ,GAAGyE,EAAY/D,IAAIrG,OAAO,EACtB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY/D,IAAIrG,OAAQF,IACnC,GAAGsK,EAAY/D,IAAIvG,GAAG,GAAGqF,OAAOyE,EAAQvD,IAAI,GAAGlB,OAAO,CAClDQ,EAAQyE,EAAY/D,IAAIvG,GACxB,MAMR6F,IACGiE,EAAQvD,IAAI,GAAGlB,OAAO,IAAIiF,EAAY7C,QAAQvH,OAAO,EACpD2F,EAAQyE,EAAY7C,QAAQnE,MAAM,EAAE,GAGjCwG,EAAQvD,IAAI,GAAGlB,OAAO,IAAIiF,EAAY5C,QAAQxH,OAAO,EACpD2F,EAAQyE,EAAY5C,QACfoC,EAAQvD,IAAI,GAAGlB,OAAO,IAAIiF,EAAY3C,QAAQzH,OAAO,IAC1D2F,EAAQyE,EAAY3C,UAM7B9B,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPU,IAAKV,SAGX,GAAY,QAATL,EAAe,CACpB,IAAIK,EAEJ,GAAGyE,EAAY9D,IAAItG,OAAO,EACtB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY9D,IAAItG,OAAQF,IACnC,GAAGsK,EAAY9D,IAAIxG,GAAG,GAAGqF,OAAOyE,EAAQtD,IAAI,GAAGnB,OAAO,CAClDQ,EAAQyE,EAAY9D,IAAIxG,GACxB,MAKR6F,GACGiE,EAAQtD,IAAI,GAAGnB,OAAO,IAAIiF,EAAY7C,QAAQvH,OAAO,IACpD2F,EAAQyE,EAAY7C,QAAQnE,MAAM,EAAE,IAIzCuC,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPW,IAAKX,SAGX,GAAY,UAATL,EAAiB,CACtB,IAAIK,EAEJ,GAAGyE,EAAY5D,MAAMxG,OAAO,EACxB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY5D,MAAMxG,OAAQF,IACrC,GAAGsK,EAAY5D,MAAM1G,GAAG,GAAGqF,OAAOyE,EAAQpD,MAAM,GAAGrB,OAAO,CACtDQ,EAAQyE,EAAY5D,MAAM1G,GAC1B,MAKR6F,GACGiE,EAAQpD,MAAM,GAAGrB,OAAO,IAAiC,IAA7BiF,EAAY7C,QAAQvH,SAC/C2F,EAAQyE,EAAY7C,SAIzB5B,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPa,MAAOb,SAGb,GAAY,iBAATL,EAAwB,CAC7B,IAAI6G,EACA9F,EACJ,GAAG+D,EAAY5D,MAAMxG,OAAO,GACrBoK,EAAY5D,MAAMxG,OAAO,EACxB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY5D,MAAMxG,OAAQF,IACrC,GAAGsK,EAAY5D,MAAM1G,GAAG,GAAGqF,OAAOyE,EAAQpD,MAAM,GAAGrB,OAAO,CACtDgH,EAAa/B,EAAY5D,MAAM1G,GAC/B,MAKZqM,GACGvC,EAAQpD,MAAM,GAAGrB,OAAO,IAAiC,IAA7BiF,EAAY7C,QAAQvH,SAC/CmM,EAAa/B,EAAY7C,SAI9B6C,EAAY/D,IAAIrG,OAAO,IACtBqG,EAAM+D,EAAY/D,IAAI,KAEtBA,GAAK+D,EAAY7C,QAAQvH,OAAO,IAChCqG,EAAM+D,EAAY7C,QAAQnE,MAAM,EAAE,IAGnC+I,GAAY9F,IACXqB,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAOhC,GACzBG,MAAO2F,EACP9F,IAAKA,SAIX,GAAY,iBAATf,EAAwB,CAE7B,IAAI6G,EACA7F,EACJ,GAAG8D,EAAY5D,MAAMxG,OAAO,GACrBoK,EAAY5D,MAAMxG,OAAO,EACxB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY5D,MAAMxG,OAAQF,IACrC,GAAGsK,EAAY5D,MAAM1G,GAAG,GAAGqF,OAAOyE,EAAQpD,MAAM,GAAGrB,OAAO,CACtDgH,EAAa/B,EAAY5D,MAAM1G,GAC/B,MAKZqM,GACGvC,EAAQpD,MAAM,GAAGrB,OAAO,IAAiC,IAA7BiF,EAAY7C,QAAQvH,SAC/CmM,EAAa/B,EAAY7C,SAK9B6C,EAAY9D,IAAItG,OAAO,IACtBsG,EAAM8D,EAAY9D,IAAI,KAEtBA,GAAK8D,EAAY7C,QAAQvH,OAAO,IAChCsG,EAAM8D,EAAY7C,QAAQnE,MAAM,EAAE,IAGnC+I,GAAY7F,IACXoB,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAO/B,GACzBE,MAAO2F,EACP7F,IAAKA,SAIX,GAAY,SAAThB,EAAgB,CAErB,IAAIK,EAEJ,GAAGyE,EAAY3D,KAAKzG,OAAO,EACvB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY3D,KAAKzG,OAAQF,IACpC,GAAGsK,EAAY3D,KAAK3G,GAAG,GAAGqF,OAAOyE,EAAQnD,KAAK,GAAGtB,OAAO,CACpDQ,EAAQyE,EAAY3D,KAAK3G,GACzB,MAKR6F,GACgC,IAA7ByE,EAAY7C,QAAQvH,SACnB2F,EAAQyE,EAAY7C,SAIzB5B,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPc,KAAMd,SAGZ,GAAY,gBAATL,EAAuB,CAE5B,IAAI8G,EACAC,EACAC,EAEJ,GAAGlC,EAAY3D,KAAKzG,OAAO,EACvB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY3D,KAAKzG,OAAQF,IACpC,GAAGsK,EAAY3D,KAAK3G,GAAG,GAAGqF,OAAOyE,EAAQnD,KAAK,GAAGtB,OAAO,CACpDiH,EAAYhC,EAAY3D,KAAK3G,GAC7B,MAKTsK,EAAY/D,IAAIrG,OAAO,IACtBqM,EAAOjC,EAAY/D,IAAI,GACvBiG,EAAOlC,EAAY/D,IAAI,IAGxB+F,GAAWC,GAAMC,IAChB5E,EAAM,CACFpC,KAAMA,EACNK,MAAOyG,EAAU/D,OAAOgE,GAAMhE,OAAOiE,GACrC7F,KAAM2F,SAGZ,GAAY,gBAAT9G,EAAuB,CAE5B,IAAI8G,EACAG,EACAC,EAEJ,GAAGpC,EAAY3D,KAAKzG,OAAO,EACvB,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAY3D,KAAKzG,OAAQF,IACpC,GAAGsK,EAAY3D,KAAK3G,GAAG,GAAGqF,OAAOyE,EAAQnD,KAAK,GAAGtB,OAAO,CACpDiH,EAAYhC,EAAY3D,KAAK3G,GAC7B,MAKTsK,EAAY9D,IAAItG,OAAO,IACtBuM,EAAOnC,EAAY9D,IAAI,GACvBkG,EAAOpC,EAAY9D,IAAI,IAGxB8F,GAAWG,GAAMC,IAChB9E,EAAM,CACFpC,KAAMA,EACNK,MAAOyG,EAAU/D,OAAOkE,GAAMlE,OAAOmE,GACrC/F,KAAM2F,SAGZ,GAAY,qBAAT9G,GACL,GAAG8E,EAAYxC,UAAU5H,OAAO,EAC5B,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAYxC,UAAU5H,OAAQF,IACzC,GAAGsK,EAAYxC,UAAU9H,GAAGE,SAAS4J,EAAQlD,KAAK1G,QAAUoK,EAAYxC,UAAU9H,GAAG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK,GAAGF,MAAM,GAAGrB,OAAO,CAC9H,GAAGiF,EAAY/D,IAAIrG,QAAQoK,EAAYxC,UAAU9H,GAAGE,OAAO,CACvD,IAAImM,EAAa/B,EAAYxC,UAAU9H,GAAG2M,KAAK,GAC3CC,EAAWtC,EAAY/D,IAAIjD,MAAM,EAAEgH,EAAYxC,UAAU9H,GAAGE,QAAQyM,KAAK,GAC7E/E,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAOqE,GACzBhG,KAAM0D,EAAYxC,UAAU9H,GAAG6G,KAAI,SAAUC,GACzC,MAAO,CACHJ,MAAOI,OAKvB,YAKV,GAAY,qBAATtB,GACL,GAAG8E,EAAYxC,UAAU5H,OAAO,EAC5B,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAYxC,UAAU5H,OAAQF,IACzC,GAAGsK,EAAYxC,UAAU9H,GAAGE,SAAS4J,EAAQlD,KAAK1G,QAAUoK,EAAYxC,UAAU9H,GAAG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK,GAAGF,MAAM,GAAGrB,OAAO,CAC9H,GAAGiF,EAAY9D,IAAItG,QAAQoK,EAAYxC,UAAU9H,GAAGE,OAAO,CACvD,IAAImM,EAAa/B,EAAYxC,UAAU9H,GAAG2M,KAAK,GAC3CE,EAAWvC,EAAY9D,IAAIlD,MAAM,EAAEgH,EAAYxC,UAAU9H,GAAGE,QAAQyM,KAAK,GAC7E/E,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAOsE,GACzBjG,KAAM0D,EAAYxC,UAAU9H,GAAG6G,KAAI,SAAUC,GACzC,MAAO,CACHJ,MAAOI,OAKvB,YAIV,GAAY,YAATtB,GACL,GAAG8E,EAAYtC,QAAQ9H,OAAO,EAC1B,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAYtC,QAAQ9H,OAAQF,IACvC,GAAIsK,EAAYtC,QAAQhI,GAAGE,SAAW4J,EAAQlD,KAAK1G,QAAUoK,EAAYtC,QAAQhI,GAAG,GAAG,GAAGqF,OAASyE,EAAQlD,KAAK,GAAGL,IAAI,GAAGlB,OAAQ,CAC9HuC,EAAM,CACFpC,KAAMA,EACNK,MAAOyE,EAAYtC,QAAQhI,GAAG2M,KAAK,GACnC/F,KAAM0D,EAAYtC,QAAQhI,GAAG6G,KAAI,SAAUC,GACvC,MAAO,CACHP,IAAKO,OAIjB,YAIV,GAAY,YAATtB,GACL,GAAG8E,EAAYvC,QAAQ7H,OAAO,EAC1B,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAYvC,QAAQ7H,OAAQF,IACvC,GAAIsK,EAAYvC,QAAQ/H,GAAGE,SAAW4J,EAAQlD,KAAK1G,QAAUoK,EAAYvC,QAAQ/H,GAAG,GAAG,GAAGqF,OAASyE,EAAQlD,KAAK,GAAGJ,IAAI,GAAGnB,OAAQ,CAC9HuC,EAAM,CACFpC,KAAMA,EACNK,MAAOyE,EAAYvC,QAAQ/H,GAAG2M,KAAK,GACnC/F,KAAM0D,EAAYvC,QAAQ/H,GAAG6G,KAAI,SAAUC,GACvC,MAAO,CACHN,IAAKM,OAIjB,YAIV,GAAY,cAATtB,GACL,GAAG8E,EAAYxC,UAAU5H,OAAO,EAC5B,IAAI,IAAIF,EAAE,EAAGA,EAAEsK,EAAYxC,UAAU5H,OAAQF,IACzC,GAAIsK,EAAYxC,UAAU9H,GAAGE,SAAW4J,EAAQlD,KAAK1G,QAAUoK,EAAYxC,UAAU9H,GAAG,GAAG,GAAGqF,OAASyE,EAAQlD,KAAK,GAAGF,MAAM,GAAGrB,OAAQ,CACpIuC,EAAM,CACFpC,KAAMA,EACNK,MAAOyE,EAAYxC,UAAU9H,GAAG2M,KAAK,GACrC/F,KAAM0D,EAAYxC,UAAU9H,GAAG6G,KAAI,SAAUC,GACzC,MAAO,CACHJ,MAAOI,OAInB,YAIV,GAAY,OAATtB,GACF8E,EAAY5C,QAAQxH,OAAO,GAAGoK,EAAY3C,QAAQzH,OAAO,EACxD,MAAO,CACHsF,KAAMA,EACNK,MAAOyE,EAAY5C,QAAQa,OAAO+B,EAAY3C,SAC9ClB,GAAI6D,EAAY5C,QAAQa,OAAO+B,EAAY3C,UAKvD,OAAOC,I,2CAGUpC,EAAMsH,GACvB,IAKYjH,EAgBAA,EArBRyE,EAAc9G,KAAK0D,OAAOoD,YAE1B1C,EAAM,KACV,GAAY,QAATpC,EACIsH,GAGKjH,EADDyE,EAAY3C,QAAQzH,OAAO,EAClBoK,EAAY3C,QACf2C,EAAY5C,QAAQxH,OAAO,EACxBoK,EAAY5C,QACf4C,EAAY7C,QAAQvH,OAAO,EACxBoK,EAAY7C,QAAQnE,MAAM,EAAE,GAE5BgH,EAAY/D,IAAI+D,EAAY/D,IAAIrG,OAAO,GAEnD0H,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPU,IAAKV,KAINyE,EAAY/D,IAAIrG,OAAO,EACtB2F,EAAQyE,EAAY/D,IAAI,GAGrB+D,EAAY7C,QAAQvH,OAAO,GAAGoK,EAAY7C,QAAQvH,OAAO,EACxD2F,EAAQyE,EAAY7C,QAAQnE,MAAM,EAAE,GAEJ,IAA7BgH,EAAY3C,QAAQzH,QAAyC,IAA7BoK,EAAY5C,QAAQxH,SAChDoK,EAAY5C,QAAQxH,OAAO,EAC1B2F,EAAQyE,EAAY5C,QACf4C,EAAY3C,QAAQzH,OAAO,IAChC2F,EAAQyE,EAAY3C,UAMjC9B,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPU,IAAKV,UAKf,GAAY,QAATL,EAAe,CACpB,IAAIK,EAEDiH,EACIxC,EAAY9D,IAAItG,OAAO,EACtB2F,EAAQyE,EAAY9D,IAAI,GAEQ,IAA7B8D,EAAY7C,QAAQvH,SACnB2F,EAAQyE,EAAY7C,SAIzB6C,EAAY9D,IAAItG,OAAO,IACtB2F,EAAQyE,EAAY9D,IAAI,IAI7BX,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPW,IAAKX,SAGX,GAAY,UAATL,EAAiB,CACtB,IAAIK,EAEDiH,EACIxC,EAAY5D,MAAMxG,OAAO,EACxB2F,EAAQyE,EAAY5D,MAAM,GAEM,IAA7B4D,EAAY7C,QAAQvH,SACnB2F,EAAQyE,EAAY7C,SAIzB6C,EAAY5D,MAAMxG,OAAO,IACxB2F,EAAQyE,EAAY5D,MAAM,IAI/Bb,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPa,MAAOb,SAGb,GAAY,iBAATL,EAAwB,CAC7B,IAAI6G,EACA9F,EACD+D,EAAY5D,MAAMxG,OAAO,IACxBmM,EAAa/B,EAAY5D,MAAM,IAEhC4D,EAAY/D,IAAIrG,OAAO,IACtBqG,EAAM+D,EAAY/D,IAAI,IAGvBuG,IACKT,GAAyC,IAA7B/B,EAAY7C,QAAQvH,SAChCmM,EAAa/B,EAAY7C,SAEzBlB,GAAkC,IAA7B+D,EAAY7C,QAAQvH,SACzBqG,EAAM+D,EAAY7C,UAIvB4E,GAAY9F,IACXqB,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAOhC,GACzBG,MAAO2F,EACP9F,IAAKA,SAIX,GAAY,SAATf,EAAgB,CAErB,IAAIK,EAEDiH,EACIxC,EAAY3D,KAAKzG,OAAO,EACvB2F,EAAQyE,EAAY3D,KAAK,GAEO,IAA7B2D,EAAY7C,QAAQvH,SACnB2F,EAAQyE,EAAY7C,SAIzB6C,EAAY3D,KAAKzG,OAAO,IACvB2F,EAAQyE,EAAY3D,KAAK,IAI9Bd,IACC+B,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPc,KAAMd,SAGZ,GAAY,iBAATL,EAAwB,CAE7B,IAAI6G,EACA7F,EACD8D,EAAY5D,MAAMxG,OAAO,IACxBmM,EAAa/B,EAAY5D,MAAM,IAEhC4D,EAAY9D,IAAItG,OAAO,IACtBsG,EAAM8D,EAAY9D,IAAI,IAGvBsG,IACKT,GAAyC,IAA7B/B,EAAY7C,QAAQvH,SAChCmM,EAAa/B,EAAY7C,SAEzBjB,GAAkC,IAA7B8D,EAAY7C,QAAQvH,SACzBsG,EAAM8D,EAAY7C,UAIvB4E,GAAY7F,IACXoB,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAO/B,GACzBE,MAAO2F,EACP7F,IAAKA,SAIX,GAAY,qBAAThB,GACL,GAAG8E,EAAYxC,UAAU5H,OAAO,GACzBoK,EAAY/D,IAAIrG,QAAQoK,EAAYxC,UAAU,GAAG5H,OAAO,CACvD,IAAImM,EAAa/B,EAAYxC,UAAU,GAAG6E,KAAK,GAC3CC,EAAWtC,EAAY/D,IAAIjD,MAAM,EAAEgH,EAAYxC,UAAU,GAAG5H,QAAQyM,KAAK,GAC7E/E,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAOqE,GACzBhG,KAAM0D,EAAYxC,UAAU,GAAGjB,KAAI,SAAUC,GACzC,MAAO,CACHJ,MAAOI,aAOzB,GAAY,qBAATtB,GACL,GAAG8E,EAAYxC,UAAU5H,OAAO,GACzBoK,EAAY9D,IAAItG,QAAQoK,EAAYxC,UAAU,GAAG5H,OAAO,CACvD,IAAImM,EAAa/B,EAAYxC,UAAU,GAAG6E,KAAK,GAC3CE,EAAWvC,EAAY9D,IAAIlD,MAAM,EAAEgH,EAAYxC,UAAU,GAAG5H,QAAQyM,KAAK,GAC7E/E,EAAM,CACFpC,KAAMA,EACNK,MAAOwG,EAAW9D,OAAOsE,GACzBjG,KAAM0D,EAAYxC,UAAU,GAAGjB,KAAI,SAAUC,GACzC,MAAO,CACHJ,MAAOI,aAMzB,GAAY,YAATtB,EACF8E,EAAYtC,QAAQ9H,OAAO,IAC1B0H,EAAM,CACFpC,KAAMA,EACNK,MAAOyE,EAAYtC,QAAQ,GAAG2E,KAAK,GACnC/F,KAAM0D,EAAYtC,QAAQ,GAAGnB,KAAI,SAAUC,GACvC,MAAO,CACHP,IAAKO,aAKnB,GAAY,YAATtB,EACF8E,EAAYvC,QAAQ7H,OAAO,IAC1B0H,EAAM,CACFpC,KAAMA,EACNK,MAAOyE,EAAYvC,QAAQ,GAAG4E,KAAK,GACnC/F,KAAM0D,EAAYvC,QAAQ,GAAGlB,KAAI,SAAUC,GACvC,MAAO,CACHN,IAAKM,aAKnB,GAAY,cAATtB,EACF8E,EAAYxC,UAAU5H,OAAO,IAC5B0H,EAAM,CACFpC,KAAMA,EACNK,MAAOyE,EAAYxC,UAAU,GAAG6E,KAAK,GACrC/F,KAAM0D,EAAYxC,UAAU,GAAGjB,KAAI,SAAUC,GACzC,MAAO,CACHJ,MAAOI,aAKrB,GAAY,OAATtB,GACF8E,EAAY5C,QAAQxH,OAAO,GAAGoK,EAAY3C,QAAQzH,OAAO,EACxD,MAAO,CACHsF,KAAMA,EACNK,MAAOyE,EAAY5C,QAAQa,OAAO+B,EAAY3C,SAC9ClB,GAAI6D,EAAY5C,QAAQa,OAAO+B,EAAY3C,UAKvD,OAAOC,I,iCAIAkC,GAMP,IALA,IAAIlE,EAAYpC,KAAK0D,OAAOtB,UAExBI,EAAYJ,EAAU,GACtBK,EAAU,CAACD,GACXE,EAAQ,GACJlG,EAAE,EAAGA,EAAE4F,EAAU1F,OAAQF,IAC1B4F,EAAU5F,GAAGqF,SAAWW,EAAUX,QACjCa,EAAM1F,KAAKyF,GACXA,EAAU,CAACL,EAAU5F,KAErBiG,EAAQzF,KAAKoF,EAAU5F,IAE3BgG,EAAYJ,EAAU5F,GAE1BkG,EAAM1F,KAAKyF,GAMX,IAJA,IAAIE,EAAa,GACbC,EAAa,GACbC,EAAa,GACbC,EAAa,GACTtG,EAAE,EAAGA,EAAEkG,EAAMhG,OAAQF,IACF,IAApBkG,EAAMlG,GAAGE,OACRmG,EAAW7F,KAAK0F,EAAMlG,IACG,IAApBkG,EAAMlG,GAAGE,OACdkG,EAAW5F,KAAK0F,EAAMlG,IACG,IAApBkG,EAAMlG,GAAGE,OACdiG,EAAW3F,KAAK0F,EAAMlG,IACG,IAApBkG,EAAMlG,GAAGE,QACdoG,EAAW9F,KAAK0F,EAAMlG,IAI9B,IAAIwF,EAAOsE,EAAQtE,KACfoC,EAAM,KAEV,GAAY,QAATpC,GACC,GAAGY,EAAWlG,OAAO,GACjB,IAAI,IAAIF,EAAE,EAAGA,EAAEoG,EAAWlG,OAAQF,IAC9B,GAAGoG,EAAWpG,GAAG,GAAGqF,OAAOyE,EAAQtD,IAAI,GAAGnB,OAAO,CAC7CuC,EAAM,CACFpC,KAAMA,EACNK,MAAOO,EAAWpG,GAClBwG,IAAKJ,EAAWpG,IAEpB,YAGN,GAAGqG,EAAWnG,OAAO,EACvB,IAAI,IAAIF,EAAE,EAAGA,EAAEqG,EAAWnG,OAAQF,IAC9B,GAAGqG,EAAWrG,GAAG,GAAGqF,OAAOyE,EAAQtD,IAAI,GAAGnB,OAAO,CAC7C,IAAIQ,EAAQQ,EAAWrG,GAAGsD,MAAM,EAAE,GAClCsE,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPW,IAAKX,GAET,YAIV,GAAY,iBAATL,GACL,GAAGa,EAAWnG,OAAO,EACjB,IAAI,IAAIF,EAAE,EAAGA,EAAEqG,EAAWnG,OAAQF,IAC9B,GAAGqG,EAAWrG,GAAG,GAAGqF,OAAOyE,EAAQpD,MAAM,GAAGrB,OAAO,CAE/C,IAAIkB,OAAG,EACP,GAAGJ,EAAWjG,OAAO,EACjBqG,EAAMJ,EAAW,QACf,GAAGC,EAAWlG,OAAO,EACvBqG,EAAMH,EAAW,GAAG9C,MAAM,EAAE,QAC1B,GAAG+C,EAAWnG,OAAO,EACvB,IAAI,IAAIgB,EAAE,EAAGA,EAAEmF,EAAWnG,OAAQgB,IAC3BA,IAAIlB,IAGPuG,EAAMF,EAAWnF,GAAGoC,MAAM,EAAE,IAIjCiD,IACCqB,EAAM,CACFpC,KAAMA,EACNK,MAAOQ,EAAWrG,GAAGuI,OAAOhC,GAC5BG,MAAOL,EAAWrG,GAClBuG,IAAKA,IAGb,YAKV,GAAY,iBAATf,GACL,GAAGa,EAAWnG,OAAO,EACjB,IAAI,IAAIF,EAAE,EAAGA,EAAEqG,EAAWnG,OAAQF,IAC9B,GAAGqG,EAAWrG,GAAG,GAAGqF,OAAOyE,EAAQpD,MAAM,GAAGrB,OAAO,CAE/C,IAAImB,OAAG,EACP,GAAGJ,EAAWlG,OAAO,EACjBsG,EAAMJ,EAAW,QACf,GAAGC,EAAWnG,OAAO,EACvB,IAAI,IAAIgB,EAAE,EAAGA,EAAEmF,EAAWnG,OAAQgB,IAC3BA,IAAIlB,IAGPwG,EAAMH,EAAWnF,GAAGoC,MAAM,EAAE,IAIjCkD,IACCoB,EAAM,CACFpC,KAAMA,EACNK,MAAOQ,EAAWrG,GAAGuI,OAAO/B,GAC5BE,MAAOL,EAAWrG,GAClBwG,IAAKA,IAGb,YAIV,GAAY,qBAAThB,GACL,GAAGa,EAAWnG,QAAQ4J,EAAQlD,KAAK1G,OAC/B,IAAI,IAAIF,EAAE,EAAGA,EAAEqG,EAAWnG,OAAO4J,EAAQlD,KAAK1G,OAAO,EAAGF,IACpD,GAAGqG,EAAWrG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK,GAAGF,MAAM,GAAGrB,QAAUgB,EAAWrG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK1G,OAAO,IAAImG,EAAWrG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAUgB,EAAWrG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAQ,GAAG,CAI7M,IAFA,IAAI2C,EAAU,GAEN9G,EAAE,EAAGA,EAAEiF,EAAWjG,QAAQ8H,EAAQ9H,OAAO4J,EAAQlD,KAAK1G,OAAQgB,IAClE8G,EAAQxH,KAAK2F,EAAWjF,IAG5B,IAAI,IAAIA,EAAE,EAAGA,EAAEkF,EAAWlG,QAAQ8H,EAAQ9H,OAAO4J,EAAQlD,KAAK1G,OAAQgB,IAClE8G,EAAQxH,KAAK4F,EAAWlF,GAAGoC,MAAM,EAAE,IAChC0E,EAAQ9H,OAAO4J,EAAQlD,KAAK1G,QAC3B8H,EAAQxH,KAAK4F,EAAWlF,GAAGoC,MAAM,EAAE,IAI3C,IAAI,IAAIpC,EAAE,EAAGA,EAAEmF,EAAWnG,QAAQ8H,EAAQ9H,OAAO4J,EAAQlD,KAAK1G,OAAQgB,IAC/DA,GAAGlB,GAAGkB,GAAGlB,EAAE8J,EAAQlD,KAAK1G,OAAO,IAGlC8H,EAAQxH,KAAK6F,EAAWnF,GAAGoC,MAAM,EAAE,IAChC0E,EAAQ9H,OAAO4J,EAAQlD,KAAK1G,QAC3B8H,EAAQxH,KAAK6F,EAAWnF,GAAGoC,MAAM,EAAE,IAEpC0E,EAAQ9H,OAAO4J,EAAQlD,KAAK1G,QAC3B8H,EAAQxH,KAAK6F,EAAWnF,GAAGoC,MAAM,EAAE,KAI3C,GAAG0E,EAAQ9H,SAAW4J,EAAQlD,KAAK1G,OAAO,CAItC,IAFA,IAAI2F,EAAQ,GACRe,EAAO,GACH1F,EAAE,EAAGA,EAAE4I,EAAQlD,KAAK1G,OAAQgB,IAAI,CACpC2E,EAAQA,EAAM0C,OAAOlC,EAAWrG,EAAEkB,IAClC2E,EAAQA,EAAM0C,OAAOP,EAAQhI,IAC7B,IAAI+M,EAAW,CACXrG,MAAOL,EAAWrG,EAAEkB,GACpBqF,IAAKyB,EAAQhI,IAEjB4G,EAAKpG,KAAKuM,GAGdnF,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPe,KAAMA,GAGd,YAKV,GAAY,qBAATpB,GACL,GAAGa,EAAWnG,QAAQ4J,EAAQlD,KAAK1G,OAC/B,IAAI,IAAIF,EAAE,EAAGA,EAAEqG,EAAWnG,OAAO4J,EAAQlD,KAAK1G,OAAO,EAAGF,IACpD,GAAGqG,EAAWrG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK,GAAGF,MAAM,GAAGrB,QAAUgB,EAAWrG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK1G,OAAO,IAAImG,EAAWrG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAUgB,EAAWrG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAQ,GAAG,CAI7M,IAFA,IAAI0C,EAAU,GAEN7G,EAAE,EAAGA,EAAEkF,EAAWlG,QAAQ6H,EAAQ7H,OAAO4J,EAAQlD,KAAK1G,OAAQgB,IAClE6G,EAAQvH,KAAK4F,GAGjB,IAAI,IAAIlF,EAAE,EAAGA,EAAEmF,EAAWnG,QAAQ6H,EAAQ7H,OAAO4J,EAAQlD,KAAK1G,OAAQgB,IAC/DA,GAAGlB,GAAGkB,GAAGlB,EAAE8J,EAAQlD,KAAK1G,OAAO,GAGlC6H,EAAQvH,KAAK6F,EAAWnF,GAAGoC,MAAM,EAAE,IAGvC,GAAGyE,EAAQ7H,SAAW4J,EAAQlD,KAAK1G,OAAO,CAItC,IAFA,IAAI2F,EAAQ,GACRe,EAAO,GACH1F,EAAE,EAAGA,EAAE4I,EAAQlD,KAAK1G,OAAQgB,IAAI,CACpC2E,EAAQA,EAAM0C,OAAOlC,EAAWrG,EAAEkB,IAClC2E,EAAQA,EAAM0C,OAAOR,EAAQ/H,IAC7B,IAAI+M,EAAW,CACXrG,MAAOL,EAAWrG,EAAEkB,GACpBsF,IAAKuB,EAAQ/H,IAEjB4G,EAAKpG,KAAKuM,GAGdnF,EAAM,CACFpC,KAAMA,EACNK,MAAOA,EACPe,KAAMA,GAGd,YAKV,GAAY,YAATpB,GACL,GAAGW,EAAWjG,QAAQ4J,EAAQlD,KAAK1G,OAC/B,IAAI,IAAIF,EAAE,EAAGA,EAAEmG,EAAWjG,OAAO4J,EAAQlD,KAAK1G,OAAO,EAAGF,IACpD,GAAGmG,EAAWnG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK,GAAGL,IAAI,GAAGlB,QAAUc,EAAWnG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK1G,OAAO,IAAIiG,EAAWnG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAUc,EAAWnG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAQ,GAAG,CAC3M,IAAIuB,EAAOT,EAAW7C,MAAMtD,EAAEA,EAAE8J,EAAQlD,KAAK1G,QAC7C0H,EAAM,CACFpC,KAAMA,EACNK,MAAOe,EAAK+F,KAAK,GACjB/F,KAAMA,EAAKC,KAAI,SAAUC,GACrB,MAAO,CACHP,IAAKO,OAIjB,YAIV,GAAY,YAATtB,GACL,GAAGY,EAAWlG,QAAQ4J,EAAQlD,KAAK1G,OAC/B,IAAI,IAAIF,EAAE,EAAGA,EAAEoG,EAAWlG,OAAO4J,EAAQlD,KAAK1G,OAAO,EAAGF,IACpD,GAAGoG,EAAWpG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK,GAAGJ,IAAI,GAAGnB,QAAUe,EAAWpG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK1G,OAAO,IAAIkG,EAAWpG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAUe,EAAWpG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAQ,GAAG,CAC3M,IAAIuB,EAAOR,EAAW9C,MAAMtD,EAAEA,EAAE8J,EAAQlD,KAAK1G,QAC7C0H,EAAM,CACFpC,KAAMA,EACNK,MAAOe,EAAK+F,KAAK,GACjB/F,KAAMA,EAAKC,KAAI,SAAUC,GACrB,MAAO,CACHN,IAAKM,OAIjB,YAIV,GAAY,cAATtB,GACFa,EAAWnG,QAAQ4J,EAAQlD,KAAK1G,OAC/B,IAAI,IAAIF,EAAE,EAAGA,EAAEqG,EAAWnG,OAAO4J,EAAQlD,KAAK1G,OAAO,EAAGF,IACpD,GAAGqG,EAAWrG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK,GAAGJ,IAAI,GAAGnB,QAAUgB,EAAWrG,GAAG,GAAGqF,OAAOyE,EAAQlD,KAAK1G,OAAO,IAAImG,EAAWrG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAUgB,EAAWrG,EAAE8J,EAAQlD,KAAK1G,OAAO,GAAG,GAAGmF,QAAQ,GAAG,CAC3M,IAAIuB,EAAOP,EAAW/C,MAAMtD,EAAEA,EAAE8J,EAAQlD,KAAK1G,QAC7C0H,EAAM,CACFpC,KAAMA,EACNK,MAAOe,EAAK+F,KAAK,GACjB/F,KAAMA,EAAKC,KAAI,SAAUC,GACrB,MAAO,CACHJ,MAAOI,OAInB,MAMhB,OAAOc,I,mCAGElC,EAAGC,GACZ,OAAOD,EAAEL,OAASM,EAAEN,S,gCAGdK,EAAGC,GACT,OAAOD,EAAE,GAAGL,OAASM,EAAE,GAAGN,S,+BAGrBK,EAAGC,GACR,OAAOD,EAAE,GAAG,GAAGL,OAASM,EAAE,GAAG,GAAGN,W,MAKzB4B,IC7lDT+F,E,WACF,WAAY7H,GAAO,uBACfA,EAAQA,GAAS,GACjB3B,KAAKyJ,OAAQ,EACbzJ,KAAK0J,QAAU,EACf1J,KAAKoC,UAAY,GACjBpC,KAAK1B,KAAOqD,EAAMrD,MAAQ,SAASqL,KAAKC,SACxC5J,KAAKgC,KAAOL,EAAMK,MAAQ,UAC1BhC,KAAKkH,KAAO,KACZlH,KAAKiH,KAAO,KACZjH,KAAK6J,QAAUlI,EAAMkI,QACrB7J,KAAK2D,KAAOhC,EAAMgC,KAClB3D,KAAK8J,GAAK,IAAIrG,EAAG,CACbC,OAAQ1D,KACR2D,KAAMhC,EAAMgC,OAEhB3D,KAAK8G,YAAc,KACnB9G,KAAK+J,YAAc,KAEhB/J,KAAK6J,SACJ7J,KAAKgK,Y,0DAIFC,GACPjK,KAAK0J,QAAUO,EACfjK,KAAK2D,KAAKuG,mB,kCAIV,IAAIC,EAAOnK,KACRmK,EAAKN,UACAM,EAAKV,OACLU,EAAKC,YAGQ,YAAlBD,EAAKxG,KAAK0G,OAAqBF,EAAKxG,KAAK2G,uBAAyBH,GACjEA,EAAKI,WAAW,GAGpBC,YAAW,WACPL,EAAKH,cACP,O,iCAIFhK,KAAKyJ,OAAQ,EACbzJ,KAAK2D,KAAKyG,a,8BAIVpK,KAAKyJ,OAAQ,EACbzJ,KAAK0J,QAAU,EACf1J,KAAKoC,UAAY,GACjBpC,KAAKgC,KAAO,UACZhC,KAAK8G,YAAc,KACnB9G,KAAK+J,YAAc,O,uCAKnB/J,KAAK8G,YAAc9G,KAAK8J,GAAGW,eAAezK,KAAKoC,WAC/CsI,QAAQC,IAAI3K,KAAK8G,e,+BAGZzE,GACLrC,KAAKoC,UAAUpF,KAAKqF,K,kCAIpBrC,KAAKoC,UAAUE,KAAKtC,KAAKuC,gB,mCAGhBL,EAAGC,GACZ,OAAOD,EAAEL,OAASM,EAAEN,S,mCAIpB,IAAIyE,EAAUtG,KAAKkH,KAAK6C,YACxB,SAAIzD,GAA4B,SAAjBA,EAAQtE,OACnBsE,EAAUtG,KAAKiH,KAAK8C,YAChBzD,GAA4B,SAAjBA,EAAQtE,QAIpBsE,I,iCAKP,IAAI6D,EAAOnK,KAEXmK,EAAKM,iBAELD,YAAW,WACP,IAAIlE,EAAU6D,EAAKS,aAChBtE,EACC6D,EAAKL,GAAGe,UAAUvE,GAElB6D,EAAKL,GAAGgB,kBAEd,O,gCAII1G,GACNA,EAAIV,OAAS1D,KACbA,KAAK2D,KAAKoH,YACV/K,KAAK+J,YAAc3F,EACnBpE,KAAK2D,KAAK2E,aAAelE,EACzBpE,KAAK2D,KAAKsD,S,sDAGkB7C,GAC5B,IAAI4G,EAAW,GACf,GAAgB,SAAb5G,EAAIpC,KAEH,OADAhC,KAAKsB,UAAU8C,IACR,EAGX,IADA,IAAIhC,EAAYgC,EAAI/B,MACZ7F,EAAE,EAAGA,EAAE4F,EAAU1F,OAAQF,IAAI,CAEjC,IAAI6F,EAAQrC,KAAKiL,6BAA6B7I,EAAU5F,GAAGqF,QAC3D,IAAGQ,EAIC,OADArC,KAAKkL,oBAAoBF,IAClB,EAHPA,EAAShO,KAAKqF,GAOtB,OADArC,KAAKsB,UAAU8C,IACR,I,oCAGGhB,GACV,IAAI4H,EAAW,GACf,GAAe,SAAZ5H,EAAK,GACJ,MAAO,CAAC,QAEZ,IAAI,IAAI5G,EAAE,EAAGA,EAAE4G,EAAK1G,OAAQF,IAAI,CAC5B,IAAI2O,EAAK/H,EAAK5G,GACV6F,EAAQrC,KAAKiL,6BAA6BE,EAAGtJ,QACjD,IAAGQ,EAIC,OADArC,KAAKkL,oBAAoBF,IAClB,EAHPA,EAAShO,KAAKqF,GAMtB,OAAO2I,I,sCAGKzH,GACZ,IAAIyH,EAAW,GACf,GAAW,SAARzH,EACC,MAAO,CAAC,QAEZ,IAAI,IAAI/G,EAAE,EAAGA,EAAE+G,EAAI7G,OAAQF,IAAI,CAC3B,IAAIoF,EAAO2B,EAAI/G,GACXqF,EAASH,EAAMI,aAAaF,GAC5BS,EAAQrC,KAAKiL,6BAA6BpJ,GAC9C,IAAGQ,EAIC,OADArC,KAAKkL,oBAAoBF,IAClB,EAHPA,EAAShO,KAAKqF,GAMtB,OAAO2I,I,0CAGS5H,GAChB,MAAOA,EAAK1G,OAAO,EAAE,CACjB,IAAI2F,EAAQe,EAAKxF,OAAO,EAAE,GAAG,GAC7BoC,KAAKoC,UAAUpF,KAAKqF,GAExBrC,KAAKoL,c,iCAGEhI,GACP,GAAGA,EAAK,CACJ,IAAIgB,EAAM1C,EAAM2J,kBAAkBjI,GAClC,GAAGgB,EAAI,CACH,GAAgB,SAAbA,EAAIpC,KAEH,OADAhC,KAAKsB,UAAU8C,IACR,EAEX,IAAIkC,EAAUtG,KAAK4K,aACnB,GAAGtE,EAAQ,CACP,GAAGA,EAAQtE,OAASoC,EAAIpC,KAAK,CACzB,IAAIsJ,EAAOtL,KAAKuL,cAAcnH,EAAKkC,GACnC,OAAGgF,GACCtL,KAAKsB,UAAU8C,IACR,IAEPpE,KAAKkL,oBAAoB9H,GACzBoI,MAAM,QAAQ9J,EAAM+J,kBAAkBnF,EAAQjE,SACvC,GAKX,MAAgB,OAAb+B,EAAIpC,MAGe,SAAboC,EAAIpC,MAAkC,OAAfsE,EAAQtE,MAFpChC,KAAKsB,UAAU8C,IACR,IAMXpE,KAAKkL,oBAAoB9H,GACzBoI,MAAM,QAAQlF,EAAQtE,KAAK,MACpB,GAIX,OADAhC,KAAKsB,UAAU8C,IACR,EAMX,OAFApE,KAAKkL,oBAAoB9H,GACzBoI,MAAM,UACC,EAKX,OADAA,MAAM,WACC,I,sCAICpJ,GACZ,GAAGpC,KAAK2D,KAAK+H,gBAAgB1L,KAEzB,OADAwL,MAAM,OAAOxL,KAAK2D,KAAK+H,cAAcpN,KAAK,QACnC,EAGX,IAAI8E,EAAOpD,KAAK2L,cAAcvJ,GAC9B,OAAOpC,KAAK4L,WAAWxI,K,mCAGdG,GACT,GAAGvD,KAAK2D,KAAK+H,gBAAgB1L,KAEzB,OADAwL,MAAM,OAAOxL,KAAK2D,KAAK+H,cAAcpN,KAAK,QACnC,EAGX,IAAI8E,EAAOpD,KAAK6L,gBAAgBtI,GAChC,OAAOvD,KAAK4L,WAAWxI,K,oCAGb0I,EAAMC,GAChB,QAAGD,EAAK1I,OAAQ2I,EAAK3I,MACd0I,EAAK1I,KAAK1G,SAASqP,EAAK3I,KAAK1G,UAKlB,QAAdoP,EAAK9J,KACE8J,EAAK/I,IAAI,GAAGlB,OAASkK,EAAKhJ,IAAI,GAAGlB,OACnB,QAAdiK,EAAK9J,KACL8J,EAAK9I,IAAI,GAAGnB,OAASkK,EAAK/I,IAAI,GAAGnB,OACnB,UAAdiK,EAAK9J,MAES,iBAAd8J,EAAK9J,MAES,iBAAd8J,EAAK9J,KAHL8J,EAAK5I,MAAM,GAAGrB,OAASkK,EAAK7I,MAAM,GAAGrB,OAKvB,gBAAdiK,EAAK9J,MAES,gBAAd8J,EAAK9J,KADL8J,EAAK3I,KAAK,GAAGtB,OAASkK,EAAK5I,KAAK,GAAGtB,OAGrB,qBAAdiK,EAAK9J,MAES,qBAAd8J,EAAK9J,KADL8J,EAAK1I,KAAK,GAAGF,MAAM,GAAGrB,OAASkK,EAAK3I,KAAK,GAAGF,MAAM,GAAGrB,OAGvC,YAAdiK,EAAK9J,KACL8J,EAAK1I,KAAK,GAAGL,IAAI,GAAGlB,OAASkK,EAAK3I,KAAK,GAAGL,IAAI,GAAGlB,OACnC,YAAdiK,EAAK9J,KACL8J,EAAK1I,KAAK,GAAGJ,IAAI,GAAGnB,OAASkK,EAAK3I,KAAK,GAAGJ,IAAI,GAAGnB,OACnC,cAAdiK,EAAK9J,KACL8J,EAAK1I,KAAK,GAAGF,MAAM,GAAGrB,OAASkK,EAAK3I,KAAK,GAAGF,MAAM,GAAGrB,OACvC,SAAdiK,EAAK9J,KACL8J,EAAK3I,KAAK,GAAGtB,OAASkK,EAAK5I,KAAK,GAAGtB,YADvC,K,mDAMkBA,GACzB,IAAI,IAAIrF,EAAE,EAAGA,EAAEwD,KAAKoC,UAAU1F,OAAQF,IAClC,GAAGwD,KAAKoC,UAAU5F,GAAGqF,SAAWA,EAC5B,OAAO7B,KAAKoC,UAAUxE,OAAOpB,EAAE,GAAG,GAG1C,OAAO,I,0CAIP,IAAIe,EAASmE,EAAM+J,kBAAkBzL,KAAKoC,WAC1C,OAAO7E,I,4CAIP,IAAIyC,KAAK+J,YACL,MAAO,GAEX,IAAIxM,EAASmE,EAAM+J,kBAAkBzL,KAAK+J,YAAY1H,OACtD,OAAO9E,M,KAKAiM,ICxTTwC,E,WACF,aAAc,uBACVhM,KAAKiM,WAAa,GAClBjM,KAAKoC,UAAY,GACjBpC,KAAKsI,aAAe,KACpBtI,KAAKqI,aAAe,GACpBrI,KAAK0L,cAAgB,KACrB1L,KAAKsK,qBAAuB,KAC5BtK,KAAKkM,aAAe,EACpBlM,KAAKmM,MAAQ,KACbnM,KAAKoM,UAAY,GACjBpM,KAAKqM,OAASrM,KAAKoM,UACnBpM,KAAKqK,MAAQ,QAEbrK,KAAKsM,O,sDAILtM,KAAKuM,gBACLvM,KAAKwM,mB,iCAIFxM,KAAKiM,WAAW,IAAIjM,KAAKiM,WAAW,GAAGxC,OAAOzJ,KAAKiM,WAAW,IAAIjM,KAAKiM,WAAW,GAAGxC,OAAOzJ,KAAKiM,WAAW,IAAIjM,KAAKiM,WAAW,GAAGxC,QAClIzJ,KAAKsB,YACLtB,KAAKyM,kB,qCAMTzM,KAAKqK,MAAQ,UACb,IAAIqC,EAAQ1M,KAAK2M,sBAAsB,EAAE,GACzC3M,KAAKsK,qBAAuBtK,KAAKiM,WAAWS,K,uCAI5C,IAAIvC,EAAOnK,KAEXA,KAAKkM,eACoB,IAAtBlM,KAAKkM,aAMJlM,KAAKsK,qBAAuBtK,KAAKsK,qBAAqBrD,KALtDuD,YAAW,WACPL,EAAKyC,aACP,O,iCAQN,IAAIxG,EAAWpG,KAAKiM,WAAWnM,MAAM,GAAGwC,KAAKtC,KAAK6M,eAC9CV,EAAQ/F,EAAS,GACrB+F,EAAMnK,KAAO,QACbhC,KAAKmM,MAAQA,EAEbnM,KAAK8M,U,oCAGK5K,EAAGC,GACb,OAAOA,EAAEuH,QAAUxH,EAAEwH,U,kCAIrB1J,KAAKqM,OAASrM,KAAKoM,Y,iCAInB,GAAkB,SAAfpM,KAAKqK,MAAR,CAGArK,KAAKqM,SAEc,IAAhBrM,KAAKqM,QACJrM,KAAK+M,UAGT,IAAI5C,EAAOnK,KACXwK,YAAW,WACPL,EAAK6C,aACP,Q,gCAIFhN,KAAK0L,cAAcuB,aAAa,U,8BAKhCjN,KAAKqK,MAAQ,OACbrK,KAAKgN,WACLhN,KAAK0L,cAAgB1L,KAAKmM,MACvBnM,KAAK0L,cAAc7B,SAClB7J,KAAK0L,cAAcwB,a,8BAMvBlN,KAAKiM,WAAW,GAAGkB,QACnBnN,KAAKiM,WAAW,GAAGkB,QACnBnN,KAAKiM,WAAW,GAAGkB,QAEnBnN,KAAKoC,UAAY,GACjBpC,KAAKsI,aAAe,KACpBtI,KAAKqI,aAAe,GACpBrI,KAAK0L,cAAgB,KACrB1L,KAAKsK,qBAAuB,KAC5BtK,KAAKkM,aAAe,EACpBlM,KAAKmM,MAAQ,KACbnM,KAAKqM,OAASrM,KAAKoM,UACnBpM,KAAKqK,MAAQ,QAEbrK,KAAKuM,kB,6BAIL,IAAIa,EAAOpN,KAAKqN,gBACbD,EACCpN,KAAKsN,YAGTtN,KAAKuN,YACLvN,KAAK0L,cAAgB1L,KAAK0L,cAAczE,KACrCjH,KAAK0L,cAAc7B,SAClB7J,KAAK0L,cAAcwB,c,iCAKvB1B,MAAM,SAASxL,KAAK0L,cAAcpN,KAAK,KAAK0B,KAAK0L,cAAc1J,KAAK,QAEpEhC,KAAKmN,U,sCAIL,GAA2C,IAAxCnN,KAAK0L,cAActJ,UAAU1F,OAC5B,OAAO,I,kCAKRsD,KAAKsI,eACJtI,KAAKqI,aAAarL,KAAKgD,KAAKsI,cAC5BtI,KAAKsI,aAAe,Q,uCAKxB,EAAE,CACE,IAAIjG,EAAQrC,KAAKoC,UAAUxE,OAAO,EAAE,GAAG,GACvCoC,KAAKmM,MAAMqB,SAASnL,SACjBrC,KAAKoC,UAAU1F,OAAO,GAE7BsD,KAAKmM,MAAMf,c,kCAIX,IAAI1H,EAAS1D,KAAKiM,WAAW,GAC7B,EAAE,CACE,IAAIS,EAAQ1M,KAAK2M,sBAAsB,EAAE3M,KAAKoC,UAAU1F,OAAO,GAC3D2F,EAAQrC,KAAKoC,UAAUxE,OAAO8O,EAAM,GAAG,GAC3ChJ,EAAO8J,SAASnL,GAChBqB,EAASA,EAAOuD,WACbjH,KAAKoC,UAAU1F,OAAO,GAE7B,IAAI,IAAIF,EAAE,EAAGA,EAAEwD,KAAKiM,WAAWvP,OAAQF,IACnCwD,KAAKiM,WAAWzP,GAAG4O,c,uCAKvBpL,KAAKiM,WAAa,GAClB,IAAIwB,EAAU,IAAIjE,EAAO,CACrBlL,KAAM,SACNuL,SAAS,EACTlG,KAAM3D,OAEN0N,EAAU,IAAIlE,EAAO,CACrBlL,KAAM,OACNuL,SAAS,EACTlG,KAAM3D,OAEN2N,EAAU,IAAInE,EAAO,CACrBlL,KAAM,OACNuL,SAAS,EACTlG,KAAM3D,OAEVA,KAAKiM,WAAa,CAACwB,EAAQC,EAAQC,GAEnC3N,KAAKiM,WAAW,GAAGhF,KAAOjH,KAAKiM,WAAW,GAC1CjM,KAAKiM,WAAW,GAAGhF,KAAOjH,KAAKiM,WAAW,GAC1CjM,KAAKiM,WAAW,GAAGhF,KAAOjH,KAAKiM,WAAW,GAC1CjM,KAAKiM,WAAW,GAAG/E,KAAOlH,KAAKiM,WAAW,GAC1CjM,KAAKiM,WAAW,GAAG/E,KAAOlH,KAAKiM,WAAW,GAC1CjM,KAAKiM,WAAW,GAAG/E,KAAOlH,KAAKiM,WAAW,K,sCAK1CjM,KAAKoC,UAAY,GACjB,IAAI,IAAIP,EAAO,EAAGA,GAAQ,GAAIA,IAC1B,IAAI,IAAIG,EAAK,EAAGA,EAAK,EAAGA,IAAO,CAC3B,IAAIK,EAAQ,IAAIX,EAAM,CAClBG,OAAQA,EACRG,KAAMA,IAEVhC,KAAKoC,UAAUpF,KAAKqF,GAG5B,IAAI,IAAIR,EAAO,GAAIA,GAAQ,GAAIA,IAAS,CACpC,IAAIQ,EAAQ,IAAIX,EAAM,CAClBG,OAAQA,IAEZ7B,KAAKoC,UAAUpF,KAAKqF,M,0CAMxB,IAAI9E,EAAS,GACbA,GAAUmE,EAAM+J,kBAAkBzL,KAAKoC,WACvC7E,GAAU,KACV,IAAI,IAAIf,EAAE,EAAGA,EAAEwD,KAAKqI,aAAa3L,OAAQF,IACrCe,GAAUmE,EAAM+J,kBAAkBzL,KAAKqI,aAAa7L,GAAG6F,OACpD7F,EAAEwD,KAAKqI,aAAa3L,OAAO,IAC1Ba,GAAU,KAKlB,OAFAA,GAAU,KACVA,GAAUyC,KAAKsI,aAAa5G,EAAM+J,kBAAkBzL,KAAKsI,aAAajG,OAAO,GACtE9E,I,4CAGWqQ,EAAKC,GACvB,OAAOlE,KAAKmE,MAAMnE,KAAKC,UAAYiE,EAAMD,EAAM,IAAMA,M,KAI9C5B,IC5Lf,GACE1N,KAAM,aACNpC,KAFF,WAGI,MAAO,CACLA,KAAN,QACMyH,KAAM,IAAI,EACVtC,UAAW,KAGf0M,SAAU,CAERrN,WAAY,WACV,IAAN,YACA,IACM,MAAO,CACb,uFACA,oCACA,kDAGI,WAAJ,WACM,IAAN,YACA,IACM,MAAN,CACA,uFACA,oCACA,kDAGI,WAAJ,WACM,IAAN,YACA,IACM,MAAN,CACA,uFACA,oCACA,kDAGI,QAAJ,WACM,IAAN,YACM,MAAN,CACA,OACA,yBAIEsN,QA9CF,WA+CIhO,KAAK9D,KAAO8D,KAAK2D,KAAKsI,WAAW,GAAG3N,MAEtC2P,QAAF,CACIC,OADJ,aAKI5M,UALJ,WAMM,IAAN,YACA,+CACA,IACQ,KAAR,eAIIC,KAbJ,WAcMvB,KAAK2D,KAAKsI,WAAW,GAAGgB,aAAa,SAGvCxL,QAjBJ,WAkBM,KAAN,WACM,KAAN,gBC1HoV,I,YCOhV0M,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,E,QClBX,EAAS,WAAa,IAAIpO,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACI,YAAY,CAAC,cAAc,OAAO,SAAW,QAAQ,KAAO,IAAI,MAAQ,IAAI,IAAM,IAAI,OAAS,IAAI,oBAAoB,YAAY,kBAAkB,SAAS6N,MAAM,CAAEC,gBAAgB,OAAO,EAAQ,QAAoB,MAAO,CAAClO,EAAG,QAAQ,CAACiO,MAAM,CAAGE,WAAYvO,EAAIwO,iBAAmB,MAAQlO,MAAM,CAAC,MAAQ,GAAG,SAAW,GAAG,KAAO,GAAG,SAAW,KAAK,CAACF,EAAG,SAAS,CAACE,MAAM,CAAC,IAAM,EAAQ,WAAuBN,EAAIS,GAAG,0BAA0BL,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,OAAM,EAAQgC,WAAW,UAAUR,YAAY,CAAC,MAAQ,QAAQ,OAAS,QAAQ,MAAQ,OAAO,SAAW,QAAQ,KAAO,QAAQ,IAAM,MAAM,mBAAmB,YAAY,aAAa,WAAW,CAACJ,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,QAAQ,YAAY,eAAe,CAACR,EAAIS,GAAG,WAAWL,EAAG,MAAMJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAIyB,QAAQ,IAAI,SAASrB,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAwB,UAAjBgB,EAAI4D,KAAK0G,MAAiBtJ,WAAW,yBAAyBR,YAAY,CAAC,YAAY,OAAO,MAAQ,QAAQ,SAAW,QAAQ,OAAS,QAAQ,UAAU,OAAO6N,MAAM,CAAGE,WAAYvO,EAAIyO,iBAAiB,GAAK,OAAS,CAACrO,EAAG,SAAS,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,OAAQgB,EAAI4D,KAAKsI,WAAW,GAAGxC,MAAO1I,WAAW,8BAA8BR,YAAY,CAAC,YAAY,OAAO,OAAS,OAAO,cAAc,OAAO,gBAAgB,MAAM,mBAAmB,aAAaU,GAAG,CAAC,UAAYlB,EAAIqK,WAAW,CAACrK,EAAIS,GAAGT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAGxC,MAAM,MAAM,SAAStJ,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAOgB,EAAI4D,KAAKsI,WAAW,GAAQ,MAAElL,WAAW,6BAA6BR,YAAY,CAAC,MAAQ,MAAM,MAAQ,OAAO,OAAS,QAAQ,gBAAgB,MAAM,SAAW,aAAa,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAGxC,MAAM,MAAM,OAAO,SAAStJ,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAwB,YAAjBgB,EAAI4D,KAAK0G,OAAmBtK,EAAI4D,KAAK2G,uBAAuBvK,EAAI4D,KAAKsI,WAAW,GAAIlL,WAAW,2EAA2ER,YAAY,CAAC,YAAY,OAAO,MAAQ,QAAQ,SAAW,QAAQ,OAAS,QAAQ,UAAU,OAAO6N,MAAM,CAAGE,WAAYvO,EAAIyO,iBAAiB,GAAK,OAAS,CAACrO,EAAG,SAAS,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,OAAM,EAAOgC,WAAW,SAASR,YAAY,CAAC,YAAY,OAAO,OAAS,OAAO,cAAc,OAAO,gBAAgB,MAAM,mBAAmB,aAAaU,GAAG,CAAC,UAAY,SAASC,GAAQ,OAAOnB,EAAI4D,KAAKsI,WAAW,GAAG1B,WAAW,MAAM,CAACxK,EAAIS,GAAG,QAAQL,EAAG,SAAS,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,OAAM,EAAOgC,WAAW,SAASR,YAAY,CAAC,YAAY,OAAO,OAAS,OAAO,cAAc,OAAO,gBAAgB,MAAM,mBAAmB,aAAaU,GAAG,CAAC,UAAY,SAASC,GAAQ,OAAOnB,EAAI4D,KAAKsI,WAAW,GAAG1B,WAAW,MAAM,CAACxK,EAAIS,GAAG,QAAQL,EAAG,SAAS,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,OAAM,EAAOgC,WAAW,SAASR,YAAY,CAAC,YAAY,OAAO,OAAS,OAAO,cAAc,OAAO,gBAAgB,MAAM,mBAAmB,aAAaU,GAAG,CAAC,UAAY,SAASC,GAAQ,OAAOnB,EAAI4D,KAAKsI,WAAW,GAAG1B,WAAW,MAAM,CAACxK,EAAIS,GAAG,QAAQL,EAAG,SAAS,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,OAAM,EAAOgC,WAAW,SAASR,YAAY,CAAC,YAAY,OAAO,OAAS,OAAO,cAAc,OAAO,gBAAgB,MAAM,mBAAmB,aAAaU,GAAG,CAAC,UAAY,SAASC,GAAQ,OAAOnB,EAAI4D,KAAKsI,WAAW,GAAG1B,WAAW,MAAM,CAACxK,EAAIS,GAAG,UAAUL,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAwB,SAAjBgB,EAAI4D,KAAK0G,MAAgBtJ,WAAW,wBAAwBR,YAAY,CAAC,MAAQ,QAAQ,SAAW,QAAQ,OAAS,IAAI,MAAQ,OAAO,OAAS,QAAQ,cAAc,SAAS6N,MAAM,CAAGE,WAAYvO,EAAIyO,iBAAiB,IAAM,OAAS,CAACzO,EAAIS,GAAG,QAAQL,EAAG,OAAO,CAACI,YAAY,CAAC,MAAQ,MAAM,YAAY,SAAS,CAACR,EAAIS,GAAGT,EAAIU,GAAiC,YAA9BV,EAAI4D,KAAKsI,WAAW,GAAGjK,KAAiB,KAAK,WAAW7B,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,OAAS,IAAI,MAAQ,OAAO,OAAS,SAAS6N,MAAM,CAAGE,WAAYvO,EAAIyO,iBAAmB,OAASzO,EAAI0O,GAAI1O,EAAI4D,KAAKsI,WAAW,GAAY,WAAE,SAAS3I,GAAM,OAAOnD,EAAG,MAAM,CAACuO,YAAY,kBAAkBC,MAAM,CAAE1M,SAAUqB,EAAKrB,SAAUnE,EAAgB,KAAdwF,EAAKzB,OAAa+M,EAAgB,KAAdtL,EAAKzB,QAAcZ,GAAG,CAAC,WAAa,SAASC,GAAQ,OAAOnB,EAAI8O,MAAM3N,EAAOoC,IAAO,UAAY,SAASpC,GAAQ,OAAOnB,EAAI+O,UAAUxL,MAAS,CAACnD,EAAG,OAAO,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAOuE,EAAKzB,OAAO,GAAId,WAAW,oBAAoB,CAAChB,EAAIS,GAAG,IAAIT,EAAIU,GAAG6C,EAAK1B,MAAM,YAAW,GAAGzB,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAOgB,EAAI4D,KAAK+H,gBAAgB3L,EAAI4D,KAAKsI,WAAW,GAAIlL,WAAW,4CAA4CR,YAAY,CAAC,SAAW,QAAQ,OAAS,QAAQ,MAAQ,OAAO,OAAS,QAAQ,aAAa,SAAS,CAACJ,EAAG,MAAM,CAACI,YAAY,CAAC,MAAQ,QAAQ,OAAS,QAAQ6N,MAAM,CAAGE,WAAYvO,EAAIwO,iBAAmB,OAAS,CAACpO,EAAG,SAAS,CAACI,YAAY,CAAC,OAAS,OAAO,gBAAgB,MAAM,MAAQ,OAAO,YAAY,OAAO,mBAAmB,OAAOU,GAAG,CAAC,MAAQlB,EAAIwB,OAAO,CAACxB,EAAIS,GAAG,QAAQL,EAAG,SAAS,CAACI,YAAY,CAAC,OAAS,OAAO,gBAAgB,MAAM,MAAQ,QAAQ,YAAY,OAAO,mBAAmB,aAAaU,GAAG,CAAC,MAAQlB,EAAIgP,aAAa,CAAChP,EAAIS,GAAG,QAAQL,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAOgB,EAAI4D,KAAK+H,gBAAgB3L,EAAI4D,KAAKsI,WAAW,GAAIlL,WAAW,4CAA4CR,YAAY,CAAC,MAAQ,MAAM,MAAQ,QAAQ,OAAS,QAAQ,gBAAgB,MAAM,MAAQ,OAAO,cAAc,SAAS,CAACR,EAAIS,GAAG,MAAMT,EAAIU,GAAGV,EAAI4D,KAAK0I,QAAQ,eAAgBtM,EAAI4D,KAAKsI,WAAW,GAAGlC,aAAahK,EAAI4D,KAAKsI,WAAW,GAAGlC,YAAY1H,MAAM,GAAGT,KAAMzB,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,OAAS,QAAQ,MAAQ,OAAO,OAAS,SAAS6N,MAAM,CAAGE,WAAYvO,EAAIiP,oBAAsB,OAASjP,EAAI0O,GAAI1O,EAAI4D,KAAKsI,WAAW,GAAGlC,YAAiB,OAAE,SAASzG,GAAM,OAAOnD,EAAG,MAAM,CAACuO,YAAY,YAAYC,MAAM,CAAE7Q,EAAgB,KAAdwF,EAAKzB,OAAa+M,EAAgB,KAAdtL,EAAKzB,SAAe,CAAC1B,EAAG,OAAO,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAOuE,EAAKzB,OAAO,GAAId,WAAW,oBAAoB,CAAChB,EAAIS,GAAG,IAAIT,EAAIU,GAAG6C,EAAK1B,MAAM,YAAW,GAAG7B,EAAIkP,KAAMlP,EAAI4D,KAAKsI,WAAW,GAAGlC,cAAchK,EAAI4D,KAAKsI,WAAW,GAAGlC,YAAY1H,MAAM,GAAGT,KAAMzB,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,OAAS,QAAQ,MAAQ,OAAO,OAAS,SAAS6N,MAAM,CAAGE,WAAYvO,EAAIiP,oBAAsB,OAAS,CAAC7O,EAAG,MAAM,CAACI,YAAY,CAAC,OAAS,OAAO,MAAQ,QAAQ,MAAQ,OAAO,cAAc,QAAQ,YAAY,OAAO,MAAQ,YAAY,CAACR,EAAIS,GAAG,cAAcT,EAAIkP,KAAK9O,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,IAAM,OAAO,KAAO,OAAO,OAAS,QAAQ,MAAQ,QAAQ,OAAS,YAAY,gBAAgB,MAAM,mBAAmB,QAAQ,aAAa,WAAW,CAACJ,EAAG,IAAI,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAwB,SAAjBgB,EAAI4D,KAAK0G,MAAgBtJ,WAAW,wBAAwBR,YAAY,CAAC,MAAQ,MAAM,YAAY,SAAS,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAiC,YAA9BV,EAAI4D,KAAKsI,WAAW,GAAGjK,KAAiB,KAAK,MAAM,OAAO7B,EAAG,IAAI,CAACJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAG3N,MAAM,OAAO6B,EAAG,IAAI,CAACJ,EAAIS,GAAG,OAAOT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAG7J,UAAU1F,QAAQ,SAASyD,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAOgB,EAAI4D,KAAK+H,gBAAgB3L,EAAI4D,KAAKsI,WAAW,GAAIlL,WAAW,4CAA4CR,YAAY,CAAC,MAAQ,MAAM,MAAQ,QAAQ,OAAS,QAAQ,gBAAgB,MAAM,SAAW,WAAW,OAAS,QAAQ,KAAO,MAAM,CAACR,EAAIS,GAAG,MAAMT,EAAIU,GAAGV,EAAI4D,KAAK0I,QAAQ,WAAWlM,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAwB,UAAjBgB,EAAI4D,KAAK0G,MAAiBtJ,WAAW,yBAAyBR,YAAY,CAAC,MAAQ,MAAM,MAAQ,OAAO,OAAS,QAAQ,gBAAgB,MAAM,SAAW,WAAW,OAAS,QAAQ,KAAO,IAAI,UAAU,QAAQ,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAGxC,MAAM,MAAM,OAAO,SAAU1J,EAAI4D,KAAKsI,WAAW,GAAGlC,aAAahK,EAAI4D,KAAKsI,WAAW,GAAGlC,YAAY1H,MAAM,GAAGT,KAAMzB,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,IAAM,QAAQ,KAAO,QAAQ,OAAS,UAAUR,EAAI0O,GAAI1O,EAAI4D,KAAKsI,WAAW,GAAGlC,YAAiB,OAAE,SAASzG,GAAM,OAAOnD,EAAG,MAAM,CAACuO,YAAY,YAAYC,MAAM,CAAE7Q,EAAgB,KAAdwF,EAAKzB,OAAa+M,EAAgB,KAAdtL,EAAKzB,SAAe,CAAC1B,EAAG,OAAO,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAOuE,EAAKzB,OAAO,GAAId,WAAW,oBAAoB,CAAChB,EAAIS,GAAG,IAAIT,EAAIU,GAAG6C,EAAK1B,MAAM,YAAW,GAAG7B,EAAIkP,KAAMlP,EAAI4D,KAAKsI,WAAW,GAAGlC,cAAchK,EAAI4D,KAAKsI,WAAW,GAAGlC,YAAY1H,MAAM,GAAGT,KAAMzB,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,IAAM,QAAQ,KAAO,QAAQ,OAAS,UAAU,CAACJ,EAAG,MAAM,CAACI,YAAY,CAAC,OAAS,OAAO,MAAQ,QAAQ,MAAQ,OAAO,cAAc,QAAQ,YAAY,OAAO,MAAQ,YAAY,CAACR,EAAIS,GAAG,cAAcT,EAAIkP,KAAuB,YAAjBlP,EAAI4D,KAAK0G,MAAmBlK,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,IAAM,QAAQ,KAAO,QAAQ,OAAS,UAAU,CAACJ,EAAG,MAAM,CAACI,YAAY,CAAC,OAAS,OAAO,MAAQ,QAAQ,MAAQ,OAAO,cAAc,QAAQ,YAAY,OAAO,MAAQ,YAAY,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAGvC,SAAS,UAAU3J,EAAIkP,KAAK9O,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,IAAM,OAAO,MAAQ,OAAO,OAAS,QAAQ,MAAQ,QAAQ,OAAS,YAAY,gBAAgB,MAAM,mBAAmB,QAAQ,aAAa,WAAW,CAACJ,EAAG,IAAI,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAwB,SAAjBgB,EAAI4D,KAAK0G,MAAgBtJ,WAAW,wBAAwBR,YAAY,CAAC,MAAQ,MAAM,YAAY,SAAS,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAiC,YAA9BV,EAAI4D,KAAKsI,WAAW,GAAGjK,KAAiB,KAAK,MAAM,OAAO7B,EAAG,IAAI,CAACJ,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAG3N,MAAM,OAAO6B,EAAG,IAAI,CAACJ,EAAIS,GAAG,OAAOT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAG7J,UAAU1F,QAAQ,SAASyD,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAOgB,EAAI4D,KAAK+H,gBAAgB3L,EAAI4D,KAAKsI,WAAW,GAAIlL,WAAW,4CAA4CR,YAAY,CAAC,MAAQ,MAAM,MAAQ,QAAQ,OAAS,QAAQ,gBAAgB,MAAM,SAAW,WAAW,OAAS,QAAQ,MAAQ,MAAM,CAACR,EAAIS,GAAG,MAAMT,EAAIU,GAAGV,EAAI4D,KAAK0I,QAAQ,WAAWlM,EAAG,MAAM,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAwB,UAAjBgB,EAAI4D,KAAK0G,MAAiBtJ,WAAW,yBAAyBR,YAAY,CAAC,MAAQ,MAAM,MAAQ,OAAO,OAAS,QAAQ,gBAAgB,MAAM,SAAW,WAAW,OAAS,QAAQ,MAAQ,IAAI,UAAU,QAAQ,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAGxC,MAAM,MAAM,OAAO,SAAU1J,EAAI4D,KAAKsI,WAAW,GAAGlC,aAAahK,EAAI4D,KAAKsI,WAAW,GAAGlC,YAAY1H,MAAM,GAAGT,KAAMzB,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,IAAM,QAAQ,MAAQ,QAAQ,OAAS,UAAUR,EAAI0O,GAAI1O,EAAI4D,KAAKsI,WAAW,GAAGlC,YAAiB,OAAE,SAASzG,GAAM,OAAOnD,EAAG,MAAM,CAACuO,YAAY,YAAYC,MAAM,CAAE7Q,EAAgB,KAAdwF,EAAKzB,OAAa+M,EAAgB,KAAdtL,EAAKzB,SAAe,CAAC1B,EAAG,OAAO,CAACU,WAAW,CAAC,CAACvC,KAAK,OAAOwC,QAAQ,SAAS/B,MAAOuE,EAAKzB,OAAO,GAAId,WAAW,oBAAoB,CAAChB,EAAIS,GAAG,IAAIT,EAAIU,GAAG6C,EAAK1B,MAAM,YAAW,GAAG7B,EAAIkP,KAAMlP,EAAI4D,KAAKsI,WAAW,GAAGlC,cAAchK,EAAI4D,KAAKsI,WAAW,GAAGlC,YAAY1H,MAAM,GAAGT,KAAMzB,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,IAAM,QAAQ,MAAQ,QAAQ,OAAS,UAAU,CAACJ,EAAG,MAAM,CAACI,YAAY,CAAC,OAAS,OAAO,MAAQ,QAAQ,MAAQ,OAAO,cAAc,QAAQ,YAAY,OAAO,MAAQ,YAAY,CAACR,EAAIS,GAAG,cAAcT,EAAIkP,KAAuB,YAAjBlP,EAAI4D,KAAK0G,MAAmBlK,EAAG,MAAM,CAACI,YAAY,CAAC,SAAW,QAAQ,IAAM,QAAQ,MAAQ,QAAQ,OAAS,UAAU,CAACJ,EAAG,MAAM,CAACI,YAAY,CAAC,OAAS,OAAO,MAAQ,QAAQ,MAAQ,OAAO,cAAc,QAAQ,YAAY,OAAO,MAAQ,YAAY,CAACR,EAAIS,GAAG,IAAIT,EAAIU,GAAGV,EAAI4D,KAAKsI,WAAW,GAAGvC,SAAS,UAAU3J,EAAIkP,QAC3lW,EAAkB,GC8JtB,GACE3Q,KAAM,aACNpC,KAFF,WAGI,MAAO,CACL,KAAN,QACM,KAAN,MACM,UAAN,GACM,UAAN,KAGE6R,SAAU,CAER,iBAAJ,WACM,OAAN,kEAEI,oBAAJ,WACM,OAAN,0EAEI,iBAAJ,WACM,OAAN,0BAGI,UAAJ,WACM,OAAN,sDACA,sEACA,6BAGA,IAEI,WAAJ,WACM,IAAN,YACA,IACM,MAAN,CACA,uFACA,oCACA,wCAGI,WAAJ,WACM,IAAN,YACA,IACM,MAAN,CACA,uFACA,oCACA,wCAGI,WAAJ,WACM,IAAN,YACA,IACM,MAAN,CACA,uFACA,oCACA,wCAGI,QAAJ,WACM,IAAN,YACM,MAAN,CACA,OACA,yBAIEC,QAjEF,WAkEIhO,KAAK9D,KAAO8D,KAAK2D,KAAKsI,WAAW,GAAG3N,KACpCsB,OAAO+D,KAAO3D,KAAK2D,MAErBsK,QAAF,CAEI,SAAJ,WACM,IAAN,OACM,EAAN,+BAGI,MAAJ,cACA,eACQ,KAAR,cAII,UAbJ,SAaA,GACM,GAAN,WAGA,CACQ,EAAR,YACQ,IAAR,oCACA,uBACY,KAAZ,2BANQ,EAAR,YACQ,KAAR,mBAWI,WA3BJ,WA4BM,IAAN,YACA,kDACA,IACQ,KAAR,eAII,UAnCJ,WAoCM,IAAN,YACA,+CACA,IACQ,KAAR,eAII1M,KA3CJ,WA4CMvB,KAAK2D,KAAKsI,WAAW,GAAGgB,aAAa,SAGvCxL,QA/CJ,WAgDM,KAAN,WACM,KAAN,gBCrR8U,ICQ1U,G,UAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,OAIa,I,QCTf,GACEnD,KAAM,MACN4Q,WAAY,CACVC,WAAJ,EACInD,KAAJ,ICd8T,ICO1T,EAAY,eACd,EACA,EACA1L,GACA,EACA,KACA,KACA,MAIa,I,QCff8O,OAAIC,OAAOC,eAAgB,EAE3B,IAAIF,OAAI,CACNG,OAAQ,SAAAC,GAAC,OAAIA,EAAEC,MACdC,OAAO,S,6DCPV,yBAAme,EAAG,G,qBCAtezR,EAAOD,QAAU,IAA0B","file":"js/app.92687945.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/scene.02780059.jpg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('Game')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"0px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.player2Str[0])+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.player2Str[1])+\" \"),_c('br'),_c('br'),_vm._v(\" \"+_vm._s(_vm.player2Str[2])+\" \")])]),_c('div',{staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"600px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.player1Str[0])+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.player1Str[1])+\" \"),_c('br'),_c('br'),_vm._v(\" \"+_vm._s(_vm.player1Str[2])+\" \")])]),_c('div',{staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"300px\",\"top\":\"300px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.player0Str[0])+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.player0Str[1])+\" \"),_c('br'),_c('br'),_vm._v(\" \"+_vm._s(_vm.player0Str[2])+\" \")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.playerStr),expression:\"playerStr\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.playerStr)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.playerStr=$event.target.value}}}),_c('button',{on:{\"click\":_vm.sendPoker}},[_vm._v(\"send\")]),_c('button',{on:{\"click\":_vm.pass}},[_vm._v(\"pass\")])])]),_c('div',{staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"300px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('div',{staticStyle:{\"width\":\"300px\",\"word-wrap\":\"break-word\"}},[_vm._v(\" \"+_vm._s(_vm.deskStr[0])+\" \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.deskStr[1])+\" \")])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"left\":\"300px\",\"top\":\"600px\"}},[_c('button',{on:{\"click\":_vm.reStart}},[_vm._v(\"reStart\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","class Poker{\r\n constructor(param) {\r\n if(param.text){\r\n this.text = param.text;\r\n this.number = Poker.textToNumber(param.text);\r\n }else{\r\n this.number = param.number;\r\n this.text = Poker.numberToText(param.number);\r\n }\r\n this.type = param.type;\r\n this.selected = param.selected;\r\n }\r\n\r\n static textToNumber(text){\r\n switch (text) {\r\n case '3': return 3;\r\n case '4': return 4;\r\n case '5': return 5;\r\n case '6': return 6;\r\n case '7': return 7;\r\n case '8': return 8;\r\n case '9': return 9;\r\n case '10':\r\n case '0':\r\n case 'T':\r\n case 't': return 10;\r\n case '11':\r\n case 'j':\r\n case 'J': return 11;\r\n case '12':\r\n case 'q':\r\n case 'Q': return 12;\r\n case '13':\r\n case 'k':\r\n case 'K': return 13;\r\n case '1':\r\n case 'a':\r\n case 'A': return 14;\r\n case '2': return 15;\r\n case 's':\r\n case 'S': return 16;\r\n case 'x':\r\n case 'X': return 17;\r\n }\r\n }\r\n\r\n static numberToText(number){\r\n switch (number) {\r\n case 3: return '3';\r\n case 4: return '4';\r\n case 5: return '5';\r\n case 6: return '6';\r\n case 7: return '7';\r\n case 8: return '8';\r\n case 9: return '9';\r\n case 10: return '10';\r\n case 11: return 'J';\r\n case 12: return 'Q';\r\n case 13: return 'K';\r\n case 14: return 'A';\r\n case 15: return '2';\r\n case 16: return 'S';\r\n case 17: return 'X';\r\n }\r\n }\r\n\r\n static sortFunction(a, b){\r\n return a.number - b.number;\r\n }\r\n\r\n static getObjByPokerList(pokerList){\r\n if(pokerList[0] === 'pass'){\r\n return {\r\n type:'pass',\r\n poker: pokerList,\r\n };\r\n }\r\n pokerList.sort(Poker.sortFunction);\r\n\r\n let lastPoker = pokerList[0];\r\n let curList = [lastPoker];\r\n let lists = [];\r\n for(let i=1; i<pokerList.length; i++){\r\n if(pokerList[i].number !== lastPoker.number){\r\n lists.push(curList);\r\n curList = [pokerList[i]];\r\n }else{\r\n curList.push(pokerList[i]);\r\n }\r\n lastPoker = pokerList[i];\r\n }\r\n lists.push(curList);\r\n\r\n let Count1List = [];\r\n let Count2List = [];\r\n let Count3List = [];\r\n let Count4List = [];\r\n for(let i=0; i<lists.length; i++){\r\n if(lists[i].length === 3){\r\n Count3List.push(lists[i]);\r\n }else if(lists[i].length === 2){\r\n Count2List.push(lists[i]);\r\n }else if(lists[i].length === 1){\r\n Count1List.push(lists[i]);\r\n }else if(lists[i].length === 4){\r\n Count4List.push(lists[i]);\r\n }\r\n }\r\n\r\n if(pokerList.length === 1){\r\n\r\n return {\r\n type:'one',\r\n poker: pokerList,\r\n one: pokerList,\r\n };\r\n\r\n }else if(pokerList.length === 2){\r\n\r\n if(Count2List.length === 1){\r\n return {\r\n type:'two',\r\n poker: pokerList,\r\n two: pokerList,\r\n };\r\n }else if(pokerList[0].number === 16 && pokerList[1].number === 17){\r\n return {\r\n type:'sx',\r\n poker: pokerList,\r\n sx: pokerList,\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 3){\r\n\r\n if(Count3List.length === 1){\r\n return {\r\n type:'three',\r\n poker: pokerList,\r\n three: pokerList,\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 4){\r\n\r\n if(Count3List.length === 1){\r\n return {\r\n type:'threeWithOne',\r\n poker: pokerList,\r\n three: Count3List[0],\r\n one: Count1List[0],\r\n };\r\n }else if(Count4List.length === 1){\r\n return {\r\n type:'four',\r\n poker: pokerList,\r\n four: pokerList,\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 5){\r\n\r\n if(Count3List.length === 1 && Count2List.length === 1){\r\n return {\r\n type:'threeWithTwo',\r\n poker: pokerList,\r\n three: Count3List[0],\r\n two: Count2List[0],\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 6){\r\n\r\n if(Count4List.length === 1 && Count1List.length === 2){\r\n return {\r\n type:'fourWithOne',\r\n poker: pokerList,\r\n four: Count4List[0],\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 8){\r\n\r\n if(Count4List.length === 1 && Count2List.length === 2){\r\n return {\r\n type:'fourWithTwo',\r\n poker: pokerList,\r\n four: Count4List[0],\r\n };\r\n }\r\n\r\n }\r\n\r\n if(Count3List.length>=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; i<pokerList.length; i++){\r\n let str = pokerList[i].toString();\r\n result += str;\r\n }\r\n return result;\r\n }\r\n\r\n toString(){\r\n return this.text;\r\n }\r\n\r\n}\r\n\r\nexport default Poker;","\r\nclass AI{\r\n constructor(param) {\r\n param = param || {};\r\n this.player = param.player;\r\n this.game = param.game;\r\n }\r\n\r\n classify(pokerList){\r\n\r\n pokerList.sort(this.sortFunction);\r\n if(pokerList.length===0){\r\n return {\r\n 1: [],\r\n 2: [],\r\n 3: [],\r\n 4: [],\r\n };\r\n }\r\n let lastPoker = pokerList[0];\r\n let curList = [lastPoker];\r\n let lists = [];\r\n for(let i=1; i<pokerList.length; i++){\r\n if(pokerList[i].number !== lastPoker.number){\r\n lists.push(curList);\r\n curList = [pokerList[i]];\r\n }else{\r\n curList.push(pokerList[i]);\r\n }\r\n lastPoker = pokerList[i];\r\n }\r\n lists.push(curList);\r\n\r\n let Count1List = [];\r\n let Count2List = [];\r\n let Count3List = [];\r\n let Count4List = [];\r\n for(let i=0; i<lists.length; i++){\r\n if(lists[i].length === 3){\r\n Count3List.push(lists[i]);\r\n }else if(lists[i].length === 2){\r\n Count2List.push(lists[i]);\r\n }else if(lists[i].length === 1){\r\n Count1List.push(lists[i]);\r\n }else if(lists[i].length === 4){\r\n Count4List.push(lists[i]);\r\n }\r\n }\r\n\r\n return {\r\n 1: Count1List,\r\n 2: Count2List,\r\n 3: Count3List,\r\n 4: Count4List,\r\n };\r\n\r\n }\r\n\r\n getClassifyObj(pokerList0){\r\n\r\n let poker15 = [];\r\n let poker16 = [];\r\n let poker17 = [];\r\n\r\n let pokerList = pokerList0.slice(0);\r\n\r\n for(let i=0; i<pokerList.length; i++){\r\n if(pokerList[i].number === 15){\r\n let poker = pokerList.splice(i,1);\r\n i--;\r\n poker15.push(poker[0]);\r\n }else if(pokerList[i].number === 16){\r\n let poker = pokerList.splice(i,1);\r\n i--;\r\n poker16.push(poker[0]);\r\n }else if(pokerList[i].number === 17){\r\n let poker = pokerList.splice(i,1);\r\n i--;\r\n poker17.push(poker[0]);\r\n }\r\n }\r\n\r\n let obj = this.classify(pokerList);\r\n let Count1List = obj[1];\r\n let Count2List = obj[2];\r\n let Count3List = obj[3];\r\n let Count4List = obj[4];\r\n\r\n let four = Count4List;\r\n let three = [];\r\n let threeList = [];\r\n let two = [];\r\n let twoList = [];\r\n let one = [];\r\n let oneList = [];\r\n\r\n if(Count3List.length>0){\r\n let curList = [Count3List[0]];\r\n let lists = [];\r\n\r\n for(let i2=1; i2<Count3List.length; i2++){\r\n if(Count3List[i2][0].number !== Count3List[i2-1][0].number+1){\r\n lists.push(curList);\r\n curList = [Count3List[i2]];\r\n }else{\r\n curList.push(Count3List[i2]);\r\n }\r\n }\r\n lists.push(curList);\r\n for(let i3=0; i3<lists.length; i3++){\r\n if(lists[i3].length>1){\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; i4<Count2List.length; i4++){\r\n if(Count2List[i4][0].number !== Count2List[i4-1][0].number+1){\r\n lists2.push(curList2);\r\n curList2 = [Count2List[i4]];\r\n }else{\r\n curList2.push(Count2List[i4]);\r\n }\r\n }\r\n lists2.push(curList2);\r\n for(let i5=0; i5<lists2.length; i5++){\r\n if(lists2[i5].length>2){\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; i6<Count1List.length; i6++){\r\n if(Count1List[i6][0].number !== Count1List[i6-1][0].number+1){\r\n lists1.push(curList1);\r\n curList1 = [Count1List[i6]];\r\n }else{\r\n curList1.push(Count1List[i6]);\r\n }\r\n }\r\n lists1.push(curList1);\r\n for(let i7=0; i7<lists1.length; i7++){\r\n if(lists1[i7].length>4){\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].number<two[twoIndex][0].number){\r\n startN = one[oneIndex][0].number;\r\n ones.push(one[oneIndex]);\r\n oneIndex++;\r\n }else {\r\n startN = two[twoIndex][0].number;\r\n twos.push(two[twoIndex]);\r\n twoIndex++;\r\n }\r\n }\r\n lastN = startN;\r\n\r\n do{\r\n if(oneIndex>one.length-1&&twoIndex>two.length-1){\r\n break;\r\n }\r\n\r\n if(oneIndex<one.length&&one[oneIndex][0].number === lastN+1){\r\n ones.push(one[oneIndex]);\r\n oneIndex++;\r\n }else if(twoIndex<two.length&&two[twoIndex][0].number === lastN+1){\r\n twos.push(two[twoIndex]);\r\n twoIndex++;\r\n }else{\r\n break;\r\n }\r\n\r\n lastN = lastN+1;\r\n if(lastN===startN+4){\r\n if(twos.length<4){\r\n //combine\r\n let cmbList = [];\r\n for(let i8=0; i8<ones.length; i8++){\r\n cmbList.push(ones[i8]);\r\n\r\n //delete from one\r\n for(let j=0; j<one.length; j++){\r\n if(one[j]===ones[i8]){\r\n one.splice(j,1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for(let i9=0; i9<twos.length; i9++){\r\n let pokers = twos[i9];\r\n\r\n //delete from two\r\n for(let j1=0; j1<two.length; j1++){\r\n if(two[j1]===pokers){\r\n two.splice(j1,1);\r\n break;\r\n }\r\n }\r\n\r\n let poker = pokers.splice(0,1);\r\n cmbList.push(poker);\r\n one.push(pokers);\r\n\r\n }\r\n\r\n cmbList.sort(this.sortArray);\r\n oneList.push(cmbList);\r\n one.sort(this.sortArray);\r\n\r\n oneIndex = 0;\r\n twoIndex = 0;\r\n break;\r\n\r\n }\r\n }\r\n\r\n }while(true);\r\n\r\n }\r\n\r\n }\r\n\r\n //combine one oneList together\r\n for(let i10=0; i10<one.length; i10++){\r\n let find1 = false;\r\n for(let i11=0; i11<oneList.length; i11++){\r\n if(one[i10][0].number===oneList[i11][0][0].number-1){\r\n oneList[i11].unshift(one[i10]);\r\n find1 = true;\r\n break;\r\n }else if(one[i10][0].number===oneList[i11][oneList[i11].length-1][0].number+1){\r\n oneList[i11].push(one[i10]);\r\n find1 = true;\r\n break;\r\n }\r\n }\r\n if(find1){\r\n one.splice(i10,1);\r\n i10--;\r\n }\r\n }\r\n\r\n //combine oneList oneList together\r\n oneList.sort(this.sortList);\r\n for(let i12=1; i12<oneList.length; i12++){\r\n if(oneList[i12][0][0].number===oneList[i12-1][oneList[i12-1].length-1][0].number+1){\r\n oneList[i12-1] = oneList[i12-1].concat(oneList[i12]);\r\n oneList.splice(i12,1);\r\n i12--;\r\n }\r\n }\r\n\r\n return {\r\n four,\r\n three,\r\n threeList,\r\n two,\r\n twoList,\r\n one,\r\n oneList,\r\n poker15,\r\n poker16,\r\n poker17,\r\n };\r\n }\r\n\r\n //接牌1 最小接 不拆 炸\r\n getByObj1(lastObj){\r\n let obj;\r\n obj = this.getSmallestObjByObj(lastObj);\r\n if(!obj){\r\n obj = this.getByBoom(lastObj);\r\n }\r\n return obj;\r\n }\r\n\r\n //接牌2 最小接 炸 拆\r\n getByObj2(lastObj){\r\n let obj;\r\n obj = this.getByObj1(lastObj);\r\n if(!obj){\r\n obj = this.getBySplit(lastObj);\r\n }\r\n return obj;\r\n }\r\n\r\n //接牌3 最小接 不拆 不炸 不出王、2、AAA\r\n getByObj3(lastObj){\r\n let obj;\r\n obj = this.getSmallestObjNoBig(lastObj);\r\n\r\n return obj;\r\n }\r\n\r\n //接牌4\r\n getByObj4(lastObj){\r\n let obj;\r\n if(lastObj.type==='one'){\r\n obj = this.getByObj5(lastObj);\r\n }else{\r\n obj = this.getByObj2(lastObj);\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n getByBoom(lastObj){\r\n let classifyObj = this.player.classifyObj;\r\n\r\n let obj;\r\n let poker;\r\n\r\n if(lastObj.type==='sx'){\r\n return null;\r\n }\r\n\r\n if(classifyObj.four.length>0){\r\n if(lastObj.type==='four'){\r\n for(let i=0; i<classifyObj.four.length; i++){\r\n if(classifyObj.four[i][0].number>lastObj.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; i<oldPokerList.length; i++){\r\n for(let j=0; j<oldPokerList[i].poker.length; j++){\r\n allPoker[oldPokerList[i].poker[j].number]++;\r\n }\r\n }\r\n let deskPokerObj = this.game.deskPokerObj;\r\n for(let j=0; j<deskPokerObj.poker.length; j++){\r\n allPoker[deskPokerObj.poker[j].number]++;\r\n }\r\n let pokers = this.player.pokerList;\r\n for(let j=0; j<pokers.length; j++){\r\n allPoker[pokers[j].number]++;\r\n }\r\n\r\n let num = obj.one[0].number;\r\n let result = true;\r\n if(num===16){\r\n if(allPoker[17]!==1){\r\n return false;\r\n }\r\n }else if(num===15){\r\n if(allPoker[16]!==1||allPoker[17]!==1){\r\n return false;\r\n }\r\n }else{\r\n for(let n=num+1; n<=15; n++){\r\n if(allPoker[n]!==4){\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n //出牌1\r\n playByTypys1(){\r\n let types = ['threeWithTwoList','threeWithOneList','threeList','twoList','oneList','threeWithTwo','threeWithOne','three','two','one','four','sx'];\r\n for(let i=0; i<types.length; i++){\r\n let obj = this.getSmallestObjByType(types[i]);\r\n if(!obj){\r\n continue;\r\n }\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n break;\r\n }\r\n }\r\n\r\n //出牌2\r\n playByTypys2(){\r\n let types = ['threeWithTwoList','threeWithOneList','threeList','twoList','oneList','threeWithTwo','threeWithOne','three','two','four','sx','one'];\r\n for(let i=0; i<types.length; i++){\r\n let obj = this.getSmallestObjByType(types[i], true);\r\n if(!obj){\r\n continue;\r\n }\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n break;\r\n }\r\n }\r\n\r\n //出牌 最小一张\r\n playSmallestOne(){\r\n let obj = {\r\n type: 'one',\r\n poker: [this.player.pokerList[0]],\r\n one: [this.player.pokerList[0]],\r\n };\r\n this.player.deleteFromPokerListAndSendByObj(obj);\r\n }\r\n\r\n //出牌\r\n playByAllType(){\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 this.playByTypys2();\r\n }else{\r\n this.playByTypys1();\r\n }\r\n }else{\r\n if(this.player.next.type==='nongmin'){\r\n if(this.player.next.pokerList.length===1){\r\n this.playSmallestOne();\r\n }else{\r\n this.playByTypys1();\r\n }\r\n }else{\r\n if(this.player.next.pokerList.length===1){\r\n this.playByTypys2();\r\n }else{\r\n this.playByTypys1();\r\n }\r\n }\r\n }\r\n }\r\n\r\n //接 队友\r\n getSmallestObjNoBig(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; i<classifyObj.one.length; i++){\r\n if(classifyObj.one[i][0].number>lastObj.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; i<classifyObj.two.length; i++){\r\n if(classifyObj.two[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.one.length; i++){\r\n if(classifyObj.one[i][0].number>lastObj.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; i<classifyObj.two.length; i++){\r\n if(classifyObj.two[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.three.length; i++){\r\n if(classifyObj.three[i][0].number>lastObj.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; i<classifyObj.four.length; i++){\r\n if(classifyObj.four[i][0].number>lastObj.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; i<classifyObj.four.length; i++){\r\n if(classifyObj.four[i][0].number>lastObj.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; i<classifyObj.four.length; i++){\r\n if(classifyObj.four[i][0].number>lastObj.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; i<classifyObj.threeList.length; i++){\r\n if(classifyObj.threeList[i].length===lastObj.list.length && classifyObj.threeList[i][0][0].number>lastObj.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; i<classifyObj.threeList.length; i++){\r\n if(classifyObj.threeList[i].length===lastObj.list.length && classifyObj.threeList[i][0][0].number>lastObj.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<classifyObj.oneList.length; i++) {\r\n if (classifyObj.oneList[i].length === lastObj.list.length && classifyObj.oneList[i][0][0].number > 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<classifyObj.twoList.length; i++) {\r\n if (classifyObj.twoList[i].length === lastObj.list.length && classifyObj.twoList[i][0][0].number > 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<classifyObj.threeList.length; i++) {\r\n if (classifyObj.threeList[i].length === lastObj.list.length && classifyObj.threeList[i][0][0].number > 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; i<pokerList.length; i++){\r\n if(pokerList[i].number !== lastPoker.number){\r\n lists.push(curList);\r\n curList = [pokerList[i]];\r\n }else{\r\n curList.push(pokerList[i]);\r\n }\r\n lastPoker = pokerList[i];\r\n }\r\n lists.push(curList);\r\n\r\n let Count1List = [];\r\n let Count2List = [];\r\n let Count3List = [];\r\n let Count4List = [];\r\n for(let i=0; i<lists.length; i++){\r\n if(lists[i].length === 3){\r\n Count3List.push(lists[i]);\r\n }else if(lists[i].length === 2){\r\n Count2List.push(lists[i]);\r\n }else if(lists[i].length === 1){\r\n Count1List.push(lists[i]);\r\n }else if(lists[i].length === 4){\r\n Count4List.push(lists[i]);\r\n }\r\n }\r\n\r\n let type = lastObj.type;\r\n let obj = null;\r\n\r\n if(type === 'two'){\r\n if(Count2List.length>0){\r\n for(let i=0; i<Count2List.length; i++){\r\n if(Count2List[i][0].number>lastObj.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; i<Count3List.length; i++){\r\n if(Count3List[i][0].number>lastObj.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; i<Count3List.length; i++){\r\n if(Count3List[i][0].number>lastObj.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; j<Count3List.length; j++){\r\n if(j===i){\r\n continue;\r\n }\r\n one = Count3List[j].slice(0,1);\r\n }\r\n }\r\n\r\n if(one){\r\n obj = {\r\n type: type,\r\n poker: Count3List[i].concat(one),\r\n three: Count3List[i],\r\n one: one,\r\n };\r\n }\r\n break;\r\n\r\n }\r\n }\r\n }\r\n }else if(type === 'threeWithTwo'){\r\n if(Count3List.length>0){\r\n for(let i=0; i<Count3List.length; i++){\r\n if(Count3List[i][0].number>lastObj.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<Count3List.length; j++){\r\n if(j===i){\r\n continue;\r\n }\r\n two = Count3List[j].slice(0,2);\r\n }\r\n }\r\n\r\n if(two){\r\n obj = {\r\n type: type,\r\n poker: Count3List[i].concat(two),\r\n three: Count3List[i],\r\n two: two,\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'threeWithOneList'){\r\n if(Count3List.length>=lastObj.list.length){\r\n for(let i=0; i<Count3List.length-lastObj.list.length+1; i++){\r\n if(Count3List[i][0].number>lastObj.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<Count1List.length&&oneList.length<lastObj.list.length; j++){\r\n oneList.push(Count1List[j]);\r\n }\r\n\r\n for(let j=0; j<Count2List.length&&oneList.length<lastObj.list.length; j++){\r\n oneList.push(Count2List[j].slice(0,1));\r\n if(oneList.length<lastObj.list.length){\r\n oneList.push(Count2List[j].slice(1,2));\r\n }\r\n }\r\n\r\n for(let j=0; j<Count3List.length&&oneList.length<lastObj.list.length; j++){\r\n if(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 oneList.push(Count3List[j].slice(1,2));\r\n }\r\n if(oneList.length<lastObj.list.length){\r\n oneList.push(Count3List[j].slice(2,3));\r\n }\r\n }\r\n\r\n if(oneList.length === lastObj.list.length){\r\n\r\n let poker = [];\r\n let list = [];\r\n for(let j=0; j<lastObj.list.length; j++){\r\n poker = poker.concat(Count3List[i+j]);\r\n poker = poker.concat(oneList[i]);\r\n let threeOne = {\r\n three: Count3List[i+j],\r\n one: oneList[i],\r\n };\r\n list.push(threeOne);\r\n }\r\n\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n list: list,\r\n };\r\n }\r\n break;\r\n\r\n }\r\n }\r\n }\r\n }else if(type === 'threeWithTwoList'){\r\n if(Count3List.length>=lastObj.list.length){\r\n for(let i=0; i<Count3List.length-lastObj.list.length+1; i++){\r\n if(Count3List[i][0].number>lastObj.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<Count2List.length&&twoList.length<lastObj.list.length; j++){\r\n twoList.push(Count2List);\r\n }\r\n\r\n for(let j=0; j<Count3List.length&&twoList.length<lastObj.list.length; j++){\r\n if(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; j++){\r\n poker = poker.concat(Count3List[i+j]);\r\n poker = poker.concat(twoList[i]);\r\n let threeOne = {\r\n three: Count3List[i+j],\r\n two: twoList[i],\r\n };\r\n list.push(threeOne);\r\n }\r\n\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n list: list,\r\n };\r\n }\r\n break;\r\n\r\n }\r\n }\r\n }\r\n }else if(type === 'oneList'){\r\n if(Count1List.length>=lastObj.list.length ){\r\n for(let i=0; i<Count1List.length-lastObj.list.length+1; i++){\r\n if(Count1List[i][0].number>lastObj.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; i<Count2List.length-lastObj.list.length+1; i++){\r\n if(Count2List[i][0].number>lastObj.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; i<Count3List.length-lastObj.list.length+1; i++){\r\n if(Count3List[i][0].number>lastObj.list[0].two[0].number && Count3List[i][0].number+lastObj.list.length-1===Count3List[i+lastObj.list.length-1][0].number && Count3List[i+lastObj.list.length-1][0].number<=14){\r\n let list = Count3List.slice(i,i+lastObj.list.length);\r\n obj = {\r\n type: type,\r\n poker: list.flat(1),\r\n list: list.map(function (item) {\r\n return {\r\n three: item,\r\n }\r\n }),\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n sortFunction(a, b){\r\n return a.number - b.number;\r\n }\r\n\r\n sortArray(a, b){\r\n return a[0].number - b[0].number;\r\n }\r\n\r\n sortList(a, b){\r\n return a[0][0].number - b[0][0].number;\r\n }\r\n\r\n}\r\n\r\nexport default AI;","import Poker from \"./Poker\";\r\nimport AI from \"./AI\";\r\n\r\nclass Player{\r\n constructor(param) {\r\n param = param || {};\r\n this.ready = false; //已准备\r\n this.jiaoFen = 0; //叫分\r\n this.pokerList = [];\r\n this.name = param.name || 'noName'+Math.random();\r\n this.type = param.type || 'nongmin';\r\n this.last = null;\r\n this.next = null;\r\n this.isRobot = param.isRobot;\r\n this.game = param.game;\r\n this.ai = new AI({\r\n player: this,\r\n game: param.game,\r\n });\r\n this.classifyObj = null;\r\n this.lastSendObj = null;\r\n\r\n if(this.isRobot){\r\n this.loopRobot();\r\n }\r\n }\r\n\r\n setJiaoFen(fen){\r\n this.jiaoFen = fen;\r\n this.game.someOneJiaoFen();\r\n }\r\n\r\n loopRobot(){\r\n let that = this;\r\n if(that.isRobot){\r\n if(!that.ready){\r\n that.setReady();\r\n }\r\n }\r\n if(that.game.stage==='jiaoFen' && that.game.currentJiaoFenPlayer === that){\r\n that.setJiaoFen(3);\r\n }\r\n\r\n setTimeout(function(){\r\n that.loopRobot();\r\n },2000);\r\n }\r\n\r\n setReady(){\r\n this.ready = true;\r\n this.game.setReady();\r\n }\r\n\r\n reset(){\r\n this.ready = false;\r\n this.jiaoFen = 0;\r\n this.pokerList = [];\r\n this.type = 'nongmin';\r\n this.classifyObj = null;\r\n this.lastSendObj = null;\r\n }\r\n\r\n //组牌\r\n getClassifyObj(){\r\n this.classifyObj = this.ai.getClassifyObj(this.pokerList);\r\n console.log(this.classifyObj);\r\n }\r\n\r\n addPoker(poker){\r\n this.pokerList.push(poker);\r\n }\r\n\r\n sortPoker(){\r\n this.pokerList.sort(this.sortFunction);\r\n }\r\n\r\n sortFunction(a, b){\r\n return a.number - b.number;\r\n }\r\n\r\n getLastObj(){\r\n let lastObj = this.last.lastSendObj;\r\n if(!lastObj || lastObj.type === 'pass'){\r\n lastObj = this.next.lastSendObj;\r\n if(!lastObj || lastObj.type === 'pass'){\r\n return false;\r\n }\r\n }\r\n return lastObj;\r\n }\r\n\r\n playByAI(){\r\n\r\n let that = this;\r\n\r\n that.getClassifyObj();\r\n\r\n setTimeout(function () {\r\n let lastObj = that.getLastObj();\r\n if(lastObj){\r\n that.ai.playByObj(lastObj);\r\n }else{\r\n that.ai.playByAllType();\r\n }\r\n },1000);\r\n\r\n }\r\n\r\n sendPoker(obj){\r\n obj.player = this;\r\n this.game.clearDesk();\r\n this.lastSendObj = obj;\r\n this.game.deskPokerObj = obj;\r\n this.game.next();\r\n }\r\n\r\n deleteFromPokerListAndSendByObj(obj){\r\n let tempList = [];\r\n if(obj.type === 'pass'){\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n let pokerList = obj.poker;\r\n for(let i=0; i<pokerList.length; i++){\r\n\r\n let poker = this.getAndDeleteOnePokerByNumber(pokerList[i].number);\r\n if(poker){\r\n tempList.push(poker);\r\n }else{\r\n this.listBackToPokerList(tempList);\r\n return false;\r\n }\r\n }\r\n this.sendPoker(obj);\r\n return true;\r\n }\r\n\r\n getListByList(list){\r\n let tempList = [];\r\n if(list[0] === 'pass'){\r\n return ['pass'];\r\n }\r\n for(let i=0; i<list.length; i++){\r\n let po = list[i];\r\n let poker = this.getAndDeleteOnePokerByNumber(po.number);\r\n if(poker){\r\n tempList.push(poker);\r\n }else{\r\n this.listBackToPokerList(tempList);\r\n return false;\r\n }\r\n }\r\n return tempList;\r\n }\r\n\r\n getListByString(str){\r\n let tempList = [];\r\n if(str === 'pass'){\r\n return ['pass'];\r\n }\r\n for(let i=0; i<str.length; i++){\r\n let text = str[i];\r\n let number = Poker.textToNumber(text);\r\n let poker = this.getAndDeleteOnePokerByNumber(number);\r\n if(poker){\r\n tempList.push(poker);\r\n }else{\r\n this.listBackToPokerList(tempList);\r\n return false;\r\n }\r\n }\r\n return tempList;\r\n }\r\n\r\n listBackToPokerList(list){\r\n while (list.length>0){\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; i<this.pokerList.length; i++){\r\n if(this.pokerList[i].number === number){\r\n return this.pokerList.splice(i,1)[0];\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n pokerListToString(){\r\n let result = Poker.pokerListToString(this.pokerList);\r\n return result;\r\n }\r\n\r\n lastSendObjToString(){\r\n if(!this.lastSendObj){\r\n return '';\r\n }\r\n let result = Poker.pokerListToString(this.lastSendObj.poker);\r\n return result;\r\n }\r\n\r\n}\r\n\r\nexport default Player;","import Player from \"./Player\";\r\nimport Poker from \"./Poker\";\r\n\r\nclass Game{\r\n constructor() {\r\n this.playerList = [];\r\n this.pokerList = [];\r\n this.deskPokerObj = null;\r\n this.oldPokerList = [];\r\n this.currentPlayer = null;\r\n this.currentJiaoFenPlayer = null;\r\n this.jiaoFenCount = 0;\r\n this.dizhu = null;\r\n this.MaxSecond = 60;\r\n this.second = this.MaxSecond;\r\n this.stage = 'ready'; //阶段 ready\\jiaoFen\\play\r\n\r\n this.init();\r\n }\r\n\r\n init(){\r\n this.initPokerList();\r\n this.initPlayerList();\r\n }\r\n\r\n setReady(){\r\n if(this.playerList[0]&&this.playerList[0].ready&&this.playerList[1]&&this.playerList[1].ready&&this.playerList[2]&&this.playerList[2].ready){\r\n this.sendPoker();\r\n this.startJiaoFen();\r\n }\r\n }\r\n\r\n //开始叫分\r\n startJiaoFen(){\r\n this.stage = 'jiaoFen';\r\n let index = this.getRandomIntInclusive(0,2);\r\n this.currentJiaoFenPlayer = this.playerList[index];\r\n }\r\n\r\n someOneJiaoFen(){\r\n let that = this;\r\n\r\n this.jiaoFenCount++;\r\n if(this.jiaoFenCount === 3){\r\n setTimeout(function () {\r\n that.setDiZhu();\r\n },1000);\r\n return;\r\n }else{\r\n this.currentJiaoFenPlayer = this.currentJiaoFenPlayer.next;\r\n }\r\n }\r\n\r\n setDiZhu(){\r\n let sortList = this.playerList.slice(0).sort(this.sortByJiaoFen);\r\n let dizhu = sortList[0];\r\n dizhu.type = 'dizhu';\r\n this.dizhu = dizhu;\r\n\r\n this.start();\r\n }\r\n\r\n sortByJiaoFen(a, b){\r\n return b.jiaoFen - a.jiaoFen;\r\n }\r\n\r\n resetTime(){\r\n this.second = this.MaxSecond;\r\n }\r\n\r\n timeLoop(){\r\n if(this.stage !== 'play'){\r\n return;\r\n }\r\n this.second--;\r\n\r\n if(this.second === 0){\r\n this.timeout();\r\n }\r\n\r\n let that = this;\r\n setTimeout(function () {\r\n that.timeLoop();\r\n },1000);\r\n }\r\n\r\n timeout(){\r\n this.currentPlayer.playByString('pass');\r\n }\r\n\r\n start(){\r\n\r\n this.stage = 'play';\r\n this.timeLoop();\r\n this.currentPlayer = this.dizhu;\r\n if(this.currentPlayer.isRobot){\r\n this.currentPlayer.playByAI();\r\n }\r\n }\r\n\r\n reset(){\r\n\r\n this.playerList[0].reset();\r\n this.playerList[1].reset();\r\n this.playerList[2].reset();\r\n\r\n this.pokerList = [];\r\n this.deskPokerObj = null;\r\n this.oldPokerList = [];\r\n this.currentPlayer = null;\r\n this.currentJiaoFenPlayer = null;\r\n this.jiaoFenCount = 0;\r\n this.dizhu = null;\r\n this.second = this.MaxSecond;\r\n this.stage = 'ready';\r\n\r\n this.initPokerList();\r\n }\r\n\r\n next(){\r\n let over = this.checkGameOver();\r\n if(over){\r\n this.gameOver();\r\n return;\r\n }\r\n this.resetTime();\r\n this.currentPlayer = this.currentPlayer.next;\r\n if(this.currentPlayer.isRobot){\r\n this.currentPlayer.playByAI();\r\n }\r\n }\r\n\r\n gameOver(){\r\n alert('游戏结束! '+this.currentPlayer.name+' ['+this.currentPlayer.type+'] 胜!');\r\n\r\n this.reset();\r\n }\r\n\r\n checkGameOver(){\r\n if(this.currentPlayer.pokerList.length === 0) {\r\n return true;\r\n }\r\n }\r\n\r\n clearDesk(){\r\n if(this.deskPokerObj){\r\n this.oldPokerList.push(this.deskPokerObj);\r\n this.deskPokerObj = null;\r\n }\r\n }\r\n\r\n sendDiZhuPoker(){\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 this.dizhu.sortPoker();\r\n }\r\n\r\n sendPoker(){\r\n let player = this.playerList[0];\r\n do{\r\n let index = this.getRandomIntInclusive(0,this.pokerList.length-1);\r\n let poker = this.pokerList.splice(index,1)[0];\r\n player.addPoker(poker);\r\n player = player.next;\r\n }while(this.pokerList.length>3);\r\n\r\n for(let i=0; i<this.playerList.length; i++){\r\n this.playerList[i].sortPoker();\r\n }\r\n }\r\n\r\n initPlayerList(){\r\n this.playerList = [];\r\n let player0 = new Player({\r\n name: 'player',\r\n isRobot: false,\r\n game: this,\r\n });\r\n let player1 = new Player({\r\n name: '机器人1',\r\n isRobot: true,\r\n game: this,\r\n });\r\n let player2 = new Player({\r\n name: '机器人2',\r\n isRobot: true,\r\n game: this,\r\n });\r\n this.playerList = [player0,player1,player2];\r\n\r\n this.playerList[0].next = this.playerList[1];\r\n this.playerList[1].next = this.playerList[2];\r\n this.playerList[2].next = this.playerList[0];\r\n this.playerList[0].last = this.playerList[2];\r\n this.playerList[1].last = this.playerList[0];\r\n this.playerList[2].last = this.playerList[1];\r\n\r\n }\r\n\r\n initPokerList(){\r\n this.pokerList = [];\r\n for(let number=3; number<=15; number++){\r\n for(let type=0; type<4; type++){\r\n let poker = new Poker({\r\n number: number,\r\n type: type,\r\n });\r\n this.pokerList.push(poker);\r\n }\r\n }\r\n for(let number=16; number<=17; number++){\r\n let poker = new Poker({\r\n number: number,\r\n });\r\n this.pokerList.push(poker);\r\n }\r\n\r\n }\r\n\r\n pokerListToString(){\r\n let result = '';\r\n result += Poker.pokerListToString(this.pokerList);\r\n result += '\\n';\r\n for(let i=0; i<this.oldPokerList.length; i++){\r\n result += Poker.pokerListToString(this.oldPokerList[i].poker);\r\n if(i<this.oldPokerList.length-1){\r\n result += ',';\r\n }\r\n }\r\n result += '\\n';\r\n result += this.deskPokerObj?Poker.pokerListToString(this.deskPokerObj.poker):'';\r\n return result;\r\n }\r\n\r\n getRandomIntInclusive(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n}\r\n\r\nexport default Game;","<template>\n <div>\n <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 0px; top: 0px; background-color: aliceblue; text-align: center\">\n <span>\n {{player2Str[0]}}\n </br>\n {{player2Str[1]}}\n </br></br>\n {{player2Str[2]}}\n </span>\n </div>\n\n <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 600px; top: 0px; background-color: aliceblue; text-align: center\">\n <span>\n {{player1Str[0]}}\n </br>\n {{player1Str[1]}}\n </br></br>\n {{player1Str[2]}}\n </span>\n </div>\n\n <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 300px; top: 300px; background-color: aliceblue; text-align: center\">\n <span>\n {{player0Str[0]}}\n </br>\n {{player0Str[1]}}\n </br></br>\n {{player0Str[2]}}\n </span>\n <div>\n <input v-model=\"playerStr\" type=\"text\"/>\n <button @click=\"sendPoker\">send</button>\n <button @click=\"pass\">pass</button>\n </div>\n </div>\n\n <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 300px; top: 0px; background-color: aliceblue; text-align: center\">\n <div style=\"width: 300px;word-wrap: break-word;\">\n {{deskStr[0]}}\n </br>\n {{deskStr[1]}}\n </div>\n </div>\n\n <div style=\"position: fixed;left: 300px;top: 600px;\">\n <button @click=\"reStart\">reStart</button>\n </div>\n </div>\n</template>\n\n\n<script>\n import Game from \"../doudizhu/Game\";\nexport default {\n name: 'HelloWorld',\n data(){\n return {\n data:'fuck1',\n game: new Game(),\n playerStr: '',\n }\n },\n computed: {\n\n player2Str: function () {\n let game = this.game;\n let i = 2;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n 'last : '+game.playerList[i].lastSendObjToString()\n ];\n },\n player1Str: function () {\n let game = this.game;\n let i = 1;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n 'last : '+game.playerList[i].lastSendObjToString()\n ];\n },\n player0Str: function () {\n let game = this.game;\n let i = 0;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n 'last : '+game.playerList[i].lastSendObjToString()\n ];\n },\n deskStr: function () {\n let game = this.game;\n return [\n 'desk',\n game.pokerListToString()\n ];\n },\n },\n mounted() {\n this.data = this.game.playerList[1].name;\n },\n methods:{\n reDraw() {\n\n },\n\n sendPoker() {\n let game = this.game;\n let success = game.playerList[0].playByString(this.playerStr);\n if(success){\n this.playerStr='';\n }\n },\n\n pass() {\n this.game.playerList[0].playByString('pass');\n },\n\n reStart() {\n this.game = new Game();\n this.playerStr='';\n },\n\n },\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HelloWorld.vue?vue&type=template&id=62298b0c&scoped=true&\"\nimport script from \"./HelloWorld.vue?vue&type=script&lang=js&\"\nexport * from \"./HelloWorld.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62298b0c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"user-select\":\"none\",\"position\":\"fixed\",\"left\":\"0\",\"right\":\"0\",\"top\":\"0\",\"bottom\":\"0\",\"background-repeat\":\"no-repeat\",\"background-size\":\"cover\"},style:({backgroundImage:'url('+require('../img/scene.jpg')+')'})},[_c('audio',{style:({ marginLeft: _vm.buttonMarginLeft + 'px' }),attrs:{\"muted\":\"\",\"autoplay\":\"\",\"loop\":\"\",\"controls\":\"\"}},[_c('source',{attrs:{\"src\":require(\"../audio/bgm.mp3\")}}),_vm._v(\" 您的浏览器不支持 audio 元素。 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"600px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('div',{staticStyle:{\"width\":\"300px\",\"word-wrap\":\"break-word\"}},[_vm._v(\" 已出的牌: \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.deskStr[1])+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='ready'),expression:\"game.stage==='ready'\"}],staticStyle:{\"font-size\":\"20px\",\"color\":\"white\",\"position\":\"fixed\",\"bottom\":\"200px\",\"z-index\":\"999\"},style:({ marginLeft: _vm.playerMarginLeft-40 + 'px' })},[_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.game.playerList[0].ready),expression:\"!game.playerList[0].ready\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":_vm.setReady}},[_vm._v(_vm._s(_vm.game.playerList[0].ready?'已准备':'准备'))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.playerList[0].ready),expression:\"game.playerList[0].ready\"}],staticStyle:{\"color\":\"red\",\"width\":\"80px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[0].ready?'已准备':'未准备')+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='jiaoFen'&&_vm.game.currentJiaoFenPlayer===_vm.game.playerList[0]),expression:\"game.stage==='jiaoFen'&&game.currentJiaoFenPlayer===game.playerList[0]\"}],staticStyle:{\"font-size\":\"20px\",\"color\":\"white\",\"position\":\"fixed\",\"bottom\":\"200px\",\"z-index\":\"999\"},style:({ marginLeft: _vm.playerMarginLeft-40 + 'px' })},[_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":function($event){return _vm.game.playerList[0].setJiaoFen(0)}}},[_vm._v(\"不叫\")]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":function($event){return _vm.game.playerList[0].setJiaoFen(1)}}},[_vm._v(\"1分\")]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":function($event){return _vm.game.playerList[0].setJiaoFen(2)}}},[_vm._v(\"2分\")]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticStyle:{\"font-size\":\"40px\",\"height\":\"60px\",\"line-height\":\"30px\",\"border-radius\":\"4px\",\"background-color\":\"lawngreen\"},on:{\"mousedown\":function($event){return _vm.game.playerList[0].setJiaoFen(3)}}},[_vm._v(\"3分\")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='play'),expression:\"game.stage==='play'\"}],staticStyle:{\"color\":\"white\",\"position\":\"fixed\",\"bottom\":\"0\",\"width\":\"100%\",\"height\":\"200px\",\"line-height\":\"200px\"},style:({ marginLeft: _vm.playerMarginLeft-150 + 'px' })},[_vm._v(\" 你是 \"),_c('span',{staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(_vm._s(_vm.game.playerList[0].type==='nongmin'?'农民':'地主'))])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"0\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.playerMarginLeft + 'px' })},_vm._l((_vm.game.playerList[0].pokerList),function(item){return _c('div',{staticClass:\"poker pokerDesk\",class:{ selected: item.selected, s:item.number===16, x:item.number===17 },on:{\"mouseenter\":function($event){return _vm.enter($event,item)},\"mousedown\":function($event){return _vm.pickPoker(item)}}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[0]),expression:\"game.currentPlayer===game.playerList[0]\"}],staticStyle:{\"position\":\"fixed\",\"bottom\":\"200px\",\"width\":\"100%\",\"height\":\"100px\",\"text-align\":\"left\"}},[_c('div',{staticStyle:{\"width\":\"400px\",\"height\":\"60px\"},style:({ marginLeft: _vm.buttonMarginLeft + 'px' })},[_c('button',{staticStyle:{\"height\":\"60px\",\"border-radius\":\"4px\",\"float\":\"left\",\"font-size\":\"40px\",\"background-color\":\"red\"},on:{\"click\":_vm.pass}},[_vm._v(\"不出\")]),_c('button',{staticStyle:{\"height\":\"60px\",\"border-radius\":\"4px\",\"float\":\"right\",\"font-size\":\"40px\",\"background-color\":\"lawngreen\"},on:{\"click\":_vm.sendPoker2}},[_vm._v(\"出牌\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[0]),expression:\"game.currentPlayer===game.playerList[0]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"float\":\"left\",\"margin-left\":\"20px\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")])])]),(_vm.game.playerList[0].lastSendObj&&_vm.game.playerList[0].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"350px\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.deskPokerMarginLeft + 'px' })},_vm._l((_vm.game.playerList[0].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[0].lastSendObj&&!_vm.game.playerList[0].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"350px\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.deskPokerMarginLeft + 'px' })},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"40px\",\"left\":\"20px\",\"height\":\"200px\",\"width\":\"100px\",\"border\":\"solid 1px\",\"border-radius\":\"8px\",\"background-color\":\"azure\",\"text-align\":\"center\"}},[_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='play'),expression:\"game.stage==='play'\"}],staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].type==='nongmin'?'农民':'地主')+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].name)+\" \")]),_c('p',[_vm._v(\" 剩余 \"+_vm._s(_vm.game.playerList[2].pokerList.length)+\" 张 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[2]),expression:\"game.currentPlayer===game.playerList[2]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"left\":\"0\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='ready'),expression:\"game.stage==='ready'\"}],staticStyle:{\"color\":\"red\",\"width\":\"80px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"left\":\"0\",\"z-index\":\"999\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].ready?'已准备':'未准备')+\" \")])]),(_vm.game.playerList[2].lastSendObj&&_vm.game.playerList[2].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},_vm._l((_vm.game.playerList[2].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[2].lastSendObj&&!_vm.game.playerList[2].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),(_vm.game.stage==='jiaoFen')?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].jiaoFen)+\"分 \")])]):_vm._e(),_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"40px\",\"right\":\"20px\",\"height\":\"200px\",\"width\":\"100px\",\"border\":\"solid 1px\",\"border-radius\":\"8px\",\"background-color\":\"azure\",\"text-align\":\"center\"}},[_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='play'),expression:\"game.stage==='play'\"}],staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].type==='nongmin'?'农民':'地主')+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].name)+\" \")]),_c('p',[_vm._v(\" 剩余 \"+_vm._s(_vm.game.playerList[1].pokerList.length)+\" 张 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[1]),expression:\"game.currentPlayer===game.playerList[1]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"right\":\"0\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.stage==='ready'),expression:\"game.stage==='ready'\"}],staticStyle:{\"color\":\"red\",\"width\":\"80px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"right\":\"0\",\"z-index\":\"999\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].ready?'已准备':'未准备')+\" \")])]),(_vm.game.playerList[1].lastSendObj&&_vm.game.playerList[1].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},_vm._l((_vm.game.playerList[1].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[1].lastSendObj&&!_vm.game.playerList[1].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),(_vm.game.stage==='jiaoFen')?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].jiaoFen)+\"分 \")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div style=\"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')+')'}\">\n <audio muted autoplay loop controls :style=\"{ marginLeft: buttonMarginLeft + 'px' }\">\n <source src=\"../audio/bgm.mp3\">\n 您的浏览器不支持 audio 元素。\n </audio>\n\n<!-- <div v-show=\"false\" style=\"width: 300px;height:300px;float: left; position: fixed ; left: 0; top: 0px; background-color: aliceblue; text-align: center\">-->\n<!-- <span>-->\n<!-- 手牌:{{player2Str[1]}}-->\n<!-- </span>-->\n<!-- </div>-->\n\n<!-- <div v-show=\"false\" style=\"width: 300px;height:300px;float: left; position: fixed ; right: 0; top: 0px; background-color: aliceblue; text-align: center\">-->\n<!-- <span>-->\n<!-- 手牌:{{player1Str[1]}}-->\n<!-- </span>-->\n<!-- </div>-->\n\n <div v-show=\"false\" style=\"width: 300px;height:300px;float: left; position: fixed ; left: 600px; top: 0px; background-color: aliceblue; text-align: center\">\n <div style=\"width: 300px;word-wrap: break-word;\">\n 已出的牌:\n <br/>\n {{deskStr[1]}}\n </div>\n </div>\n\n<!-- <div style=\"position: fixed;left: 10px;bottom: 10px;\">-->\n<!-- <button @click=\"reStart\" style=\"height: 50px;font-size:30px;\">开始新一局</button>-->\n<!-- </div>-->\n\n <div v-show=\"game.stage==='ready'\" :style=\"{ marginLeft: playerMarginLeft-40 + 'px' }\" style=\"font-size: 20px;color:white;position: fixed;bottom:200px;z-index: 999;\">\n <button v-show=\"!game.playerList[0].ready\" @mousedown=\"setReady\" style=\"font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;\">{{game.playerList[0].ready?'已准备':'准备'}}</button>\n <div v-show=\"game.playerList[0].ready\" style=\"color: red;width:80px;border: solid;border-radius: 4px;position: absolute;\">\n {{game.playerList[0].ready?'已准备':'未准备'}}\n </div>\n </div>\n\n <div v-show=\"game.stage==='jiaoFen'&&game.currentJiaoFenPlayer===game.playerList[0]\" :style=\"{ marginLeft: playerMarginLeft-40 + 'px' }\" style=\"font-size: 20px;color:white;position: fixed;bottom:200px;z-index: 999;\">\n <button v-show=\"true\" @mousedown=\"game.playerList[0].setJiaoFen(0)\" style=\"font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;\">不叫</button>\n <button v-show=\"true\" @mousedown=\"game.playerList[0].setJiaoFen(1)\" style=\"font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;\">1分</button>\n <button v-show=\"true\" @mousedown=\"game.playerList[0].setJiaoFen(2)\" style=\"font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;\">2分</button>\n <button v-show=\"true\" @mousedown=\"game.playerList[0].setJiaoFen(3)\" style=\"font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;\">3分</button>\n<!-- <div v-show=\"game.playerList[0].ready\" style=\"color: red;width:80px;border: solid;border-radius: 4px;position: absolute;\">-->\n<!-- {{game.playerList[0].ready?'已准备':'未准备'}}-->\n<!-- </div>-->\n </div>\n\n <div v-show=\"game.stage==='play'\" :style=\"{ marginLeft: playerMarginLeft-150 + 'px' }\" style=\"color:white;position: fixed;bottom:0;width: 100%;height: 200px;line-height: 200px;\">\n 你是 <span style=\"color:red;font-size: 20px\">{{game.playerList[0].type==='nongmin'?'农民':'地主'}}</span>\n </div>\n <div :style=\"{ marginLeft: playerMarginLeft + 'px' }\" style=\"position: fixed;bottom:0;width: 100%;height: 200px;\">\n <div @mouseenter=\"enter($event,item)\" @mousedown=\"pickPoker(item)\" v-for=\"item in game.playerList[0].pokerList\" :class=\"{ selected: item.selected, s:item.number===16, x:item.number===17 }\" class=\"poker pokerDesk\" style=\"\">\n <span v-show=\"item.number<16\">\n {{item.text}}\n </span>\n </div>\n </div>\n\n <div v-show=\"game.currentPlayer===game.playerList[0]\" style=\"position: fixed;bottom:200px;width: 100%;height: 100px;text-align:left;\">\n <div :style=\"{ marginLeft: buttonMarginLeft + 'px' }\" style=\"width: 400px;height: 60px;\">\n <button @click=\"pass\" style=\"height: 60px;border-radius: 4px;float:left;font-size:40px;background-color: red\">不出</button>\n <button @click=\"sendPoker2\" style=\"height: 60px;border-radius: 4px;float:right;font-size:40px;background-color: lawngreen\">出牌</button>\n <div v-show=\"game.currentPlayer===game.playerList[0]\" style=\"color: red;width:150px;border: solid;border-radius: 4px;float: left;margin-left: 20px;\">\n 请在{{game.second}}秒内出牌\n </div>\n </div>\n </div>\n\n <div v-if=\"game.playerList[0].lastSendObj&&game.playerList[0].lastSendObj.poker[0].text\" :style=\"{ marginLeft: deskPokerMarginLeft + 'px' }\" style=\"position: fixed;bottom:350px;width: 100%;height: 200px\">\n <div v-for=\"item in game.playerList[0].lastSendObj.poker\" class=\"pokerDesk\" :class=\"{ s:item.number===16, x:item.number===17 }\">\n <span v-show=\"item.number<16\">\n {{item.text}}\n </span>\n </div>\n </div>\n <div v-if=\"game.playerList[0].lastSendObj&&!game.playerList[0].lastSendObj.poker[0].text\" :style=\"{ marginLeft: deskPokerMarginLeft + 'px' }\" style=\"position: fixed;bottom:350px;width: 100%;height: 200px\">\n <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\n pass\n </div>\n </div>\n\n <div style=\"position: fixed;top:40px;left: 20px;height:200px;width:100px;border: solid 1px;border-radius: 8px;background-color: azure;text-align: center\">\n <p v-show=\"game.stage==='play'\" style=\"color:red;font-size: 20px\">\n {{game.playerList[2].type==='nongmin'?'农民':'地主'}}\n </p>\n <p>\n {{game.playerList[2].name}}\n </p>\n <p>\n 剩余 {{game.playerList[2].pokerList.length}} 张\n </p>\n\n <div v-show=\"game.currentPlayer===game.playerList[2]\" style=\"color: red;width:150px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;left: 0\">\n 请在{{game.second}}秒内出牌\n </div>\n <div v-show=\"game.stage==='ready'\" style=\"color: red;width:80px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;left: 0;z-index: 999;\">\n {{game.playerList[2].ready?'已准备':'未准备'}}\n </div>\n </div>\n <div v-if=\"game.playerList[2].lastSendObj&&game.playerList[2].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;left:200px;height: 200px;\">\n <div v-for=\"item in game.playerList[2].lastSendObj.poker\" class=\"pokerDesk\" :class=\"{ s:item.number===16, x:item.number===17 }\">\n <span v-show=\"item.number<16\">\n {{item.text}}\n </span>\n </div>\n </div>\n <div v-if=\"game.playerList[2].lastSendObj&&!game.playerList[2].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;left:200px;height: 200px;\">\n <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\n pass\n </div>\n </div>\n <div v-if=\"game.stage==='jiaoFen'\" style=\"position: fixed;top:100px;left:200px;height: 200px;\">\n <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\n {{game.playerList[2].jiaoFen}}分\n </div>\n </div>\n\n <div style=\"position: fixed;top:40px;right: 20px;height:200px;width:100px;border: solid 1px;border-radius: 8px;background-color: azure;text-align: center\">\n <p v-show=\"game.stage==='play'\" style=\"color:red;font-size: 20px\">\n {{game.playerList[1].type==='nongmin'?'农民':'地主'}}\n </p>\n <p>\n {{game.playerList[1].name}}\n </p>\n <p>\n 剩余 {{game.playerList[1].pokerList.length}} 张\n </p>\n <div v-show=\"game.currentPlayer===game.playerList[1]\" style=\"color: red;width:150px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;right: 0\">\n 请在{{game.second}}秒内出牌\n </div>\n <div v-show=\"game.stage==='ready'\" style=\"color: red;width:80px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;right: 0;z-index: 999;\">\n {{game.playerList[1].ready?'已准备':'未准备'}}\n </div>\n </div>\n <div v-if=\"game.playerList[1].lastSendObj&&game.playerList[1].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;right:200px;height: 200px;\">\n <div v-for=\"item in game.playerList[1].lastSendObj.poker\" class=\"pokerDesk\" :class=\"{ s:item.number===16, x:item.number===17 }\">\n <span v-show=\"item.number<16\">\n {{item.text}}\n </span>\n </div>\n </div>\n <div v-if=\"game.playerList[1].lastSendObj&&!game.playerList[1].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;right:200px;height: 200px;\">\n <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\n pass\n </div>\n </div>\n <div v-if=\"game.stage==='jiaoFen'\" style=\"position: fixed;top:100px;right:200px;height: 200px;\">\n <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\n {{game.playerList[1].jiaoFen}}分\n </div>\n </div>\n\n </div>\n</template>\n\n\n<script>\n import Game from \"../doudizhu/Game\";\nexport default {\n name: 'HelloWorld',\n data(){\n return {\n data:'fuck1',\n game: new Game(),\n playerStr: '',\n pokerList: [],\n }\n },\n computed: {\n\n playerMarginLeft: function(){\n return (window.innerWidth - (this.game.playerList[0].pokerList.length*50))/2;\n },\n deskPokerMarginLeft: function(){\n return (window.innerWidth - (this.game.playerList[0].lastSendObj.poker.length*50))/2;\n },\n buttonMarginLeft: function(){\n return (window.innerWidth - 400)/2;\n },\n\n deskPoker: function(){\n if(this.game.deskPokerObj && this.game.deskPokerObj.poker){\n if(this.game.deskPokerObj.poker[0] && this.game.deskPokerObj.poker[0].text){\n return this.game.deskPokerObj.poker;\n }\n }\n return [];\n },\n player2Str: function () {\n let game = this.game;\n let i = 2;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n game.playerList[i].lastSendObjToString()\n ];\n },\n player1Str: function () {\n let game = this.game;\n let i = 1;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n game.playerList[i].lastSendObjToString()\n ];\n },\n player0Str: function () {\n let game = this.game;\n let i = 0;\n return [\n game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\n game.playerList[i].pokerListToString(),\n game.playerList[i].lastSendObjToString()\n ];\n },\n deskStr: function () {\n let game = this.game;\n return [\n 'desk',\n game.pokerListToString()\n ];\n },\n },\n mounted() {\n this.data = this.game.playerList[1].name;\n window.game = this.game;\n },\n methods:{\n\n setReady: function() {\n let that = this;\n that.game.playerList[0].setReady();\n },\n\n enter: function(e, poker){\n if(e.buttons === 1){\n this.pickPoker(poker);\n }\n },\n\n pickPoker(poker){\n if(!poker.selected){\n poker.selected = true;\n this.pokerList.push(poker);\n }else{\n poker.selected = false;\n for(let i=0; i<this.pokerList.length; i++){\n if(this.pokerList[i] === poker){\n this.pokerList.splice(i,1);\n }\n }\n }\n },\n\n sendPoker2() {\n let game = this.game;\n let success = game.playerList[0].playByPokerList(this.pokerList);\n if(success){\n this.pokerList=[];\n }\n },\n\n sendPoker() {\n let game = this.game;\n let success = game.playerList[0].playByString(this.playerStr);\n if(success){\n this.playerStr='';\n }\n },\n\n pass() {\n this.game.playerList[0].playByString('pass');\n },\n\n reStart() {\n this.game = new Game();\n this.playerStr='';\n },\n\n },\n}\n</script>\n\n<style scoped>\n .pokerDesk{\n height:100%;width:100px;border: solid 1px;border-radius: 16px;float: left;margin-left:-50px;background-color: azure;\n font-size: 30px;\n background-repeat: no-repeat;background-size: cover;\n }\n\n .poker:hover{\n background-color: antiquewhite;\n }\n\n .selected{\n margin-top: -20px;\n }\n\n .s{\n background-image: url(\"../img/s.jpg\");\n }\n\n .x{\n background-image: url(\"../img/x.png\");\n }\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Game.vue?vue&type=template&id=7bd525ec&scoped=true&\"\nimport script from \"./Game.vue?vue&type=script&lang=js&\"\nexport * from \"./Game.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Game.vue?vue&type=style&index=0&id=7bd525ec&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7bd525ec\",\n null\n \n)\n\nexport default component.exports","<template>\n <div id=\"app\">\n <Game></Game>\n </div>\n</template>\n\n<script>\nimport HelloWorld from './components/HelloWorld.vue';\nimport Game from './components/Game.vue';\n\nexport default {\n name: 'App',\n components: {\n HelloWorld,\n Game,\n }\n}\n</script>\n\n<style>\n\n</style>\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=51e9b17b&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\n\nVue.config.productionTip = false;\n\nnew Vue({\n render: h => h(App),\n}).$mount('#app');\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=style&index=0&id=7bd525ec&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=style&index=0&id=7bd525ec&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"media/bgm.8035c6a0.mp3\";"],"sourceRoot":""}
\ No newline at end of file
......@@ -29,14 +29,24 @@
<!-- <button @click="reStart" style="height: 50px;font-size:30px;">开始新一局</button>-->
<!-- </div>-->
<div v-show="game.isOver" :style="{ marginLeft: playerMarginLeft-40 + 'px' }" style="font-size: 20px;color:white;position: fixed;bottom:200px;z-index: 999;">
<div v-show="game.stage==='ready'" :style="{ marginLeft: playerMarginLeft-40 + 'px' }" style="font-size: 20px;color:white;position: fixed;bottom:200px;z-index: 999;">
<button v-show="!game.playerList[0].ready" @mousedown="setReady" style="font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;">{{game.playerList[0].ready?'已准备':'准备'}}</button>
<div v-show="game.playerList[0].ready" style="color: red;width:80px;border: solid;border-radius: 4px;position: absolute;">
{{game.playerList[0].ready?'已准备':'未准备'}}
</div>
</div>
<div v-show="!game.isOver" :style="{ marginLeft: playerMarginLeft-150 + 'px' }" style="color:white;position: fixed;bottom:0;width: 100%;height: 200px;line-height: 200px;">
<div v-show="game.stage==='jiaoFen'&&game.currentJiaoFenPlayer===game.playerList[0]" :style="{ marginLeft: playerMarginLeft-40 + 'px' }" style="font-size: 20px;color:white;position: fixed;bottom:200px;z-index: 999;">
<button v-show="true" @mousedown="game.playerList[0].setJiaoFen(0)" style="font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;">不叫</button>
<button v-show="true" @mousedown="game.playerList[0].setJiaoFen(1)" style="font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;">1分</button>
<button v-show="true" @mousedown="game.playerList[0].setJiaoFen(2)" style="font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;">2分</button>
<button v-show="true" @mousedown="game.playerList[0].setJiaoFen(3)" style="font-size: 40px;height: 60px;line-height: 30px;border-radius: 4px;background-color: lawngreen;">3分</button>
<!-- <div v-show="game.playerList[0].ready" style="color: red;width:80px;border: solid;border-radius: 4px;position: absolute;">-->
<!-- {{game.playerList[0].ready?'已准备':'未准备'}}-->
<!-- </div>-->
</div>
<div v-show="game.stage==='play'" :style="{ marginLeft: playerMarginLeft-150 + 'px' }" style="color:white;position: fixed;bottom:0;width: 100%;height: 200px;line-height: 200px;">
你是 <span style="color:red;font-size: 20px">{{game.playerList[0].type==='nongmin'?'农民':'地主'}}</span>
</div>
<div :style="{ marginLeft: playerMarginLeft + 'px' }" style="position: fixed;bottom:0;width: 100%;height: 200px;">
......@@ -71,7 +81,7 @@
</div>
<div style="position: fixed;top:40px;left: 20px;height:200px;width:100px;border: solid 1px;border-radius: 8px;background-color: azure;text-align: center">
<p v-show="!game.isOver" style="color:red;font-size: 20px">
<p v-show="game.stage==='play'" style="color:red;font-size: 20px">
{{game.playerList[2].type==='nongmin'?'农民':'地主'}}
</p>
<p>
......@@ -84,7 +94,7 @@
<div v-show="game.currentPlayer===game.playerList[2]" style="color: red;width:150px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;left: 0">
请在{{game.second}}秒内出牌
</div>
<div v-show="game.isOver" style="color: red;width:80px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;left: 0;z-index: 999;">
<div v-show="game.stage==='ready'" style="color: red;width:80px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;left: 0;z-index: 999;">
{{game.playerList[2].ready?'已准备':'未准备'}}
</div>
</div>
......@@ -100,9 +110,14 @@
pass
</div>
</div>
<div v-if="game.stage==='jiaoFen'" style="position: fixed;top:100px;left:200px;height: 200px;">
<div style="height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000">
{{game.playerList[2].jiaoFen}}
</div>
</div>
<div style="position: fixed;top:40px;right: 20px;height:200px;width:100px;border: solid 1px;border-radius: 8px;background-color: azure;text-align: center">
<p v-show="!game.isOver" style="color:red;font-size: 20px">
<p v-show="game.stage==='play'" style="color:red;font-size: 20px">
{{game.playerList[1].type==='nongmin'?'农民':'地主'}}
</p>
<p>
......@@ -114,7 +129,7 @@
<div v-show="game.currentPlayer===game.playerList[1]" style="color: red;width:150px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;right: 0">
请在{{game.second}}秒内出牌
</div>
<div v-show="game.isOver" style="color: red;width:80px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;right: 0;z-index: 999;">
<div v-show="game.stage==='ready'" style="color: red;width:80px;border: solid;border-radius: 4px;position: absolute;bottom:-50px;right: 0;z-index: 999;">
{{game.playerList[1].ready?'已准备':'未准备'}}
</div>
</div>
......@@ -130,6 +145,11 @@
pass
</div>
</div>
<div v-if="game.stage==='jiaoFen'" style="position: fixed;top:100px;right:200px;height: 200px;">
<div style="height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000">
{{game.playerList[1].jiaoFen}}
</div>
</div>
</div>
</template>
......
......@@ -7,11 +7,13 @@ class Game{
this.pokerList = [];
this.deskPokerObj = null;
this.oldPokerList = [];
this.currentPlayer = [];
this.currentPlayer = null;
this.currentJiaoFenPlayer = null;
this.jiaoFenCount = 0;
this.dizhu = null;
this.MaxSecond = 60;
this.second = this.MaxSecond;
this.isOver = true;
this.stage = 'ready'; //阶段 ready\jiaoFen\play
this.init();
}
......@@ -23,16 +25,51 @@ class Game{
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();
this.sendPoker();
this.startJiaoFen();
}
}
//开始叫分
startJiaoFen(){
this.stage = 'jiaoFen';
let index = this.getRandomIntInclusive(0,2);
this.currentJiaoFenPlayer = this.playerList[index];
}
someOneJiaoFen(){
let that = this;
this.jiaoFenCount++;
if(this.jiaoFenCount === 3){
setTimeout(function () {
that.setDiZhu();
},1000);
return;
}else{
this.currentJiaoFenPlayer = this.currentJiaoFenPlayer.next;
}
}
setDiZhu(){
let sortList = this.playerList.slice(0).sort(this.sortByJiaoFen);
let dizhu = sortList[0];
dizhu.type = 'dizhu';
this.dizhu = dizhu;
this.start();
}
sortByJiaoFen(a, b){
return b.jiaoFen - a.jiaoFen;
}
resetTime(){
this.second = this.MaxSecond;
}
timeLoop(){
if(this.isOver){
if(this.stage !== 'play'){
return;
}
this.second--;
......@@ -53,10 +90,7 @@ class Game{
start(){
this.setDiZhu();
this.sendPoker();
this.isOver = false;
this.stage = 'play';
this.timeLoop();
this.currentPlayer = this.dizhu;
if(this.currentPlayer.isRobot){
......@@ -64,12 +98,6 @@ class Game{
}
}
setDiZhu(){
let dizhuIndex = this.getRandomIntInclusive(0,2);
this.playerList[dizhuIndex].type = 'dizhu';
this.dizhu = this.playerList[dizhuIndex];
}
reset(){
this.playerList[0].reset();
......@@ -80,9 +108,11 @@ class Game{
this.deskPokerObj = null;
this.oldPokerList = [];
this.currentPlayer = null;
this.currentJiaoFenPlayer = null;
this.jiaoFenCount = 0;
this.dizhu = null;
this.second = this.MaxSecond;
this.isOver = true;
this.stage = 'ready';
this.initPokerList();
}
......@@ -102,7 +132,6 @@ class Game{
gameOver(){
alert('游戏结束! '+this.currentPlayer.name+' ['+this.currentPlayer.type+'] 胜!');
this.isOver = true;
this.reset();
}
......@@ -120,6 +149,15 @@ class Game{
}
}
sendDiZhuPoker(){
do{
let poker = this.pokerList.splice(0,1)[0];
this.dizhu.addPoker(poker);
}while(this.pokerList.length>0);
this.dizhu.sortPoker();
}
sendPoker(){
let player = this.playerList[0];
do{
......@@ -129,11 +167,6 @@ class Game{
player = player.next;
}while(this.pokerList.length>3);
do{
let poker = this.pokerList.splice(0,1)[0];
this.dizhu.addPoker(poker);
}while(this.pokerList.length>0);
for(let i=0; i<this.playerList.length; i++){
this.playerList[i].sortPoker();
}
......
......@@ -5,6 +5,7 @@ class Player{
constructor(param) {
param = param || {};
this.ready = false; //已准备
this.jiaoFen = 0; //叫分
this.pokerList = [];
this.name = param.name || 'noName'+Math.random();
this.type = param.type || 'nongmin';
......@@ -18,7 +19,15 @@ class Player{
});
this.classifyObj = null;
this.lastSendObj = null;
this.loopRobot();
if(this.isRobot){
this.loopRobot();
}
}
setJiaoFen(fen){
this.jiaoFen = fen;
this.game.someOneJiaoFen();
}
loopRobot(){
......@@ -28,6 +37,9 @@ class Player{
that.setReady();
}
}
if(that.game.stage==='jiaoFen' && that.game.currentJiaoFenPlayer === that){
that.setJiaoFen(3);
}
setTimeout(function(){
that.loopRobot();
......@@ -41,6 +53,7 @@ class Player{
reset(){
this.ready = false;
this.jiaoFen = 0;
this.pokerList = [];
this.type = 'nongmin';
this.classifyObj = null;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册