{"version":3,"file":"Gobang.js","sources":["../../build/src/utils.js","../../build/src/Gobang.js"],"sourcesContent":["import { Color, text, Stack, Text, layoutConfig, LayoutSpec, gravity, pullable, stack, image, log } from \"doric\";\nexport const icon_refresh = 'data:image/png;base64,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';\nexport const colors = [\n \"#70a1ff\",\n \"#7bed9f\",\n \"#ff6b81\",\n \"#a4b0be\",\n \"#f0932b\",\n \"#eb4d4b\",\n \"#6ab04c\",\n \"#e056fd\",\n \"#686de0\",\n \"#30336b\",\n].map(e => Color.parse(e));\nexport function label(str) {\n return text({\n text: str,\n textSize: 16,\n });\n}\nexport function box(idx = 0) {\n return (new Stack).also(it => {\n it.width = it.height = 20;\n it.backgroundColor = colors[idx || 0];\n });\n}\nexport function boxStr(str, idx = 0) {\n return (new Text).also(it => {\n it.width = it.height = 20;\n it.text = str;\n it.textColor = Color.WHITE;\n it.backgroundColor = colors[idx || 0];\n });\n}\nexport function title(str) {\n return text({\n text: str,\n layoutConfig: layoutConfig().configWidth(LayoutSpec.MOST),\n textSize: 30,\n textColor: Color.WHITE,\n backgroundColor: colors[1],\n textAlignment: gravity().center(),\n height: 50,\n });\n}\nexport function rotatedArrow() {\n let refreshImage;\n return pullable(stack([\n image({\n layoutConfig: layoutConfig().just().configMargin({ top: 50, bottom: 10, }),\n width: 30,\n height: 30,\n imageBase64: icon_refresh,\n }).also(v => refreshImage = v),\n ]), {\n startAnimation: () => {\n log('startAnimation');\n },\n stopAnimation: () => {\n log('stopAnimation');\n },\n setPullingDistance: (distance) => {\n refreshImage.rotation = distance / 30;\n },\n });\n}\n//# sourceMappingURL=utils.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Stack, hlayout, Color, stack, layoutConfig, LayoutSpec, vlayout, ViewHolder, ViewModel, VMPanel, scroller, modal, text, gravity, Gravity, popover, navbar } from \"doric\";\nimport { colors } from \"./utils\";\nvar State;\n(function (State) {\n State[State[\"Unspecified\"] = 0] = \"Unspecified\";\n State[State[\"BLACK\"] = 1] = \"BLACK\";\n State[State[\"WHITE\"] = 2] = \"WHITE\";\n})(State || (State = {}));\nconst count = 13;\nclass AIComputer {\n constructor(matrix) {\n this.wins = [];\n this.winCount = 0;\n this.matrix = matrix;\n for (let y = 0; y < count; y++) {\n for (let x = 0; x < count - 4; x++) {\n this.wins.push([]);\n for (let k = 0; k < 5; k++) {\n this.wins[this.winCount].push({\n x: x + k,\n y,\n });\n }\n this.winCount++;\n }\n }\n for (let x = 0; x < count; x++) {\n for (let y = 0; y < count - 4; y++) {\n this.wins.push([]);\n for (let k = 0; k < 5; k++) {\n this.wins[this.winCount].push({\n x,\n y: y + k,\n });\n }\n this.winCount++;\n }\n }\n for (let x = 0; x < count - 4; x++) {\n for (let y = 0; y < count - 4; y++) {\n this.wins.push([]);\n for (let k = 0; k < 5; k++) {\n this.wins[this.winCount].push({\n x: x + k,\n y: y + k,\n });\n }\n this.winCount++;\n }\n }\n for (let x = 0; x < count - 4; x++) {\n for (let y = count - 1; y > 3; y--) {\n this.wins.push([]);\n for (let k = 0; k < 5; k++) {\n this.wins[this.winCount].push({\n x: x + k,\n y: y - k,\n });\n }\n this.winCount++;\n }\n }\n }\n get blackWins() {\n return this.wins.map((win) => {\n let idx = 0;\n for (let e of win) {\n switch (this.matrix.get(e.x + e.y * count)) {\n case State.BLACK:\n idx++;\n break;\n case State.WHITE:\n return 0;\n default:\n break;\n }\n }\n return idx;\n });\n }\n get whiteWins() {\n return this.wins.map((win) => {\n let idx = 0;\n for (let e of win) {\n switch (this.matrix.get(e.x + e.y * count)) {\n case State.WHITE:\n idx++;\n break;\n case State.BLACK:\n return 0;\n default:\n break;\n }\n }\n return idx;\n });\n }\n compute(matrix, role) {\n const myScore = new Array(matrix.length).fill(0);\n const rivalScore = new Array(matrix.length).fill(0);\n const myWins = role === State.BLACK ? this.blackWins : this.whiteWins;\n const rivalWins = role === State.BLACK ? this.whiteWins : this.blackWins;\n let max = 0;\n let retIdx = 0;\n matrix.forEach((state, idx) => {\n if (state != State.Unspecified) {\n return;\n }\n this.wins.forEach((e, winIdx) => {\n if (e.filter(e => (e.x + e.y * count) === idx).length === 0) {\n return;\n }\n switch (rivalWins[winIdx]) {\n case 1:\n rivalScore[idx] += 1;\n break;\n case 2:\n rivalScore[idx] += 10;\n break;\n case 3:\n rivalScore[idx] += 100;\n break;\n case 4:\n rivalScore[idx] += 10000;\n break;\n default:\n break;\n }\n switch (myWins[winIdx]) {\n case 1:\n myScore[idx] += 2;\n break;\n case 2:\n myScore[idx] += 20;\n break;\n case 3:\n myScore[idx] += 200;\n break;\n case 4:\n myScore[idx] += 20000;\n break;\n default:\n break;\n }\n });\n if (rivalScore[idx] > max) {\n max = rivalScore[idx];\n retIdx = idx;\n }\n else if (rivalScore[idx] == max) {\n if (myScore[idx] > myScore[retIdx]) {\n retIdx = idx;\n }\n }\n if (myScore[idx] > max) {\n max = myScore[idx];\n retIdx = idx;\n }\n else if (myScore[idx] == max) {\n if (rivalScore[idx] > rivalScore[retIdx]) {\n retIdx = idx;\n }\n }\n });\n return retIdx;\n }\n}\nconst lineColor = Color.BLACK;\nfunction columLine() {\n return (new Stack).apply({\n layoutConfig: layoutConfig().most().configWidth(LayoutSpec.JUST),\n width: 1,\n backgroundColor: lineColor,\n });\n}\nfunction rowLine() {\n return (new Stack).apply({\n layoutConfig: layoutConfig().most().configHeight(LayoutSpec.JUST),\n height: 1,\n backgroundColor: lineColor,\n });\n}\nfunction pointer(size) {\n return (new Stack).apply({\n layoutConfig: layoutConfig().just(),\n width: size,\n height: size,\n });\n}\nvar GameMode;\n(function (GameMode) {\n GameMode[GameMode[\"P2P\"] = 0] = \"P2P\";\n GameMode[GameMode[\"P2C\"] = 1] = \"P2C\";\n GameMode[GameMode[\"C2P\"] = 2] = \"C2P\";\n})(GameMode || (GameMode = {}));\nclass GoBangVH extends ViewHolder {\n constructor() {\n super(...arguments);\n this.gap = 0;\n this.targetZone = [];\n }\n build(root) {\n this.root = root;\n }\n actualBuild(state) {\n const boardSize = state.gap * (state.count - 1);\n const gap = state.gap;\n const borderWidth = gap;\n this.gap = state.gap;\n scroller(vlayout([\n text({\n text: \"五子棋\",\n layoutConfig: layoutConfig().configWidth(LayoutSpec.MOST),\n textSize: 30,\n textColor: Color.WHITE,\n backgroundColor: colors[0],\n textAlignment: gravity().center(),\n height: 50,\n }),\n stack([\n stack([\n ...(new Array(count - 2)).fill(0).map((_, idx) => {\n return columLine().also(v => {\n v.left = (idx + 1) * gap;\n });\n }),\n ...(new Array(count - 2)).fill(0).map((_, idx) => {\n return rowLine().also(v => {\n v.top = (idx + 1) * gap;\n });\n }),\n ])\n .apply({\n layoutConfig: layoutConfig().just()\n .configMargin({ top: borderWidth, left: borderWidth }),\n width: boardSize,\n height: boardSize,\n border: {\n width: 1,\n color: lineColor,\n },\n }),\n ...this.targetZone = (new Array(count * count)).fill(0).map((_, idx) => {\n const row = Math.floor(idx / count);\n const colum = idx % count;\n return pointer(gap).also(v => {\n v.top = (row - 0.5) * gap + borderWidth;\n v.left = (colum - 0.5) * gap + borderWidth;\n });\n }),\n ]).apply({\n layoutConfig: layoutConfig().just(),\n width: boardSize + 2 * borderWidth,\n height: boardSize + 2 * borderWidth,\n backgroundColor: Color.parse(\"#E6B080\"),\n }),\n this.gameMode = text({\n text: \"游戏模式\",\n textSize: 20,\n textColor: Color.WHITE,\n layoutConfig: layoutConfig().most().configHeight(LayoutSpec.JUST),\n height: 50,\n backgroundColor: colors[8],\n }),\n hlayout([\n this.currentRole = text({\n text: \"当前:\",\n textSize: 20,\n textColor: Color.WHITE,\n layoutConfig: layoutConfig().just().configWeight(1),\n height: 50,\n backgroundColor: colors[1],\n }),\n this.result = text({\n text: \"获胜方:\",\n textSize: 20,\n textColor: Color.WHITE,\n layoutConfig: layoutConfig().just().configWeight(1),\n height: 50,\n backgroundColor: colors[2],\n }),\n ]).apply({\n layoutConfig: layoutConfig().fit().configWidth(LayoutSpec.MOST),\n }),\n this.assistant = text({\n text: \"提示\",\n textSize: 20,\n textColor: Color.WHITE,\n layoutConfig: layoutConfig().just().configWidth(LayoutSpec.MOST),\n height: 50,\n backgroundColor: colors[3],\n }),\n ])\n .apply({\n layoutConfig: layoutConfig().fit(),\n backgroundColor: Color.parse('#ecf0f1'),\n })).in(this.root);\n }\n}\nclass GoBangVM extends ViewModel {\n onAttached(state, vh) {\n if (!this.computer) {\n this.computer = new AIComputer(state.matrix);\n }\n vh.actualBuild(state);\n vh.targetZone.forEach((e, idx) => {\n e.onClick = () => {\n if (state.gameState !== 'idle') {\n return;\n }\n const zoneState = state.matrix.get(idx);\n if (zoneState === State.BLACK || zoneState === State.WHITE) {\n modal(context).toast('This position had been token.');\n return;\n }\n if (state.anchor === undefined || state.anchor != idx) {\n this.updateState(it => {\n it.anchor = idx;\n });\n }\n else {\n this.updateState(it => {\n if (it.role === 'black') {\n it.matrix.set(idx, State.BLACK);\n it.role = 'white';\n }\n else {\n it.matrix.set(idx, State.WHITE);\n it.role = 'black';\n }\n it.anchor = undefined;\n if (this.checkResult(idx)) {\n modal(context).toast(`恭喜获胜方${it.role === 'white' ? \"黑方\" : \"白方\"}`);\n it.gameState = it.role === 'white' ? 'blackWin' : 'whiteWin';\n }\n else {\n if (it.role === 'black' && it.gameMode === GameMode.C2P) {\n setTimeout(() => {\n this.computeNextStep(it);\n }, 0);\n }\n else if (it.role === 'white' && it.gameMode === GameMode.P2C) {\n setTimeout(() => {\n this.computeNextStep(it);\n }, 0);\n }\n }\n });\n }\n };\n });\n vh.gameMode.onClick = () => {\n popover(context).show(vlayout([\n ...[\n {\n label: \"黑方:人 白方:人\",\n mode: GameMode.P2P,\n },\n {\n label: \"黑方:人 白方:机\",\n mode: GameMode.P2C,\n },\n {\n label: \"黑方:机 白方:人\",\n mode: GameMode.C2P,\n },\n ].map((e) => text({\n text: e.label,\n textSize: 20,\n textColor: Color.WHITE,\n layoutConfig: layoutConfig().just(),\n height: 50,\n width: 300,\n backgroundColor: (state.gameMode === e.mode) ? Color.parse('#636e72') : Color.parse('#b2bec3'),\n onClick: () => {\n this.updateState(s => {\n s.gameMode = e.mode;\n this.reset(s);\n });\n popover(context).dismiss();\n },\n }))\n ])\n .apply({\n layoutConfig: layoutConfig().most(),\n onClick: () => {\n popover(context).dismiss();\n },\n gravity: Gravity.Center,\n }));\n };\n vh.result.onClick = () => {\n switch (state.gameState) {\n case \"idle\":\n this.updateState(state => {\n this.reset(state);\n });\n break;\n case \"blackWin\":\n case \"whiteWin\":\n break;\n }\n };\n vh.currentRole.onClick = () => {\n switch (state.gameState) {\n case \"idle\":\n break;\n case \"blackWin\":\n case \"whiteWin\":\n this.updateState(state => {\n this.reset(state);\n });\n break;\n }\n };\n vh.assistant.onClick = () => {\n const it = this.getState();\n if (it.gameState !== 'idle') {\n return;\n }\n this.computeNextStep(it);\n if (it.gameState !== 'idle') {\n return;\n }\n if (it.role === 'black' && it.gameMode === GameMode.C2P) {\n setTimeout(() => {\n this.computeNextStep(it);\n }, 0);\n }\n else if (it.role === 'white' && it.gameMode === GameMode.P2C) {\n setTimeout(() => {\n this.computeNextStep(it);\n }, 0);\n }\n };\n }\n computeNextStep(it) {\n const tempMatrix = new Array(count * count).fill(0).map((_, idx) => {\n return it.matrix.get(idx) || State.Unspecified;\n });\n let idx = 0;\n do {\n idx = this.computer.compute(tempMatrix, it.role === 'black' ? State.BLACK : State.WHITE);\n } while (it.matrix.get(idx) === State.Unspecified);\n this.updateState(state => {\n state.matrix.set(idx, state.role === 'black' ? State.BLACK : State.WHITE);\n state.role = state.role === 'black' ? 'white' : 'black';\n if (this.checkResult(idx)) {\n modal(context).toast(`恭喜获胜方${it.role === 'white' ? \"黑方\" : \"白方\"}`);\n it.gameState = it.role === 'white' ? 'blackWin' : 'whiteWin';\n }\n });\n }\n reset(it) {\n it.matrix.clear();\n it.gameState = 'idle';\n it.role = \"black\";\n it.anchor = undefined;\n this.computer = new AIComputer(it.matrix);\n if (it.gameMode === GameMode.C2P) {\n const idx = Math.floor(Math.random() * count) * count + Math.floor(Math.random() * count);\n it.matrix.set(idx, State.BLACK);\n it.role = 'white';\n }\n }\n onBind(state, vh) {\n vh.targetZone.forEach((v, idx) => {\n const zoneState = state.matrix.get(idx);\n switch (zoneState) {\n case State.BLACK:\n v.also(it => {\n it.backgroundColor = Color.BLACK;\n it.corners = state.gap / 2;\n it.border = {\n color: Color.TRANSPARENT,\n width: 0,\n };\n });\n break;\n case State.WHITE:\n v.also(it => {\n it.backgroundColor = Color.WHITE;\n it.corners = state.gap / 2;\n it.border = {\n color: Color.TRANSPARENT,\n width: 0,\n };\n });\n break;\n default:\n v.also(it => {\n it.backgroundColor = Color.TRANSPARENT;\n it.corners = 0;\n it.border = {\n color: Color.TRANSPARENT,\n width: 0,\n };\n });\n break;\n }\n if (state.anchor === idx) {\n v.also(it => {\n it.backgroundColor = Color.RED.alpha(0.1);\n it.corners = 0;\n it.border = {\n color: Color.RED,\n width: 1,\n };\n });\n }\n });\n vh.gameMode.text = `游戏模式: 黑方 ${state.gameMode === GameMode.C2P ? \"机\" : \"人\"} 白方 ${state.gameMode === GameMode.P2C ? \"机\" : \"人\"}`;\n switch (state.gameState) {\n case \"idle\":\n vh.result.text = \"重新开始\";\n vh.currentRole.text = `当前: ${(state.role === 'black') ? \"黑方\" : \"白方\"}`;\n break;\n case \"blackWin\":\n vh.result.text = \"黑方获胜\";\n vh.currentRole.text = \"重新开始\";\n break;\n case \"whiteWin\":\n vh.result.text = \"白方获胜\";\n vh.currentRole.text = \"重新开始\";\n break;\n }\n }\n checkResult(pos) {\n const matrix = this.getState().matrix;\n const state = matrix.get(pos);\n const y = Math.floor(pos / count);\n const x = pos % count;\n const getState = (x, y) => matrix.get(y * count + x);\n ///Horitonzal\n {\n let left = x;\n while (left >= 1) {\n if (getState(left - 1, y) === state) {\n left -= 1;\n }\n else {\n break;\n }\n }\n let right = x;\n while (right <= count - 2) {\n if (getState(right + 1, y) === state) {\n right += 1;\n }\n else {\n break;\n }\n }\n if (right - left >= 4) {\n return true;\n }\n }\n ///Vertical\n {\n let top = y;\n while (top >= 1) {\n if (getState(x, top - 1) === state) {\n top -= 1;\n }\n else {\n break;\n }\n }\n let bottom = y;\n while (bottom <= count - 2) {\n if (getState(x, bottom + 1) === state) {\n bottom += 1;\n }\n else {\n break;\n }\n }\n if (bottom - top >= 4) {\n return true;\n }\n }\n ///LT-RB\n {\n let startX = x, startY = y;\n while (startX >= 1 && startY >= 1) {\n if (getState(startX - 1, startY - 1) === state) {\n startX -= 1;\n startY -= 1;\n }\n else {\n break;\n }\n }\n let endX = x, endY = y;\n while (endX <= count - 2 && endY <= count - 2) {\n if (getState(endX + 1, endY + 1) === state) {\n endX += 1;\n endY += 1;\n }\n else {\n break;\n }\n }\n if (endX - startX >= 4) {\n return true;\n }\n }\n ///LB-RT\n {\n let startX = x, startY = y;\n while (startX >= 1 && startY <= count + 2) {\n if (getState(startX - 1, startY + 1) === state) {\n startX -= 1;\n startY += 1;\n }\n else {\n break;\n }\n }\n let endX = x, endY = y;\n while (endX <= count - 2 && endY >= 1) {\n if (getState(endX + 1, endY - 1) === state) {\n endX += 1;\n endY -= 1;\n }\n else {\n break;\n }\n }\n if (endX - startX >= 4) {\n return true;\n }\n }\n return false;\n }\n}\nlet Gobang = class Gobang extends VMPanel {\n getViewModelClass() {\n return GoBangVM;\n }\n getState() {\n return {\n count,\n gap: this.getRootView().width / 14,\n role: \"black\",\n matrix: new Map,\n gameMode: GameMode.P2C,\n gameState: \"idle\"\n };\n }\n getViewHolderClass() {\n return GoBangVH;\n }\n onShow() {\n navbar(context).setTitle(\"五子棋\");\n }\n};\nGobang = __decorate([\n Entry\n], Gobang);\n//# sourceMappingURL=Gobang.js.map"],"names":["Color","this","Stack","layoutConfig","LayoutSpec","ViewHolder","scroller","vlayout","text","gravity","stack","hlayout","ViewModel","modal","popover","Gravity","VMPanel","navbar"],"mappings":"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"}