1
0
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:
2026-02-17 20:03:08 +01:00
parent 8ba37e58b7
commit 2acb63bc9c

View File

@@ -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;
} }