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

界面

上级 55bae1a4
.poker[data-v-70a35e10]{height:100%;width:50px;border:1px solid;border-radius:8px;float:left;margin-left:-25px;background-color:azure}.poker[data-v-70a35e10]:hover{background-color:#faebd7}.selected[data-v-70a35e10]{margin-top:-20px}
\ 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.9870ab7e.css rel=preload as=style><link href=js/app.e35a531b.js rel=preload as=script><link href=js/chunk-vendors.caf18475.js rel=preload as=script><link href=css/app.9870ab7e.css rel=stylesheet></head><body><div id=app></div><script src=js/chunk-vendors.caf18475.js></script><script src=js/app.e35a531b.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.1475b526.css rel=preload as=style><link href=js/app.2113c29b.js rel=preload as=script><link href=js/chunk-vendors.caf18475.js rel=preload as=script><link href=css/app.1475b526.css rel=stylesheet></head><body><div id=app></div><script src=js/chunk-vendors.caf18475.js></script><script src=js/app.2113c29b.js></script></body></html>
\ No newline at end of file
(function(e){function t(t){for(var n,l,o=t[0],a=t[1],p=t[2],u=0,c=[];u<o.length;u++)l=o[u],Object.prototype.hasOwnProperty.call(i,l)&&i[l]&&c.push(i[l][0]),i[l]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);h&&h(t);while(c.length)c.shift()();return s.push.apply(s,p||[]),r()}function r(){for(var e,t=0;t<s.length;t++){for(var r=s[t],n=!0,o=1;o<r.length;o++){var a=r[o];0!==i[a]&&(n=!1)}n&&(s.splice(t--,1),e=l(l.s=r[0]))}return e}var n={},i={app:0},s=[];function l(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,l),r.l=!0,r.exports}l.m=e,l.c=n,l.d=function(e,t,r){l.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,t){if(1&t&&(e=l(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(l.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)l.d(r,n,function(t){return e[t]}.bind(null,n));return r},l.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(t,"a",t),t},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.p="";var o=window["webpackJsonp"]=window["webpackJsonp"]||[],a=o.push.bind(o);o.push=t,o=o.slice();for(var p=0;p<o.length;p++)t(o[p]);var h=a;s.push([0,"chunk-vendors"]),r()})({0:function(e,t,r){e.exports=r("56d7")},"56d7":function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var n=r("2b0e"),i=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{attrs:{id:"app"}},[r("Game")],1)},s=[],l=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")])])])},o=[],a=(r("b0c0"),r("a434"),r("d4ec")),p=r("bee2"),h=(r("99af"),r("0481"),r("d81d"),r("fb6a"),r("4069"),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(p["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],n=[r],i=[],s=1;s<t.length;s++)t[s].number!==r.number?(i.push(n),n=[t[s]]):n.push(t[s]),r=t[s];i.push(n);for(var l=[],o=[],a=[],p=[],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?l.push(i[h]):4===i[h].length&&p.push(i[h]);if(1===t.length)return{type:"one",poker:t,one:t};if(2===t.length){if(1===o.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(4===t.length){if(1===a.length)return{type:"threeWithOne",poker:t,three:a[0],one:l[0]};if(1===p.length)return{type:"four",poker:t,four:t}}else if(5===t.length){if(1===a.length&&1===o.length)return{type:"threeWithTwo",poker:t,three:a[0],two:o[0]}}else if(8===t.length){if(2===a.length&&a[0][0].number+1===a[1][0].number)return 1===o.length&&(l.push(o[0].splice(0,1)),l.push(o[0].splice(0,1))),{type:"threeWithOneList",poker:t,list:[{three:a[0],one:l[0]},{three:a[1],one:l[1]}]}}else if(10===t.length&&2===a.length&&a[0][0].number+1===a[1][0].number&&2===o.length)return{type:"threeWithTwoList",poker:t,list:[{three:a[0],two:o[0]},{three:a[1],two:o[1]}]};return t.length>=5&&l.length===t.length&&t[0].number+t.length-1===t[t.length-1].number?{type:"oneList",poker:t,list:l.map((function(e){return{one:e}}))}:t.length>=6&&t.length%2===0&&o.length===t.length/2&&t[0].number+t.length/2-1===t[t.length-1].number&&{type:"twoList",poker:t,list:o.map((function(e){return{two:e}}))}}},{key:"pokerListToString",value:function(e){for(var t="",r=0;r<e.length;r++){var n=e[r].toString();t+=n}return t}}]),e}()),u=h,c=function(){function e(t){Object(a["a"])(this,e),t=t||{},this.pokerList=[],this.name=t.name||"noName"+Math.random(),this.type=t.type||"nongmin",this.last=null,this.next=null,this.isRobot=t.isRobot,this.game=t.game,this.lastSendObj=null}return Object(p["a"])(e,[{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;setTimeout((function(){var t=e.getLastObj();t?e.playByObj(t):e.playByAllType()}),1e3)}},{key:"sendPoker",value:function(e){this.game.clearDesk(),this.lastSendObj=e,this.game.deskPokerObj=e,this.game.next()}},{key:"playByAllType",value:function(){for(var e=["threeWithTwoList","threeWithOneList","twoList","threeWithTwo","oneList","threeWithOne","two","one","four","sx","pass"],t=0;t<e.length;t++){var r=this.getSmallestObjByType(e[t]);if(r){var n=this.deleteFromPokerListAndSendByObj(r);return void(n||alert("error!"))}}}},{key:"deleteFromPokerListAndSendByObj",value:function(e){var t=[];if("pass"===e.type)return this.sendPoker(e),!0;for(var r=e.poker,n=0;n<r.length;n++){var i=this.getAndDeleteOnePokerByNumber(r[n].number);if(!i)return this.listBackToPokerList(t),!1;t.push(i)}return this.sendPoker(e),!0}},{key:"getSmallestObjByType",value:function(e){for(var t=this.pokerList,r=t[0],n=[r],i=[],s=1;s<t.length;s++)t[s].number!==r.number?(i.push(n),n=[t[s]]):n.push(t[s]),r=t[s];i.push(n);for(var l=[],o=[],a=[],p=[],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?l.push(i[h]):4===i[h].length&&p.push(i[h]);var u=null;if("one"===e){if(l.length>0)u={type:e,poker:l[0],one:l[0]};else if(o.length>0){var c=o[0].slice(0,1);u={type:e,poker:c,one:c}}else if(a.length>0){var f=a[0].slice(0,1);u={type:e,poker:f,one:f}}}else if("two"===e){if(o.length>0)u={type:e,poker:o[0],two:o[0]};else if(a.length>0){var y=a[0].slice(0,2);u={type:e,poker:y,one:y}}}else if("threeWithOne"===e){if(a.length>0){var g;if(l.length>0)g=l[0];else if(o.length>0)g=o[0].slice(0,1);else if(a.length>0)for(var k=0;k<a.length;k++)0!==k&&(g=a[k].slice(0,1));g&&(u={type:e,poker:a[0].concat(g),three:a[0],one:g})}}else if("four"===e)p.length>0&&(u={type:e,poker:p[0],four:p[0]});else if("threeWithTwo"===e){if(a.length>0){var v;if(o.length>0)v=o[0];else if(a.length>0)for(var b=0;b<a.length;b++)0!==b&&(v=a[b].slice(0,2));v&&(u={type:e,poker:a[0].concat(v),three:a[0],two:v})}}else if("threeWithOneList"===e){if(a.length>1)for(var d=0;d<a.length-1;d++)if(a[d][0].number+1===a[d+1][0].number+1){var m=void 0,L=void 0;if(l.length>0){if(m=l[0],l.length>1)L=l[1];else if(o.length>0)L=o[0].slice(0,1);else if(a.length>0)for(var S=0;S<a.length;S++)S!==d&&(L=a[S].slice(0,1))}else if(o.length>0)m=o[0].slice(0,1),L=o[0].slice(1,2);else if(a.length>0)for(var x=0;x<a.length;x++)x!==d&&(m=a[x].slice(0,1),L=a[x].slice(1,2));m&&L&&(u={type:e,poker:a[d].concat(m).concat(a[d+1]).concat(L),list:[{three:a[d],one:m},{three:a[d+1],one:L}]});break}}else if("threeWithTwoList"===e){if(a.length>1)for(var w=0;w<a.length-1;w++)if(a[w][0].number+1===a[w+1][0].number+1){var P=void 0,O=void 0;if(o.length>0)if(P=o[0],o.length>1)O=o[1];else for(var _=0;_<a.length;_++)_!==w&&(O=a[_].slice(0,2));P&&O&&(u={type:e,poker:a[w].concat(P).concat(a[w+1]).concat(O),list:[{three:a[w],two:P},{three:a[w+1],two:O}]});break}}else if("oneList"===e){if(l.length>=5)for(var j=0;j<l.length-5+1;j++)if(l[j][0].number+5-1===l[j+5-1][0].number){var T=l.slice(j,j+5);u={type:e,poker:T.flat(1),list:T.map((function(e){return{one:e}}))};break}}else if("twoList"===e){if(o.length>=3)for(var B=0;B<o.length-3+1;B++)if(o[B][0].number+3-1===o[B+3-1][0].number){var W=o.slice(B,B+3);u={type:e,poker:W.flat(1),list:W.map((function(e){return{two:e}}))};break}}else if("sx"===e){if(l.length>=2)for(var A=0;A<l.length-1;A++)if(16===l[A][0].number){var N=o.slice(A,A+2),R=N.flat(1);u={type:e,poker:R,sx:R};break}}else"pass"===e&&(u={type:e,poker:["pass"]});return u}},{key:"getObjByObj",value:function(e){for(var t=this.pokerList,r=t[0],n=[r],i=[],s=1;s<t.length;s++)t[s].number!==r.number?(i.push(n),n=[t[s]]):n.push(t[s]),r=t[s];i.push(n);for(var l=[],o=[],a=[],p=[],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?l.push(i[h]):4===i[h].length&&p.push(i[h]);var u=e.type,c=null;if("one"===u){if(l.length>0){for(var f=0;f<l.length;f++)if(l[f][0].number>e.one[0].number){c={type:u,poker:l[f],one:l[f]};break}}else if(o.length>0){for(var y=0;y<o.length;y++)if(o[y][0].number>e.one[0].number){var g=o[y].slice(0,1);c={type:u,poker:g,one:g};break}}else if(a.length>0)for(var k=0;k<a.length;k++)if(a[k][0].number>e.one[0].number){var v=a[k].slice(0,1);c={type:u,poker:v,one:v};break}}else if("two"===u){if(o.length>0){for(var b=0;b<o.length;b++)if(o[b][0].number>e.two[0].number){c={type:u,poker:o[b],two:o[b]};break}}else if(a.length>0)for(var d=0;d<a.length;d++)if(a[d][0].number>e.two[0].number){var m=a[d].slice(0,2);c={type:u,poker:m,one:m};break}}else if("threeWithOne"===u){if(a.length>0)for(var L=0;L<a.length;L++)if(a[L][0].number>e.three[0].number){var S=void 0;if(l.length>0)S=l[0];else if(o.length>0)S=o[0].slice(0,1);else if(a.length>0)for(var x=0;x<a.length;x++)x!==L&&(S=a[x].slice(0,1));S&&(c={type:u,poker:a[L].concat(S),three:a[L],one:S});break}}else if("threeWithTwo"===u){if(a.length>0)for(var w=0;w<a.length;w++)if(a[w][0].number>e.three[0].number){var P=void 0;if(o.length>0)P=o[0];else if(a.length>0)for(var O=0;O<a.length;O++)O!==w&&(P=a[O].slice(0,2));P&&(c={type:u,poker:a[w].concat(P),three:a[w],two:P});break}}else if("threeWithOneList"===u){if(a.length>1)for(var _=0;_<a.length-1;_++)if(a[_][0].number>e.list[0].three[0].number&&a[_][0].number+1===a[_+1][0].number+1){var j=void 0,T=void 0;if(l.length>0){if(j=l[0],l.length>1)T=l[1];else if(o.length>0)T=o[0].slice(0,1);else if(a.length>0)for(var B=0;B<a.length;B++)B!==_&&(T=a[B].slice(0,1))}else if(o.length>0)j=o[0].slice(0,1),T=o[0].slice(1,2);else if(a.length>0)for(var W=0;W<a.length;W++)W!==_&&(j=a[W].slice(0,1),T=a[W].slice(1,2));j&&T&&(c={type:u,poker:a[_].concat(j).concat(a[_+1]).concat(T),list:[{three:a[_],one:j},{three:a[_+1],one:T}]});break}}else if("threeWithTwoList"===u){if(a.length>1)for(var A=0;A<a.length-1;A++)if(a[A][0].number>e.list[0].three[0].number&&a[A][0].number+1===a[A+1][0].number+1){var N=void 0,R=void 0;if(o.length>0)if(N=o[0],o.length>1)R=o[1];else for(var I=0;I<a.length;I++)I!==A&&(R=a[I].slice(0,2));N&&R&&(c={type:u,poker:a[A].concat(N).concat(a[A+1]).concat(R),list:[{three:a[A],two:N},{three:a[A+1],two:R}]});break}}else if("oneList"===u){if(l.length>=e.list.length)for(var D=0;D<l.length-e.list.length+1;D++)if(l[D][0].number>e.list[0].one[0].number&&l[D][0].number+e.list.length-1===l[D+e.list.length-1][0].number){var F=l.slice(D,D+e.list.length);c={type:u,poker:F.flat(1),list:F.map((function(e){return{one:e}}))};break}}else if("twoList"===u){if(o.length>=e.list.length)for(var M=0;M<o.length-e.list.length+1;M++)if(o[M][0].number>e.list[0].two[0].number&&o[M][0].number+e.list.length-1===o[M+e.list.length-1][0].number){var z=o.slice(M,M+e.list.length);c={type:u,poker:z.flat(1),list:z.map((function(e){return{two:e}}))};break}}else if("four"===u&&p.length>0)for(var G=0;G<p.length;G++)if(p[G][0].number>e.four[0].number){c={type:u,poker:p[G],four:p[G]};break}if(c||"four"===u||p.length>0&&(c={type:u,poker:p[0],four:p[0]}),!c&&"sx"!==u&&l.length>1&&16===l[l.length-2]){var J=l[l.length-2].concat(l[l.length-1]);c={type:u,poker:J,sx:J}}return c||(c={type:"pass",poker:["pass"]}),c}},{key:"playByObj",value:function(e){var t=this.getObjByObj(e),r=this.deleteFromPokerListAndSendByObj(t);r||alert("error!")}},{key:"getListByList",value:function(e){var t=[];if("pass"===e[0])return["pass"];for(var r=0;r<e.length;r++){var n=e[r],i=this.getAndDeleteOnePokerByNumber(n.number);if(!i)return this.listBackToPokerList(t),!1;t.push(i)}return t}},{key:"getListByString",value:function(e){var t=[];if("pass"===e)return["pass"];for(var r=0;r<e.length;r++){var n=e[r],i=u.textToNumber(n),s=this.getAndDeleteOnePokerByNumber(i);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 n=this.compareTwoObj(t,r);return n?(this.sendPoker(t),!0):(this.listBackToPokerList(e),alert("have to bigger than "+u.pokerListToString(r.poker)),!1)}return this.listBackToPokerList(e),alert("type is not "+r.type+"!"),!1}return this.sendPoker(t),!0}return this.listBackToPokerList(e),alert("type error!"),!1}return alert("poker error!"),!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"one"===e.type?e.one[0].number>t.one[0].number:"two"===e.type?e.two[0].number>t.two[0].number:"threeWithOne"===e.type||"threeWithTwo"===e.type?e.three[0].number>t.three[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:"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}(),f=c,y=function(){function e(){Object(a["a"])(this,e),this.playerList=[],this.pokerList=[],this.deskPokerObj=null,this.oldPokerList=[],this.currentPlayer=[],this.dizhu=null,this.init()}return Object(p["a"])(e,[{key:"init",value:function(){this.initPokerList(),this.initPlayerList(),this.sendPoker(),this.start()}},{key:"start",value:function(){this.currentPlayer=this.dizhu,this.currentPlayer.isRobot&&this.currentPlayer.playByAI()}},{key:"next",value:function(){var e=this.checkGameOver();e?this.gameOver():(this.currentPlayer=this.currentPlayer.next,this.currentPlayer.isRobot&&this.currentPlayer.playByAI())}},{key:"gameOver",value:function(){alert("gameOver! "+this.currentPlayer.name+" ["+this.currentPlayer.type+"] win!")}},{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 n=this.pokerList.splice(0,1)[0];this.dizhu.addPoker(n)}while(this.pokerList.length>0);for(var i=0;i<this.playerList.length;i++)this.playerList[i].sortPoker()}},{key:"initPlayerList",value:function(){this.playerList=[];var e=new f({name:"player",isRobot:!1,game:this}),t=new f({name:"robot1",isRobot:!0,game:this}),r=new f({name:"robot2",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];var n=this.getRandomIntInclusive(0,2);this.playerList[n].type="dizhu",this.dizhu=this.playerList[n]}},{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 n=16;n<=17;n++){var i=new u({number:n});this.pokerList.push(i)}}},{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}(),g=y,k={name:"HelloWorld",data:function(){return{data:"fuck1",game:new g,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 g,this.playerStr=""}}},v=k,b=r("2877"),d=Object(b["a"])(v,l,o,!1,null,"62298b0c",null),m=d.exports,L=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticStyle:{"user-select":"none"}},[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")])]),r("div",{staticStyle:{position:"fixed",bottom:"0",width:"100%",height:"100px","padding-left":"100px"}},e._l(e.game.playerList[0].pokerList,(function(t){return r("div",{staticClass:"poker",class:{selected:t.selected},on:{click:function(r){return e.pickPoker(t)}}},[e._v(" "+e._s(t.text)+" ")])})),0),r("div",{staticStyle:{position:"fixed",bottom:"100px",width:"100%",height:"50px","padding-left":"100px","text-align":"left"}},[r("button",{staticStyle:{height:"30px","border-radius":"4px"},on:{click:e.sendPoker2}},[e._v("出牌")]),r("button",{staticStyle:{height:"30px","border-radius":"4px","margin-left":"20px"},on:{click:e.pass}},[e._v("不出")])]),r("div",{staticStyle:{position:"fixed",bottom:"200px",width:"100%",height:"100px","padding-left":"100px"}},e._l(e.deskPoker,(function(t){return r("div",{staticStyle:{height:"100%",width:"50px",border:"solid 1px","border-radius":"8px",float:"left","margin-left":"-25px","background-color":"azure"}},[e._v(" "+e._s(t.text)+" ")])})),0)])},S=[],x={name:"HelloWorld",data:function(){return{data:"fuck1",game:new g,playerStr:"",pokerList:[]}},computed:{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(),"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:{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 g,this.playerStr=""}}},w=x,P=(r("e85a"),Object(b["a"])(w,L,S,!1,null,"70a35e10",null)),O=P.exports,_={name:"App",components:{HelloWorld:m,Game:O}},j=_,T=Object(b["a"])(j,i,s,!1,null,null,null),B=T.exports;n["a"].config.productionTip=!1,new n["a"]({render:function(e){return e(B)}}).$mount("#app")},e85a:function(e,t,r){"use strict";var n=r("e90d"),i=r.n(n);i.a},e90d:function(e,t,r){}});
//# sourceMappingURL=app.e35a531b.js.map
\ No newline at end of file
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?4625","webpack:///./src/components/HelloWorld.vue?f3a1","webpack:///./src/doudizhu/Poker.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?80df","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?385f"],"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","Player","Math","random","last","next","isRobot","game","lastSendObj","lastObj","that","setTimeout","getLastObj","playByObj","playByAllType","obj","clearDesk","deskPokerObj","types","getSmallestObjByType","success","deleteFromPokerListAndSendByObj","alert","tempList","getAndDeleteOnePokerByNumber","listBackToPokerList","concat","one1","one2","two1","two2","flat","getObjByObj","po","sortPoker","getObjByPokerList","comp","compareTwoObj","pokerListToString","currentPlayer","getListByList","handleList","getListByString","obj1","obj2","Game","playerList","oldPokerList","dizhu","init","initPokerList","initPlayerList","start","playByAI","over","checkGameOver","gameOver","player","index","getRandomIntInclusive","addPoker","player0","player1","player2","dizhuIndex","min","max","floor","computed","mounted","methods","reDraw","playByString","component","_l","staticClass","class","pickPoker","sendPoker2","components","HelloWorld","Vue","config","productionTip","render","h","App","$mount"],"mappings":"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","file":"js/app.e35a531b.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","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 === 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 === 8){\r\n\r\n if(Count3List.length === 2 && Count3List[0][0].number+1===Count3List[1][0].number){\r\n if(Count2List.length === 1){\r\n Count1List.push(Count2List[0].splice(0,1));\r\n Count1List.push(Count2List[0].splice(0,1));\r\n }\r\n return {\r\n type:'threeWithOneList',\r\n poker: pokerList,\r\n list: [\r\n {\r\n three: Count3List[0],\r\n one: Count1List[0],\r\n },\r\n {\r\n three: Count3List[1],\r\n one: Count1List[1],\r\n }\r\n ],\r\n };\r\n }\r\n\r\n }else if(pokerList.length === 10){\r\n\r\n if(Count3List.length === 2 && Count3List[0][0].number+1===Count3List[1][0].number && Count2List.length === 2){\r\n return {\r\n type:'threeWithTwoList',\r\n poker: pokerList,\r\n list: [\r\n {\r\n three: Count3List[0],\r\n two: Count2List[0],\r\n },\r\n {\r\n three: Count3List[1],\r\n two: Count2List[1],\r\n }\r\n ],\r\n };\r\n }\r\n\r\n }\r\n\r\n //判断oneList\r\n if(pokerList.length >= 5 && 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.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 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;","import Poker from \"./Poker\";\r\n\r\nclass Player{\r\n constructor(param) {\r\n param = param || {};\r\n this.pokerList = [];\r\n this.name = param.name || 'noName'+Math.random();\r\n this.type = param.type || 'nongmin';\r\n this.last = null;\r\n this.next = null;\r\n this.isRobot = param.isRobot;\r\n this.game = param.game;\r\n \r\n this.lastSendObj = null;\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 setTimeout(function () {\r\n let lastObj = that.getLastObj();\r\n if(lastObj){\r\n that.playByObj(lastObj);\r\n }else{\r\n that.playByAllType();\r\n }\r\n },1000);\r\n\r\n }\r\n\r\n sendPoker(obj){\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 playByAllType(){\r\n let types2 = ['one','two','threeWithOne','threeWithTwo','threeWithOneList','threeWithTwoList','oneList','twoList','four','sx','pass'];\r\n let types = ['threeWithTwoList','threeWithOneList','twoList','threeWithTwo','oneList','threeWithOne','two','one','four','sx','pass'];\r\n for(let i=0; i<types.length; i++){\r\n let obj = this.getSmallestObjByType(types[i]);\r\n if(obj){\r\n let success = this.deleteFromPokerListAndSendByObj(obj);\r\n if(!success){\r\n alert('error!');\r\n }\r\n return;\r\n }\r\n }\r\n\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 getSmallestObjByType(type){\r\n let pokerList = this.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 obj = null;\r\n if(type === 'one'){\r\n if(Count1List.length>0){\r\n obj = {\r\n type: type,\r\n poker: Count1List[0],\r\n one: Count1List[0],\r\n };\r\n }else if(Count2List.length>0){\r\n let poker = Count2List[0].slice(0,1);\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }else if(Count3List.length>0){\r\n let poker = Count3List[0].slice(0,1);\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 if(Count2List.length>0){\r\n obj = {\r\n type: type,\r\n poker: Count2List[0],\r\n two: Count2List[0],\r\n };\r\n }else if(Count3List.length>0){\r\n let poker = Count3List[0].slice(0,2);\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n }\r\n }else if(type === 'threeWithOne'){\r\n if(Count3List.length>0){\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===0){\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[0].concat(one),\r\n three: Count3List[0],\r\n one: one,\r\n };\r\n }\r\n }\r\n }else if(type === 'four'){\r\n if(Count4List.length>0){\r\n obj = {\r\n type: type,\r\n poker: Count4List[0],\r\n four: Count4List[0],\r\n };\r\n }\r\n }else if(type === 'threeWithTwo'){\r\n if(Count3List.length>0){\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===0){\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[0].concat(two),\r\n three: Count3List[0],\r\n two: two,\r\n };\r\n }\r\n }\r\n }else if(type === 'threeWithOneList'){\r\n if(Count3List.length>1){\r\n for(let i=0; i<Count3List.length-1; i++){\r\n if(Count3List[i][0].number+1===Count3List[i+1][0].number+1){\r\n\r\n let one1,one2;\r\n if(Count1List.length>0){\r\n one1 = Count1List[0];\r\n if(Count1List.length>1){\r\n one2 = Count1List[1];\r\n }else{\r\n if(Count2List.length>0){\r\n one2 = 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 one2 = Count3List[j].slice(0,1);\r\n }\r\n }\r\n }\r\n }else if(Count2List.length>0){\r\n one1 = Count2List[0].slice(0,1);\r\n one2 = Count2List[0].slice(1,2);\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 one1 = Count3List[j].slice(0,1);\r\n one2 = Count3List[j].slice(1,2);\r\n }\r\n }\r\n\r\n if(one1&&one2){\r\n obj = {\r\n type: type,\r\n poker: Count3List[i].concat(one1).concat(Count3List[i+1]).concat(one2),\r\n list: [\r\n {\r\n three: Count3List[i],\r\n one: one1,\r\n },\r\n {\r\n three: Count3List[i+1],\r\n one: one2,\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(Count3List.length>1){\r\n for(let i=0; i<Count3List.length-1; i++){\r\n if(Count3List[i][0].number+1===Count3List[i+1][0].number+1){\r\n\r\n let two1,two2;\r\n if(Count2List.length>0){\r\n two1 = Count2List[0];\r\n if(Count2List.length>1){\r\n two2 = Count2List[1];\r\n }else{\r\n for(let j=0; j<Count3List.length; j++){\r\n if(j===i){\r\n continue;\r\n }\r\n two2 = Count3List[j].slice(0,2);\r\n }\r\n }\r\n }\r\n\r\n if(two1&&two2){\r\n obj = {\r\n type: type,\r\n poker: Count3List[i].concat(two1).concat(Count3List[i+1]).concat(two2),\r\n list: [\r\n {\r\n three: Count3List[i],\r\n two: two1,\r\n },\r\n {\r\n three: Count3List[i+1],\r\n two: two2,\r\n }\r\n ],\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>=5 ){\r\n for(let i=0; i<Count1List.length-5+1; i++){\r\n if(Count1List[i][0].number+5-1===Count1List[i+5-1][0].number){\r\n let list = Count1List.slice(i,i+5);\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>=3 ){\r\n for(let i=0; i<Count2List.length-3+1; i++){\r\n if(Count2List[i][0].number+3-1===Count2List[i+3-1][0].number){\r\n let list = Count2List.slice(i,i+3);\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 === 'sx'){\r\n if(Count1List.length>=2){\r\n for(let i=0; i<Count1List.length-1; i++){\r\n if(Count1List[i][0].number===16){\r\n let list = Count2List.slice(i,i+2);\r\n let poker = list.flat(1);\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n sx: poker,\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else if(type === 'pass'){\r\n obj = {\r\n type: type,\r\n poker: ['pass'],\r\n };\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n getObjByObj(lastObj){\r\n let pokerList = this.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 if(type === 'one'){\r\n if(Count1List.length>0){\r\n for(let i=0; i<Count1List.length; i++){\r\n if(Count1List[i][0].number>lastObj.one[0].number){\r\n obj = {\r\n type: type,\r\n poker: Count1List[i],\r\n one: Count1List[i],\r\n };\r\n break;\r\n }\r\n }\r\n }else if(Count2List.length>0){\r\n for(let i=0; i<Count2List.length; i++){\r\n if(Count2List[i][0].number>lastObj.one[0].number){\r\n let poker = Count2List[i].slice(0,1);\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\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.one[0].number){\r\n let poker = Count3List[i].slice(0,1);\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n one: poker,\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }else 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 one: 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>1){\r\n for(let i=0; i<Count3List.length-1; i++){\r\n if(Count3List[i][0].number>lastObj.list[0].three[0].number && Count3List[i][0].number+1===Count3List[i+1][0].number+1){\r\n\r\n let one1,one2;\r\n if(Count1List.length>0){\r\n one1 = Count1List[0];\r\n if(Count1List.length>1){\r\n one2 = Count1List[1];\r\n }else{\r\n if(Count2List.length>0){\r\n one2 = 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 one2 = Count3List[j].slice(0,1);\r\n }\r\n }\r\n }\r\n }else if(Count2List.length>0){\r\n one1 = Count2List[0].slice(0,1);\r\n one2 = Count2List[0].slice(1,2);\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 one1 = Count3List[j].slice(0,1);\r\n one2 = Count3List[j].slice(1,2);\r\n }\r\n }\r\n\r\n if(one1&&one2){\r\n obj = {\r\n type: type,\r\n poker: Count3List[i].concat(one1).concat(Count3List[i+1]).concat(one2),\r\n list: [\r\n {\r\n three: Count3List[i],\r\n one: one1,\r\n },\r\n {\r\n three: Count3List[i+1],\r\n one: one2,\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(Count3List.length>1){\r\n for(let i=0; i<Count3List.length-1; i++){\r\n if(Count3List[i][0].number>lastObj.list[0].three[0].number && Count3List[i][0].number+1===Count3List[i+1][0].number+1){\r\n\r\n let two1,two2;\r\n if(Count2List.length>0){\r\n two1 = Count2List[0];\r\n if(Count2List.length>1){\r\n two2 = Count2List[1];\r\n }else{\r\n for(let j=0; j<Count3List.length; j++){\r\n if(j===i){\r\n continue;\r\n }\r\n two2 = Count3List[j].slice(0,2);\r\n }\r\n }\r\n }\r\n\r\n if(two1&&two2){\r\n obj = {\r\n type: type,\r\n poker: Count3List[i].concat(two1).concat(Count3List[i+1]).concat(two2),\r\n list: [\r\n {\r\n three: Count3List[i],\r\n two: two1,\r\n },\r\n {\r\n three: Count3List[i+1],\r\n two: two2,\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(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){\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){\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 === 'four'){\r\n if(Count4List.length>0){\r\n for(let i=0; i<Count4List.length; i++){\r\n if(Count4List[i][0].number>lastObj.four[0].number){\r\n obj = {\r\n type: type,\r\n poker: Count4List[i],\r\n four: Count4List[i],\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(!obj && type!=='four'){\r\n\r\n if(Count4List.length>0){\r\n obj = {\r\n type: type,\r\n poker: Count4List[0],\r\n four: Count4List[0],\r\n };\r\n }\r\n\r\n }\r\n\r\n if(!obj && type!=='sx'){\r\n\r\n if(Count1List.length>1){\r\n if(Count1List[Count1List.length-2] === 16){\r\n let poker = Count1List[Count1List.length-2].concat(Count1List[Count1List.length-1]);\r\n obj = {\r\n type: type,\r\n poker: poker,\r\n sx: poker,\r\n };\r\n }\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\r\n return obj;\r\n }\r\n\r\n playByObj(lastObj){\r\n\r\n let obj = this.getObjByObj(lastObj);\r\n let success = this.deleteFromPokerListAndSendByObj(obj);\r\n if(!success){\r\n alert('error!');\r\n }\r\n\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('have to bigger than '+Poker.pokerListToString(lastObj.poker));\r\n return false;\r\n }\r\n\r\n }else{\r\n this.listBackToPokerList(list);\r\n alert('type is not '+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('type error!');\r\n return false;\r\n }\r\n\r\n }else{\r\n alert('poker error!');\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.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 === '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 === '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 === '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\r\n this.init();\r\n }\r\n\r\n init(){\r\n this.initPokerList();\r\n this.initPlayerList();\r\n this.sendPoker();\r\n\r\n this.start();\r\n }\r\n\r\n start(){\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 next(){\r\n let over = this.checkGameOver();\r\n if(over){\r\n this.gameOver();\r\n return;\r\n }\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('gameOver! '+this.currentPlayer.name+' ['+this.currentPlayer.type+'] win!');\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: 'robot1',\r\n isRobot: true,\r\n game: this,\r\n });\r\n let player2 = new Player({\r\n name: 'robot2',\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 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 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\"}},[_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\")])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"0\",\"width\":\"100%\",\"height\":\"100px\",\"padding-left\":\"100px\"}},_vm._l((_vm.game.playerList[0].pokerList),function(item){return _c('div',{staticClass:\"poker\",class:{ selected: item.selected },on:{\"click\":function($event){return _vm.pickPoker(item)}}},[_vm._v(\" \"+_vm._s(item.text)+\" \")])}),0),_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"100px\",\"width\":\"100%\",\"height\":\"50px\",\"padding-left\":\"100px\",\"text-align\":\"left\"}},[_c('button',{staticStyle:{\"height\":\"30px\",\"border-radius\":\"4px\"},on:{\"click\":_vm.sendPoker2}},[_vm._v(\"出牌\")]),_c('button',{staticStyle:{\"height\":\"30px\",\"border-radius\":\"4px\",\"margin-left\":\"20px\"},on:{\"click\":_vm.pass}},[_vm._v(\"不出\")])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"200px\",\"width\":\"100%\",\"height\":\"100px\",\"padding-left\":\"100px\"}},_vm._l((_vm.deskPoker),function(item){return _c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"50px\",\"border\":\"solid 1px\",\"border-radius\":\"8px\",\"float\":\"left\",\"margin-left\":\"-25px\",\"background-color\":\"azure\"}},[_vm._v(\" \"+_vm._s(item.text)+\" \")])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div style=\"user-select: none\">\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\n <div style=\"position: fixed;bottom:0;width: 100%;height: 100px;padding-left:100px;\">\n <div @click=\"pickPoker(item)\" v-for=\"item in game.playerList[0].pokerList\" :class=\"{ selected: item.selected }\" class=\"poker\" style=\"\">\n {{item.text}}\n </div>\n </div>\n\n <div style=\"position: fixed;bottom:100px;width: 100%;height: 50px;padding-left:100px;text-align:left;\">\n <button @click=\"sendPoker2\" style=\"height: 30px;border-radius: 4px;\">出牌</button>\n <button @click=\"pass\" style=\"height: 30px;border-radius: 4px;margin-left: 20px;\">不出</button>\n </div>\n\n <div style=\"position: fixed;bottom:200px;width: 100%;height: 100px;padding-left:100px;\">\n <div v-for=\"item in deskPoker\" style=\"height:100%;width:50px;border: solid 1px;border-radius: 8px;float: left;margin-left:-25px;background-color: azure\">\n {{item.text}}\n </div>\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 pokerList: [],\n }\n },\n computed: {\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 '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\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 .poker{\n height:100%;width:50px;border: solid 1px;border-radius: 8px;float: left;margin-left:-25px;background-color: azure;\n }\n .poker:hover{\n background-color: antiquewhite;\n }\n\n .selected{\n margin-top: -20px;\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=70a35e10&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=70a35e10&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 \"70a35e10\",\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=70a35e10&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=70a35e10&scoped=true&lang=css&\""],"sourceRoot":""}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册