app.9cf8ce5a.js.map 170.5 KB
Newer Older
C
changjiuxiong 已提交
1
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/img/scene.jpg","webpack:///./src/App.vue?6eec","webpack:///./src/components/HelloWorld.vue?538d","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?544f","webpack:///./src/components/HelloWorld.vue","webpack:///./src/components/Game.vue?dde4","webpack:///src/components/Game.vue","webpack:///./src/components/Game.vue?02b5","webpack:///./src/components/Game.vue","webpack:///src/App.vue","webpack:///./src/App.vue?be6c","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///./src/components/Game.vue?30b1","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","Math","random","isRobot","ai","lastSendObj","getClassifyObj","console","log","that","setTimeout","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","playByAI","over","checkGameOver","gameOver","resetTime","index","getRandomIntInclusive","addPoker","player0","player1","player2","dizhuIndex","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.9cf8ce5a.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.pokerList = [];\r\n        this.name = param.name || 'noName'+Math.random();\r\n        this.type = param.type || 'nongmin';\r\n        this.last = null;\r\n        this.next = null;\r\n        this.isRobot = param.isRobot;\r\n        this.game = param.game;\r\n        this.ai = new AI({\r\n            player: this,\r\n            game: param.game,\r\n        });\r\n        this.classifyObj = null;\r\n\r\n        this.lastSendObj = null;\r\n    }\r\n\r\n    //组牌\r\n    getClassifyObj(){\r\n        this.classifyObj = this.ai.getClassifyObj(this.pokerList);\r\n        console.log(this.classifyObj);\r\n    }\r\n\r\n    addPoker(poker){\r\n        this.pokerList.push(poker);\r\n    }\r\n\r\n    sortPoker(){\r\n        this.pokerList.sort(this.sortFunction);\r\n    }\r\n\r\n    sortFunction(a, b){\r\n        return a.number - b.number;\r\n    }\r\n\r\n    getLastObj(){\r\n        let lastObj = this.last.lastSendObj;\r\n        if(!lastObj || lastObj.type === 'pass'){\r\n            lastObj = this.next.lastSendObj;\r\n            if(!lastObj || lastObj.type === 'pass'){\r\n                return false;\r\n            }\r\n        }\r\n        return lastObj;\r\n    }\r\n\r\n    playByAI(){\r\n\r\n        let that = this;\r\n\r\n        that.getClassifyObj();\r\n\r\n        setTimeout(function () {\r\n            let lastObj = that.getLastObj();\r\n            if(lastObj){\r\n                that.ai.playByObj(lastObj);\r\n            }else{\r\n                that.ai.playByAllType();\r\n            }\r\n        },1000);\r\n\r\n    }\r\n\r\n    sendPoker(obj){\r\n        obj.player = this;\r\n        this.game.clearDesk();\r\n        this.lastSendObj = obj;\r\n        this.game.deskPokerObj = obj;\r\n        this.game.next();\r\n    }\r\n\r\n    deleteFromPokerListAndSendByObj(obj){\r\n        let tempList = [];\r\n        if(obj.type === 'pass'){\r\n            this.sendPoker(obj);\r\n            return true;\r\n        }\r\n        let pokerList = obj.poker;\r\n        for(let i=0; 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        this.sendPoker();\r\n\r\n        this.start();\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.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    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\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>\r\n  <div>\r\n    <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 0px; top: 0px; background-color: aliceblue; text-align: center\">\r\n        <span>\r\n            {{player2Str[0]}}\r\n            </br>\r\n            {{player2Str[1]}}\r\n            </br></br>\r\n            {{player2Str[2]}}\r\n        </span>\r\n    </div>\r\n\r\n    <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 600px; top: 0px; background-color: aliceblue; text-align: center\">\r\n        <span>\r\n            {{player1Str[0]}}\r\n            </br>\r\n            {{player1Str[1]}}\r\n            </br></br>\r\n            {{player1Str[2]}}\r\n        </span>\r\n    </div>\r\n\r\n    <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 300px; top: 300px; background-color: aliceblue; text-align: center\">\r\n        <span>\r\n            {{player0Str[0]}}\r\n            </br>\r\n            {{player0Str[1]}}\r\n            </br></br>\r\n            {{player0Str[2]}}\r\n        </span>\r\n      <div>\r\n        <input v-model=\"playerStr\" type=\"text\"/>\r\n        <button @click=\"sendPoker\">send</button>\r\n        <button @click=\"pass\">pass</button>\r\n      </div>\r\n    </div>\r\n\r\n    <div style=\"width: 300px;height:300px;float: left; position: fixed ; left: 300px; top: 0px; background-color: aliceblue; text-align: center\">\r\n      <div style=\"width: 300px;word-wrap: break-word;\">\r\n          {{deskStr[0]}}\r\n          </br>\r\n          {{deskStr[1]}}\r\n      </div>\r\n    </div>\r\n\r\n    <div style=\"position: fixed;left: 300px;top: 600px;\">\r\n      <button @click=\"reStart\">reStart</button>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n\r\n<script>\r\n  import Game from \"../doudizhu/Game\";\r\nexport default {\r\n  name: 'HelloWorld',\r\n  data(){\r\n    return {\r\n      data:'fuck1',\r\n      game: new Game(),\r\n      playerStr: '',\r\n    }\r\n  },\r\n  computed: {\r\n\r\n    player2Str: function () {\r\n      let game = this.game;\r\n      let i = 2;\r\n      return [\r\n          game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\r\n          game.playerList[i].pokerListToString(),\r\n          'last : '+game.playerList[i].lastSendObjToString()\r\n      ];\r\n    },\r\n      player1Str: function () {\r\n          let game = this.game;\r\n          let i = 1;\r\n          return [\r\n              game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\r\n              game.playerList[i].pokerListToString(),\r\n              'last : '+game.playerList[i].lastSendObjToString()\r\n          ];\r\n      },\r\n      player0Str: function () {\r\n          let game = this.game;\r\n          let i = 0;\r\n          return [\r\n              game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\r\n              game.playerList[i].pokerListToString(),\r\n              'last : '+game.playerList[i].lastSendObjToString()\r\n          ];\r\n      },\r\n      deskStr: function () {\r\n          let game = this.game;\r\n          return [\r\n              'desk',\r\n              game.pokerListToString()\r\n          ];\r\n      },\r\n  },\r\n  mounted() {\r\n    this.data = this.game.playerList[1].name;\r\n  },\r\n  methods:{\r\n    reDraw() {\r\n\r\n    },\r\n\r\n    sendPoker() {\r\n      let game = this.game;\r\n      let success = game.playerList[0].playByString(this.playerStr);\r\n      if(success){\r\n          this.playerStr='';\r\n      }\r\n    },\r\n\r\n    pass() {\r\n      this.game.playerList[0].playByString('pass');\r\n    },\r\n\r\n    reStart() {\r\n        this.game = new Game();\r\n        this.playerStr='';\r\n    },\r\n\r\n  },\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>\r\n","import mod from \"-!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--12-0!../../node_modules/_thread-loader@2.1.3@thread-loader/dist/cjs.js!../../node_modules/_babel-loader@8.1.0@babel-loader/lib/index.js!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader@15.9.3@vue-loader/lib/index.js??vue-loader-options!./HelloWorld.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--12-0!../../node_modules/_thread-loader@2.1.3@thread-loader/dist/cjs.js!../../node_modules/_babel-loader@8.1.0@babel-loader/lib/index.js!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader@15.9.3@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=1e6cac28&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@15.9.3@vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1e6cac28\",\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"user-select\":\"none\",\"position\":\"fixed\",\"left\":\"0\",\"right\":\"0\",\"top\":\"0\",\"bottom\":\"0\",\"background-repeat\":\"no-repeat\",\"background-size\":\"cover\"},style:({backgroundImage:'url('+require('../img/scene.jpg')+')'})},[_c('audio',{style:({ marginLeft: _vm.buttonMarginLeft + 'px' }),attrs:{\"muted\":\"\",\"autoplay\":\"\",\"loop\":\"\",\"controls\":\"\"}},[_c('source',{attrs:{\"src\":require(\"../audio/bgm.mp3\")}}),_vm._v(\" 您的浏览器不支持 audio 元素。 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"0\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" 手牌:\"+_vm._s(_vm.player2Str[1])+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"right\":\"0\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('span',[_vm._v(\" 手牌:\"+_vm._s(_vm.player1Str[1])+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],staticStyle:{\"width\":\"300px\",\"height\":\"300px\",\"float\":\"left\",\"position\":\"fixed\",\"left\":\"600px\",\"top\":\"0px\",\"background-color\":\"aliceblue\",\"text-align\":\"center\"}},[_c('div',{staticStyle:{\"width\":\"300px\",\"word-wrap\":\"break-word\"}},[_vm._v(\" 已出的牌: \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.deskStr[1])+\" \")])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"left\":\"10px\",\"bottom\":\"10px\"}},[_c('button',{staticStyle:{\"height\":\"50px\",\"font-size\":\"30px\"},on:{\"click\":_vm.reStart}},[_vm._v(\"开始新一局\")])]),_c('div',{staticStyle:{\"color\":\"white\",\"position\":\"fixed\",\"bottom\":\"0\",\"width\":\"100%\",\"height\":\"200px\",\"line-height\":\"200px\"},style:({ marginLeft: _vm.playerMarginLeft-150 + 'px' })},[_vm._v(\" 你是 \"),_c('span',{staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(_vm._s(_vm.game.playerList[0].type==='nongmin'?'农民':'地主'))])]),_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"0\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.playerMarginLeft + 'px' })},_vm._l((_vm.game.playerList[0].pokerList),function(item){return _c('div',{staticClass:\"poker pokerDesk\",class:{ selected: item.selected, s:item.number===16, x:item.number===17 },on:{\"mouseenter\":function($event){return _vm.enter($event,item)},\"mousedown\":function($event){return _vm.pickPoker(item)}}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0),_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"200px\",\"width\":\"100%\",\"height\":\"100px\",\"text-align\":\"left\"}},[_c('div',{staticStyle:{\"width\":\"400px\",\"height\":\"60px\"},style:({ marginLeft: _vm.buttonMarginLeft + 'px' })},[_c('button',{staticStyle:{\"height\":\"60px\",\"border-radius\":\"4px\",\"float\":\"left\",\"font-size\":\"40px\",\"background-color\":\"red\"},on:{\"click\":_vm.pass}},[_vm._v(\"不出\")]),_c('button',{staticStyle:{\"height\":\"60px\",\"border-radius\":\"4px\",\"float\":\"right\",\"font-size\":\"40px\",\"background-color\":\"lawngreen\"},on:{\"click\":_vm.sendPoker2}},[_vm._v(\"出牌\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[0]),expression:\"game.currentPlayer===game.playerList[0]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"float\":\"left\",\"margin-left\":\"20px\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")])])]),(_vm.game.playerList[0].lastSendObj&&_vm.game.playerList[0].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"350px\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.deskPokerMarginLeft + 'px' })},_vm._l((_vm.game.playerList[0].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[0].lastSendObj&&!_vm.game.playerList[0].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"bottom\":\"350px\",\"width\":\"100%\",\"height\":\"200px\"},style:({ marginLeft: _vm.deskPokerMarginLeft + 'px' })},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"40px\",\"left\":\"20px\",\"height\":\"200px\",\"width\":\"100px\",\"border\":\"solid 1px\",\"border-radius\":\"8px\",\"background-color\":\"azure\",\"text-align\":\"center\"}},[_c('p',{staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].type==='nongmin'?'农民':'地主')+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.game.playerList[2].name)+\" \")]),_c('p',[_vm._v(\" 剩余 \"+_vm._s(_vm.game.playerList[2].pokerList.length)+\" 张 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[2]),expression:\"game.currentPlayer===game.playerList[2]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"left\":\"0\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")])]),(_vm.game.playerList[2].lastSendObj&&_vm.game.playerList[2].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},_vm._l((_vm.game.playerList[2].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[2].lastSendObj&&!_vm.game.playerList[2].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"left\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e(),_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"40px\",\"right\":\"20px\",\"height\":\"200px\",\"width\":\"100px\",\"border\":\"solid 1px\",\"border-radius\":\"8px\",\"background-color\":\"azure\",\"text-align\":\"center\"}},[_c('p',{staticStyle:{\"color\":\"red\",\"font-size\":\"20px\"}},[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].type==='nongmin'?'农民':'地主')+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.game.playerList[1].name)+\" \")]),_c('p',[_vm._v(\" 剩余 \"+_vm._s(_vm.game.playerList[1].pokerList.length)+\" 张 \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.game.currentPlayer===_vm.game.playerList[1]),expression:\"game.currentPlayer===game.playerList[1]\"}],staticStyle:{\"color\":\"red\",\"width\":\"150px\",\"border\":\"solid\",\"border-radius\":\"4px\",\"position\":\"absolute\",\"bottom\":\"-50px\",\"right\":\"0\"}},[_vm._v(\" 请在\"+_vm._s(_vm.game.second)+\"秒内出牌 \")])]),(_vm.game.playerList[1].lastSendObj&&_vm.game.playerList[1].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},_vm._l((_vm.game.playerList[1].lastSendObj.poker),function(item){return _c('div',{staticClass:\"pokerDesk\",class:{ s:item.number===16, x:item.number===17 }},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.number<16),expression:\"item.number<16\"}]},[_vm._v(\" \"+_vm._s(item.text)+\" \")])])}),0):_vm._e(),(_vm.game.playerList[1].lastSendObj&&!_vm.game.playerList[1].lastSendObj.poker[0].text)?_c('div',{staticStyle:{\"position\":\"fixed\",\"top\":\"100px\",\"right\":\"200px\",\"height\":\"200px\"}},[_c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100px\",\"float\":\"left\",\"margin-left\":\"-50px\",\"font-size\":\"50px\",\"color\":\"#ff0000\"}},[_vm._v(\" pass \")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\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')+')'}\">\r\n      <audio muted autoplay loop controls :style=\"{ marginLeft: buttonMarginLeft + 'px' }\">\r\n          <source src=\"../audio/bgm.mp3\">\r\n          您的浏览器不支持 audio 元素。\r\n      </audio>\r\n\r\n      <div v-show=\"false\" style=\"width: 300px;height:300px;float: left; position: fixed ; left: 0; top: 0px; background-color: aliceblue; text-align: center\">\r\n        <span>\r\n            手牌:{{player2Str[1]}}\r\n        </span>\r\n    </div>\r\n\r\n    <div v-show=\"false\" style=\"width: 300px;height:300px;float: left; position: fixed ; right: 0; top: 0px; background-color: aliceblue; text-align: center\">\r\n        <span>\r\n            手牌:{{player1Str[1]}}\r\n        </span>\r\n    </div>\r\n\r\n    <div v-show=\"false\" style=\"width: 300px;height:300px;float: left; position: fixed ; left: 600px; top: 0px; background-color: aliceblue; text-align: center\">\r\n      <div style=\"width: 300px;word-wrap: break-word;\">\r\n          已出的牌:\r\n          <br/>\r\n          {{deskStr[1]}}\r\n      </div>\r\n    </div>\r\n\r\n    <div style=\"position: fixed;left: 10px;bottom: 10px;\">\r\n      <button @click=\"reStart\" style=\"height: 50px;font-size:30px;\">开始新一局</button>\r\n    </div>\r\n\r\n      <div :style=\"{ marginLeft: playerMarginLeft-150 + 'px' }\" style=\"color:white;position: fixed;bottom:0;width: 100%;height: 200px;line-height: 200px;\">\r\n          你是 <span style=\"color:red;font-size: 20px\">{{game.playerList[0].type==='nongmin'?'农民':'地主'}}</span>\r\n      </div>\r\n      <div :style=\"{ marginLeft: playerMarginLeft + 'px' }\" style=\"position: fixed;bottom:0;width: 100%;height: 200px;\">\r\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=\"\">\r\n              <span v-show=\"item.number<16\">\r\n                  {{item.text}}\r\n              </span>\r\n          </div>\r\n      </div>\r\n\r\n      <div style=\"position: fixed;bottom:200px;width: 100%;height: 100px;text-align:left;\">\r\n          <div :style=\"{ marginLeft: buttonMarginLeft + 'px' }\" style=\"width: 400px;height: 60px;\">\r\n              <button @click=\"pass\" style=\"height: 60px;border-radius: 4px;float:left;font-size:40px;background-color: red\">不出</button>\r\n              <button @click=\"sendPoker2\" style=\"height: 60px;border-radius: 4px;float:right;font-size:40px;background-color: lawngreen\">出牌</button>\r\n              <div v-show=\"game.currentPlayer===game.playerList[0]\" style=\"color: red;width:150px;border: solid;border-radius: 4px;float: left;margin-left: 20px;\">\r\n                  请在{{game.second}}秒内出牌\r\n              </div>\r\n          </div>\r\n      </div>\r\n\r\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\">\r\n          <div v-for=\"item in game.playerList[0].lastSendObj.poker\" class=\"pokerDesk\" :class=\"{ s:item.number===16, x:item.number===17 }\">\r\n              <span v-show=\"item.number<16\">\r\n                  {{item.text}}\r\n              </span>\r\n          </div>\r\n      </div>\r\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\">\r\n          <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\r\n              pass\r\n          </div>\r\n      </div>\r\n\r\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\">\r\n          <p style=\"color:red;font-size: 20px\">\r\n              {{game.playerList[2].type==='nongmin'?'农民':'地主'}}\r\n          </p>\r\n          <p>\r\n              {{game.playerList[2].name}}\r\n          </p>\r\n          <p>\r\n              剩余 {{game.playerList[2].pokerList.length}} 张\r\n          </p>\r\n\r\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\">\r\n              请在{{game.second}}秒内出牌\r\n          </div>\r\n      </div>\r\n      <div v-if=\"game.playerList[2].lastSendObj&&game.playerList[2].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;left:200px;height: 200px;\">\r\n          <div v-for=\"item in game.playerList[2].lastSendObj.poker\" class=\"pokerDesk\" :class=\"{ s:item.number===16, x:item.number===17 }\">\r\n              <span v-show=\"item.number<16\">\r\n                  {{item.text}}\r\n              </span>\r\n          </div>\r\n      </div>\r\n      <div v-if=\"game.playerList[2].lastSendObj&&!game.playerList[2].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;left:200px;height: 200px;\">\r\n          <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\r\n              pass\r\n          </div>\r\n      </div>\r\n\r\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\">\r\n          <p style=\"color:red;font-size: 20px\">\r\n              {{game.playerList[1].type==='nongmin'?'农民':'地主'}}\r\n          </p>\r\n          <p>\r\n              {{game.playerList[1].name}}\r\n          </p>\r\n          <p>\r\n              剩余 {{game.playerList[1].pokerList.length}} 张\r\n          </p>\r\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\">\r\n              请在{{game.second}}秒内出牌\r\n          </div>\r\n      </div>\r\n      <div v-if=\"game.playerList[1].lastSendObj&&game.playerList[1].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;right:200px;height: 200px;\">\r\n          <div v-for=\"item in game.playerList[1].lastSendObj.poker\" class=\"pokerDesk\" :class=\"{ s:item.number===16, x:item.number===17 }\">\r\n              <span v-show=\"item.number<16\">\r\n                  {{item.text}}\r\n              </span>\r\n          </div>\r\n      </div>\r\n      <div v-if=\"game.playerList[1].lastSendObj&&!game.playerList[1].lastSendObj.poker[0].text\" style=\"position: fixed;top:100px;right:200px;height: 200px;\">\r\n          <div style=\"height:100%;width:100px;float: left;margin-left:-50px;font-size: 50px;color:#ff0000\">\r\n              pass\r\n          </div>\r\n      </div>\r\n\r\n  </div>\r\n</template>\r\n\r\n\r\n<script>\r\n  import Game from \"../doudizhu/Game\";\r\nexport default {\r\n  name: 'HelloWorld',\r\n  data(){\r\n    return {\r\n        data:'fuck1',\r\n        game: new Game(),\r\n        playerStr: '',\r\n        pokerList: [],\r\n    }\r\n  },\r\n  computed: {\r\n\r\n      playerMarginLeft: function(){\r\n          return (window.innerWidth - (this.game.playerList[0].pokerList.length*50))/2;\r\n      },\r\n      deskPokerMarginLeft: function(){\r\n          return (window.innerWidth - (this.game.playerList[0].lastSendObj.poker.length*50))/2;\r\n      },\r\n      buttonMarginLeft: function(){\r\n          return (window.innerWidth - 400)/2;\r\n      },\r\n\r\n      deskPoker: function(){\r\n          if(this.game.deskPokerObj && this.game.deskPokerObj.poker){\r\n              if(this.game.deskPokerObj.poker[0] && this.game.deskPokerObj.poker[0].text){\r\n                return this.game.deskPokerObj.poker;\r\n              }\r\n          }\r\n          return [];\r\n      },\r\n        player2Str: function () {\r\n          let game = this.game;\r\n          let i = 2;\r\n          return [\r\n              game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\r\n              game.playerList[i].pokerListToString(),\r\n              game.playerList[i].lastSendObjToString()\r\n          ];\r\n        },\r\n      player1Str: function () {\r\n          let game = this.game;\r\n          let i = 1;\r\n          return [\r\n              game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\r\n              game.playerList[i].pokerListToString(),\r\n              game.playerList[i].lastSendObjToString()\r\n          ];\r\n      },\r\n      player0Str: function () {\r\n          let game = this.game;\r\n          let i = 0;\r\n          return [\r\n              game.playerList[i].name+' : '+game.playerList[i].type+' : '+game.playerList[i].pokerList.length,\r\n              game.playerList[i].pokerListToString(),\r\n              game.playerList[i].lastSendObjToString()\r\n          ];\r\n      },\r\n      deskStr: function () {\r\n          let game = this.game;\r\n          return [\r\n              'desk',\r\n              game.pokerListToString()\r\n          ];\r\n      },\r\n  },\r\n  mounted() {\r\n    this.data = this.game.playerList[1].name;\r\n    window.game = this.game;\r\n  },\r\n  methods:{\r\n      enter: function(e, poker){\r\n          if(e.buttons === 1){\r\n              this.pickPoker(poker);\r\n          }\r\n      },\r\n\r\n      pickPoker(poker){\r\n          if(!poker.selected){\r\n              poker.selected = true;\r\n              this.pokerList.push(poker);\r\n          }else{\r\n              poker.selected = false;\r\n              for(let i=0; i<this.pokerList.length; i++){\r\n                  if(this.pokerList[i] === poker){\r\n                      this.pokerList.splice(i,1);\r\n                  }\r\n              }\r\n          }\r\n      },\r\n\r\n      sendPoker2() {\r\n          let game = this.game;\r\n          let success = game.playerList[0].playByPokerList(this.pokerList);\r\n          if(success){\r\n              this.pokerList=[];\r\n          }\r\n      },\r\n\r\n      sendPoker() {\r\n        let game = this.game;\r\n        let success = game.playerList[0].playByString(this.playerStr);\r\n        if(success){\r\n            this.playerStr='';\r\n        }\r\n      },\r\n\r\n    pass() {\r\n      this.game.playerList[0].playByString('pass');\r\n    },\r\n\r\n    reStart() {\r\n        this.game = new Game();\r\n        this.playerStr='';\r\n    },\r\n\r\n  },\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n    .pokerDesk{\r\n        height:100%;width:100px;border: solid 1px;border-radius: 16px;float: left;margin-left:-50px;background-color: azure;\r\n        font-size: 30px;\r\n        background-repeat: no-repeat;background-size: cover;\r\n    }\r\n\r\n    .poker:hover{\r\n        background-color: antiquewhite;\r\n    }\r\n\r\n    .selected{\r\n        margin-top: -20px;\r\n    }\r\n\r\n    .s{\r\n        background-image: url(\"../img/s.jpg\");\r\n    }\r\n\r\n    .x{\r\n        background-image: url(\"../img/x.png\");\r\n    }\r\n</style>\r\n","import mod from \"-!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--12-0!../../node_modules/_thread-loader@2.1.3@thread-loader/dist/cjs.js!../../node_modules/_babel-loader@8.1.0@babel-loader/lib/index.js!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader@15.9.3@vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--12-0!../../node_modules/_thread-loader@2.1.3@thread-loader/dist/cjs.js!../../node_modules/_babel-loader@8.1.0@babel-loader/lib/index.js!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader@15.9.3@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=01129a70&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=01129a70&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/_vue-loader@15.9.3@vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"01129a70\",\n  null\n  \n)\n\nexport default component.exports","<template>\r\n  <div id=\"app\">\r\n    <Game></Game>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport HelloWorld from './components/HelloWorld.vue';\r\nimport Game from './components/Game.vue';\r\n\r\nexport default {\r\n  name: 'App',\r\n  components: {\r\n    HelloWorld,\r\n    Game,\r\n  }\r\n}\r\n</script>\r\n\r\n<style>\r\n\r\n</style>\r\n","import mod from \"-!../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--12-0!../node_modules/_thread-loader@2.1.3@thread-loader/dist/cjs.js!../node_modules/_babel-loader@8.1.0@babel-loader/lib/index.js!../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../node_modules/_vue-loader@15.9.3@vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--12-0!../node_modules/_thread-loader@2.1.3@thread-loader/dist/cjs.js!../node_modules/_babel-loader@8.1.0@babel-loader/lib/index.js!../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../node_modules/_vue-loader@15.9.3@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=07d0a013&\"\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@15.9.3@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'\r\nimport App from './App.vue'\r\n\r\nVue.config.productionTip = false;\r\n\r\nnew Vue({\r\n  render: h => h(App),\r\n}).$mount('#app');\r\n","import mod from \"-!../../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader@15.9.3@vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=style&index=0&id=01129a70&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader@15.9.3@vue-loader/lib/index.js??vue-loader-options!./Game.vue?vue&type=style&index=0&id=01129a70&scoped=true&lang=css&\"","module.exports = __webpack_public_path__ + \"media/bgm.8035c6a0.mp3\";"],"sourceRoot":""}