-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
107 lines (91 loc) · 2.15 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
107
// Initial data
let square = {
a1: '', a2: '', a3: '',
b1: '', b2: '', b3: '',
c1: '', c2: '', c3: ''
};
let player = '';
let warning = '';
let playing = false;
reset();
// Events
document.querySelector('.reset').addEventListener('click', reset);
document.querySelectorAll('.item').forEach(item => {
item.addEventListener('click', itemClick);
});
// Functions
function itemClick(event) {
let item = event.target.getAttribute('data-item');
if (playing && square[item] === '') {
square[item] = player;
renderSquare();
togglePlayer();
checkGame();
}
}
function reset() {
warning = '';
let random = Math.floor(Math.random() * 2);
player = (random === 0) ? 'x' : 'o';
for (let i in square) {
square[i] = '';
}
playing = true;
renderSquare();
renderInfo();
}
function renderSquare() {
for (let i in square) {
let item = document.querySelector(`div[data-item=${i}]`);
item.innerHTML = square[i];
}
}
function renderInfo() {
document.querySelector('.vez').innerHTML = player;
document.querySelector('.resultado').innerHTML = warning;
}
function togglePlayer() {
player = (player === 'x') ? 'o' : 'x';
renderInfo();
}
function checkGame() {
if (checkWinnerFor('x')) {
warning = 'O "x" venceu';
playing = false;
} else if (checkWinnerFor('o')) {
warning = 'O "o" venceu';
playing = false;
} else if (isFull()) {
warning = 'Empate';
playing = false;
}
renderInfo();
}
function checkWinnerFor(player) {
let pos = [
'a1,a2,a3',
'b1,b2,b3',
'c1,c2,c3',
'a1,b2,c3',
'a3,b2,c1',
'a1,b1,c1',
'a2,b2,c2',
'a3,b3,c3',
];
for (let w in pos) {
let pArray = pos[w].split(',');
let hasWon = pArray.every(option => square[option] === player);
if (hasWon) {
return true;
}
}
return false;
}
function isFull() {
for (let i in square) {
if (square[i] === '') {
return false;
}
}
return true;
}