-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
95 lines (94 loc) · 2.8 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import {
createTable,
validatorAction,
alertResult as getAlertResult,
} from "./helpers.js";
import {
playerX_Winner,
playerO_Winner,
EMPATE,
conditionsToWin,
} from "./constans.js";
window.addEventListener("DOMContentLoaded", () => {
const squares = Array.from(document.querySelectorAll(".Square"));
const playerActive = document.querySelector(".PlayerActive");
const resetButton = document.querySelector(".Reset");
const winner = document.querySelector(".Winner");
const savePlayersButton = document.querySelector(".SavePlayersButton");
const namePlayerX = document.querySelector(".NamePlayerX");
const namePlayerO = document.querySelector(".NamePlayerO");
let currentPlayer = "X";
let gameRunning = true;
let table = createTable(9);
const validatorResult = () => {
let gameWon = false;
for (const element of conditionsToWin) {
const conditionToWin = element;
const a = table[conditionToWin[0]];
const b = table[conditionToWin[1]];
const c = table[conditionToWin[2]];
const positions = [a, b, c];
if (positions.includes("")) {
continue;
}
if (a === b && b === c) {
gameWon = true;
break;
}
}
if (gameWon) {
alertResult(currentPlayer === "X" ? playerX_Winner : playerO_Winner);
gameRunning = false;
return;
}
if (table.includes("")) {
alertResult(EMPATE);
}
};
const updateTable = (index) => {
table[index] = currentPlayer;
};
const alertResult = (type) => {
winner.innerHTML = getAlertResult(type);
winner.classList.remove("hide");
};
const changePlayer = () => {
playerActive.classList.remove(`Player${currentPlayer}`);
currentPlayer = currentPlayer === "X" ? "O" : "X";
playerActive.innerText = currentPlayer;
playerActive.classList.add(`Player${currentPlayer}`);
};
const action = (square, index) => {
if (validatorAction(square) && gameRunning) {
square.innerText = currentPlayer;
square.classList.add(`Player${currentPlayer}`);
updateTable(index);
validatorResult();
changePlayer();
}
};
const resetTable = () => {
table = createTable(9);
gameRunning = true;
winner.classList.add("hide");
if (currentPlayer === "O") {
changePlayer();
}
squares.forEach((square) => {
square.innerText = "";
square.classList.remove("PlayerX");
square.classList.remove("PlayerO");
});
validatorResult();
};
squares.forEach((square, index) => {
square.addEventListener("click", () => action(square, index));
});
resetButton.addEventListener("click", resetTable);
const savePlayersName = () => {
const nameX = namePlayerX.value;
const nameO = namePlayerO.value;
alert(nameX);
};
savePlayersButton.addEventListener("click", savePlayersName);
});