-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
121 lines (83 loc) · 2.39 KB
/
main.js
File metadata and controls
121 lines (83 loc) · 2.39 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
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
const circles = document.querySelectorAll('.circle')
const closeButton = document.querySelector('#close')
const startButton = document.querySelector('#start')
const endButton = document.querySelector('#end')
const scoreSpan = document.querySelector('.score')
const scoreEnd = document.querySelector('.scoreEnd')
const overlay = document.querySelector('.overlay')
function play() {
let audio = new Audio('sounds/start_game2.wav'); //game start notification sound
audio.play();
}
function stop() {
let audio = new Audio('sounds/stop_game1.wav') //game end notification sound
audio.play() //stop game sound
}
let score = 0;
let active = 0;
let timer
let pace = 1000;
let rounds = 0;
circles.forEach((circle, i) => {
circle.addEventListener('click', () => clickCircle(i))
})
const getRndNum = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min
const clickCircle = (i) => {
if(i !== active){
return endGame()
}
score += 10
scoreSpan.textContent = score
}
const enableCircle = () => {
circles.forEach(circle => {
circle.style.pointerEvents = 'auto'
})
}
const startGame = () => {
if(rounds >= 10){
return endGame()
}
startButton.classList.add('hidden')
endButton.classList.remove('hidden')
enableCircle()
const nextActive = pickNew(active)
circles[nextActive].classList.toggle('active')
circles[active].classList.remove('active')
active = nextActive
console.log(nextActive)
timer = setTimeout(startGame, pace)
pace -= 10
rounds ++
console.log(score)
function pickNew(active) {
const nextActive = getRndNum(0, 3)
if (nextActive !== active){
return nextActive
}
return pickNew(active)
}
}
const endGame = () => {
scoreEnd.textContent = score
endButton.classList.remove('hidden')
startButton.classList.add('hidden')
overlay.style.visibility = 'visible'
console.log('game ended')
clearTimeout(timer)
}
const resetGame = () => {
window.location.reload()
}
startButton.addEventListener('click', ()=> {
setTimeout(function(){
startGame()
}, 1000); //this sets time delay of 1sec for the game to start after the start sound.
// startGame();
play()
});
endButton.addEventListener('click', ()=>{
endGame();
stop()
});
closeButton.addEventListener('click', resetGame)