-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
135 lines (115 loc) · 3.73 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
125
126
127
128
129
130
131
132
133
134
135
'use strict';
// Selecting Elements
const score0El = document.querySelector('#score--0');
const score1El = document.querySelector('#score--1');
const diceEL = document.querySelector('.dice');
const current0El = document.getElementById('current--0');
const current1El = document.getElementById('current--1');
const player0El = document.querySelector('.player--0');
const player1El = document.querySelector('.player--1');
const btnNew = document.querySelector('.btn--new');
const btnRoll = document.querySelector('.btn--roll');
const btnHold = document.querySelector('.btn--hold');
//
// Instruction button & it's Modal Effect
const btnInst = document.querySelector('.instruction-button');
const showInst = document.querySelector('.show-instruction');
const closeInst = document.querySelector('.close-instruction');
const overlay = document.querySelector('.overlay');
// function to Add instuction Pop up Modal
const addModal = function () {
showInst.classList.remove('hidden');
overlay.classList.remove('hidden');
};
// function to remove instuction Pop up Modal
const removeModal = function () {
showInst.classList.add('hidden');
overlay.classList.add('hidden');
};
// button clicks effects
btnInst.addEventListener('click', addModal);
closeInst.addEventListener('click', removeModal);
overlay.addEventListener('click', removeModal);
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && !showInst.classList.contains('hidden')) {
removeModal();
}
});
//
//
//
// Defining Variables
let scores, currentScore, activePlayer, playing;
// Starting Conditions and assigning Variables
const init = function () {
scores = [0, 0];
currentScore = 0;
activePlayer = 0;
playing = true;
score0El.textContent = 0;
score1El.textContent = 0;
current0El.textContent = 0;
current1El.textContent = 0;
diceEL.classList.remove('hidden');
player0El.classList.remove('player--winner');
player1El.classList.remove('player--winner');
player0El.classList.add('player--active');
player1El.classList.remove('player--active');
};
// Involking init (Initialization)
init();
// Switch player
const switchPlayer = function () {
document.getElementById(`current--${activePlayer}`).textContent = 0;
currentScore = 0;
activePlayer = activePlayer === 0 ? 1 : 0;
player0El.classList.toggle('player--active');
player1El.classList.toggle('player--active');
};
// Roll Dice Functionality
btnRoll.addEventListener('click', function () {
if (playing) {
// 1. Generate a random number 1-6
let dice = Math.trunc(Math.random() * 6) + 1;
console.log(dice);
// 2. Displaying the dice
diceEL.classList.remove('hidden');
diceEL.src = `src/dice-${dice}.png`;
// 3. Check for rolled 1:
if (dice !== 1) {
// Add dice to Current Score
currentScore += dice;
document.getElementById(`current--${activePlayer}`).textContent =
currentScore;
}
// Switch to next Player
else {
switchPlayer();
}
}
});
// Hold Functionality
btnHold.addEventListener('click', function () {
if (playing) {
// 1. Add current score to active player's score
scores[activePlayer] += currentScore;
document.getElementById(`score--${activePlayer}`).textContent =
scores[activePlayer];
// 2. Check if score is >=100switchPlayer()
if (scores[activePlayer] >= 100) {
// finish the game
playing = false;
diceEL.classList.add('hidden');
document
.querySelector(`.player--${activePlayer}`)
.classList.add('player--winner');
document
.querySelector(`.player--${activePlayer}`)
.classList.remove('player--active');
} else {
//if, not switch to the next player
switchPlayer();
}
}
});
btnNew.addEventListener('click', init);