-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
70 lines (62 loc) · 1.87 KB
/
index.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
let buttons = ['green', 'red', 'yellow', 'blue'];
let gameSeq = [];
let playerSeq = [];
var started = false;
document.querySelector('h1').addEventListener('click', function () {
if (!started) {
setTimeout(buildGameSeq, 500);
started = true;
}
});
for (button of buttons) {
let buttonColor = this.button;
document
.querySelector(`#${buttonColor}`)
.addEventListener('click', function () {
soundButton(buttonColor);
animateButton(buttonColor);
playerSeq.push(buttonColor);
checkAnswer(playerSeq.length - 1);
});
}
function setHeading(message) {
let heading = document.querySelector('h1');
heading.innerHTML = message;
}
function soundButton(btn) {
soundName = `./sounds/${btn}.mp3`;
let sound = new Audio(soundName);
sound.play();
}
function animateButton(btn) {
let activeBtn = document.querySelector(`#${btn}`);
activeBtn.classList.add('pressed');
setTimeout(() => {
activeBtn.classList.remove('pressed');
}, 100);
}
function buildGameSeq() {
playerSeq = [];
let randomChoice = Math.floor(Math.random() * buttons.length);
gameSeq.push(buttons[randomChoice]);
let gameSeqActive = gameSeq[gameSeq.length - 1];
setHeading(`Level ${gameSeq.length}`);
soundButton(gameSeqActive);
animateButton(gameSeqActive);
}
function checkAnswer(currentLevelStep) {
if (playerSeq[currentLevelStep] === gameSeq[currentLevelStep]) {
if (playerSeq.length === gameSeq.length) {
setTimeout(buildGameSeq, 1000);
}
} else {
setHeading('Game Over! Click here to start.');
document.body.classList.add('game-over');
setTimeout(() => {
document.body.classList.remove('game-over');
}, 200);
soundButton('wrong');
gameSeq = [];
started = false;
}
}