-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
75 lines (68 loc) · 1.77 KB
/
script.js
File metadata and controls
75 lines (68 loc) · 1.77 KB
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
// Code goes here
var turn;
var board;
var winner;
function resetGame() {
turn = 0;
winner = undefined;
board = [
[ ' ', ' ', ' '],
[ ' ', ' ', ' '],
[ ' ', ' ', ' ']
];
var table = document.getElementById('board');
for (var col = 0; col < 3; col++) {
for (var row = 0; row < 3; row++) {
var cell = table.rows[row].cells[col];
cell.innerHTML = ' ';
}
}
document.getElementById('result').innerHTML = '';
}
function makeMove(col, row) {
if (board[row][col] === ' ' && !winner) {
var table = document.getElementById('board');
var cell = table.rows[row].cells[col];
var player = turn % 2 == 0 ? 'X' : 'O';
cell.innerHTML = board[row][col] = player;
if (isWinner(player)) {
document.getElementById('result').innerHTML = 'The winner is ' + player;
winner = player;
}
turn++;
if (turn === 9 && !winner) {
document.getElementById('result').innerHTML = 'The game is deadlocked';
}
}
}
function countCells(check, player) {
var count = 0;
var row = check.row;
var col = check.col;
for (var i = 0; i < 3; i++) {
if (board[row][col] === player) {
count++;
}
col += check.colinc;
row += check.rowinc;
}
return count;
}
function isWinner(player) {
var checks = [
{ col: 0, row: 0, colinc: 1, rowinc: 0 },
{ col: 0, row: 1, colinc: 1, rowinc: 0 },
{ col: 0, row: 2, colinc: 1, rowinc: 0 },
{ col: 0, row: 0, colinc: 0, rowinc: 1 },
{ col: 1, row: 0, colinc: 0, rowinc: 1 },
{ col: 2, row: 0, colinc: 0, rowinc: 1 },
{ col: 0, row: 0, colinc: 1, rowinc: 1 },
{ col: 2, row: 0, colinc: -1, rowinc: 1 }
];
for (var i = 0; i < checks.length; i++) {
if (countCells(checks[i], player) === 3) {
return true;
}
}
return false;
}