-
Notifications
You must be signed in to change notification settings - Fork 642
/
Copy pathscript.js
124 lines (106 loc) · 3.47 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
var gameBoard = [
0, 6, 6, 6, 6, 6, 6,
0, 6, 6, 6, 6, 6, 6
];
var currentPlayer = 'one';
var readOut = document.querySelector('div.info');
function renderBoard() {
var gameContainer = document.querySelector('.container');
gameContainer.innerHTML = ''; // Clear previous content
for (var i = 0; i < gameBoard.length; i++) {
if (i % 7 === 0) {
var row = document.createElement('div');
gameContainer.appendChild(row);
}
var button = document.createElement('button');
button.setAttribute('class', 'pit' + i);
button.setAttribute('id', i);
button.innerHTML = gameBoard[i];
row.appendChild(button);
}
var playerClass = document.querySelectorAll('.container div');
playerClass[0].setAttribute('class', 'playerTwo');
playerClass[1].setAttribute('class', 'playerOne');
setListeners();
}
function moveStones(pitIndex) {
var stonesInHand = gameBoard[pitIndex];
var pitNextIndex = pitIndex + 1;
gameBoard[pitIndex] = 0;
var lastIndex;
if (stonesInHand > 0) {
for (var i = pitNextIndex; i < stonesInHand + pitNextIndex; i++) {
lastIndex = i % gameBoard.length;
gameBoard[lastIndex] += 1;
}
}
var nextTurn = bankStones(lastIndex);
if (!nextTurn) {
setPlayer();
}
updateBoard();
}
function bankStones(lastIndex) {
var inverse = gameBoard.length - lastIndex;
if ((lastIndex !== 0) && (lastIndex !== 7) && (gameBoard[lastIndex] === 1)) {
if (currentPlayer === 'two') {
if (1 <= lastIndex && lastIndex <= 6) {
gameBoard[7] = gameBoard[7] + gameBoard[inverse] + 1;
gameBoard[lastIndex] = 0;
gameBoard[inverse] = 0;
}
} else {
if (8 <= lastIndex && lastIndex <= 13) {
gameBoard[0] = gameBoard[0] + gameBoard[inverse] + 1;
gameBoard[lastIndex] = 0;
gameBoard[inverse] = 0;
}
}
}
// Check if the last stone landed in the player's bank
if ((currentPlayer === 'one' && lastIndex === 0) || (currentPlayer === 'two' && lastIndex === 7)) {
return true; // The player gets another turn
}
return false;
}
function updateBoard() {
for (var i = 0; i < gameBoard.length; i++) {
var pit = document.querySelectorAll('button');
pit[i].textContent = gameBoard[i];
}
checkWin();
}
function checkWin() {
var playerOneStones = gameBoard[1] + gameBoard[2] + gameBoard[3] + gameBoard[4] + gameBoard[5] + gameBoard[6];
var playerTwoStones = gameBoard[8] + gameBoard[9] + gameBoard[10] + gameBoard[11] + gameBoard[12] + gameBoard[13];
if (playerOneStones === 0 || playerTwoStones === 0) {
var playerOneTotal = playerOneStones + gameBoard[0];
var playerTwoTotal = playerTwoStones + gameBoard[7];
if (playerOneTotal > playerTwoTotal) {
readOut.textContent = 'Player One Wins!';
} else {
readOut.textContent = 'Player Two Wins!';
}
}
}
function setPlayer() {
var gameContainer = document.querySelector('.container');
if (currentPlayer === 'one') {
currentPlayer = 'two';
gameContainer.classList.add('rotated');
readOut.textContent = 'It is player ' + currentPlayer + '\'s turn';
} else {
currentPlayer = 'one';
gameContainer.classList.remove('rotated');
readOut.textContent = 'It is player ' + currentPlayer + '\'s turn';
}
}
function setListeners() {
for (var i = 0; i < gameBoard.length; i++) {
var pit = document.querySelectorAll('button');
pit[i].addEventListener('click', function (eventObject) {
moveStones(Number(eventObject.target.id));
});
}
}
renderBoard();