-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
106 lines (100 loc) · 3.13 KB
/
script.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
96
97
98
99
100
101
102
103
104
105
106
let currentPlayer = 'X';
let board = [
['', '', ''],
['', '', ''],
['', '', '']
];
function placeMarker(row, col) {
if (board[row][col] === '' && !checkForWinner()) {
board[row][col] = currentPlayer;
render();
if (checkForWinner()) {
document.getElementById('status').innerText = `¡El jugador ${currentPlayer} ha ganado!`;
document.getElementById('game').classList.add('disabled');
highlightWinner();
} else if (checkForTie()) {
document.getElementById('status').innerText = '¡Empate!';
document.getElementById('game').classList.add('tie');
} else {
currentPlayer = currentPlayer === 'X' ? 'O' : 'X';
document.getElementById('status').innerText = `Turno del jugador ${currentPlayer}`;
}
}
}
function highlightWinner() {
for (let i = 0; i < 3; i++) {
if (board[i][0] === currentPlayer && board[i][1] === currentPlayer && board[i][2] === currentPlayer) {
for (let j = 0; j < 3; j++) {
document.querySelectorAll('.cell')[i * 3 + j].classList.add('winner-cell');
}
return;
}
if (board[0][i] === currentPlayer && board[1][i] === currentPlayer && board[2][i] === currentPlayer) {
for (let j = 0; j < 3; j++) {
document.querySelectorAll('.cell')[i + j * 3].classList.add('winner-cell');
}
return;
}
}
if (board[0][0] === currentPlayer && board[1][1] === currentPlayer && board[2][2] === currentPlayer) {
for (let i = 0; i < 3; i++) {
document.querySelectorAll('.cell')[i * 4].classList.add('winner-cell');
}
return;
}
if (board[0][2] === currentPlayer && board[1][1] === currentPlayer && board[2][0] === currentPlayer) {
for (let i = 0; i < 3; i++) {
document.querySelectorAll('.cell')[2 + i * 2].classList.add('winner-cell');
}
return;
}
}
function checkForWinner() {
for (let i = 0; i < 3; i++) {
if (board[i][0] === currentPlayer && board[i][1] === currentPlayer && board[i][2] === currentPlayer) {
return true;
}
if (board[0][i] === currentPlayer && board[1][i] === currentPlayer && board[2][i] === currentPlayer) {
return true;
}
}
if (board[0][0] === currentPlayer && board[1][1] === currentPlayer && board[2][2] === currentPlayer) {
return true;
}
if (board[0][2] === currentPlayer && board[1][1] === currentPlayer && board[2][0] === currentPlayer) {
return true;
}
return false;
}
function checkForTie() {
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (board[i][j] === '') {
return false;
}
}
}
return true;
}
function resetGame() {
currentPlayer = 'X';
board = [
['', '', ''],
['', '', ''],
['', '', '']
];
document.querySelectorAll('.cell').forEach(cell => {
cell.classList.remove('winner-cell');
});
document.getElementById('status').innerText = 'Turno del jugador X';
document.getElementById('game').classList.remove('disabled', 'tie');
render();
}
function render() {
const cells = document.querySelectorAll('.cell');
cells.forEach((cell, index) => {
const row = Math.floor(index / 3);
const col = index % 3;
cell.innerText = board[row][col];
});
}