mirror of
https://github.com/thib8956/tic-tac-toe-ws.git
synced 2026-02-21 07:48:12 +00:00
refactor: simplify checkWin function
This commit is contained in:
74
server.ts
74
server.ts
@@ -172,70 +172,16 @@ wss.on("connection", (ws, req) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
function checkWin(grid: number[]): number {
|
function checkWin(grid: number[]): number {
|
||||||
const clone = [...grid];
|
const wins = [
|
||||||
const grid2d = [];
|
[0, 1, 2], [3, 4, 5], [6, 7, 8], // ROWS
|
||||||
while(clone.length) grid2d.push(clone.splice(0,3));
|
[0, 3, 6], [1, 4, 7], [2, 5, 8], // COLS
|
||||||
|
[0, 4, 8], [2, 4, 6] // DIAGONALS
|
||||||
if (
|
];
|
||||||
grid2d[0][0] !== 0 &&
|
for (const [a, b, c] of wins) {
|
||||||
grid2d[0][0] === grid2d[0][1] &&
|
if (grid[a] !== 0 && grid[a] === grid[b] && grid[a] === grid[c]) {
|
||||||
grid2d[0][1] === grid2d[0][2]
|
return grid[a];
|
||||||
) {
|
|
||||||
return grid2d[0][0];
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
grid2d[1][0] !== 0 &&
|
|
||||||
grid2d[1][0] === grid2d[1][1] &&
|
|
||||||
grid2d[1][1] === grid2d[1][2]
|
|
||||||
) {
|
|
||||||
return grid2d[1][0];
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
grid2d[2][0] !== 0 &&
|
|
||||||
grid2d[2][0] === grid2d[2][1] &&
|
|
||||||
grid2d[2][1] === grid2d[2][2]
|
|
||||||
) {
|
|
||||||
return grid2d[2][0];
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
grid2d[0][0] !== 0 &&
|
|
||||||
grid2d[0][0] === grid2d[1][0] &&
|
|
||||||
grid2d[1][0] === grid2d[2][0]
|
|
||||||
) {
|
|
||||||
return grid2d[0][0];
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
grid2d[0][1] !== 0 &&
|
|
||||||
grid2d[0][1] === grid2d[1][1] &&
|
|
||||||
grid2d[1][1] === grid2d[2][1]
|
|
||||||
) {
|
|
||||||
return grid2d[0][1];
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
grid2d[0][2] !== 0 &&
|
|
||||||
grid2d[0][2] === grid2d[1][2] &&
|
|
||||||
grid2d[1][2] === grid2d[2][2]
|
|
||||||
) {
|
|
||||||
return grid2d[0][2];
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
grid2d[0][0] !== 0 &&
|
|
||||||
grid2d[0][0] === grid2d[1][1] &&
|
|
||||||
grid2d[1][1] === grid2d[2][2]
|
|
||||||
) {
|
|
||||||
return grid2d[0][0];
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
grid2d[0][2] !== 0 &&
|
|
||||||
grid2d[0][2] === grid2d[1][1] &&
|
|
||||||
grid2d[1][1] === grid2d[2][0]
|
|
||||||
) {
|
|
||||||
return grid2d[0][2];
|
|
||||||
}
|
|
||||||
for (const row of grid2d) {
|
|
||||||
if (row[0] === 0 || row[1] === 0 || row[2] === 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return grid.includes(0) ? -1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user