-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
140 lines (86 loc) · 3.95 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
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
136
137
138
139
140
var gamePattern = [];
var buttonColours=["red", "blue", "green", "yellow"];
var userClickedPattern = [];
//You'll need a way to keep track of whether if the game has started or not, so you only call nextSequence() on the first keypress.
var started = false;
//2. Create a new variable called level and start at level 0.
var level = 0;
//1. Use jQuery to detect when a keyboard key has been pressed, when that happens for the first time, call nextSequence().
document.addEventListener("keydown",keypressed);
function keypressed(){
if (!started) {
//3. The h1 title starts out saying "Press A Key to Start", when the game has started, change this to say "Level 0".
document.querySelector("#level-title").innerHTML=("Level " + level);
nextSequence();
started = true;
}
}
for (i=0; i<document.querySelectorAll(".btn").length; i++)
document.querySelectorAll(".btn")[i].addEventListener("click",handle);
function handle()
{
var userChosenColour=this.id;
userClickedPattern.push(userChosenColour);
console.log(userClickedPattern);
playSound(userChosenColour);
animatePress(userChosenColour);
checkAnswer(userClickedPattern.length-1);
}
function checkAnswer(currentLevel) {
//3. Write an if statement inside checkAnswer() to check if the most recent user answer is the same as the game pattern. If so then log "success", otherwise log "wrong".
if (gamePattern[currentLevel] === userClickedPattern[currentLevel]) {
console.log("success");
//4. If the user got the most recent answer right in step 3, then check that they have finished their sequence with another if statement.
if (userClickedPattern.length === gamePattern.length){
//5. Call nextSequence() after a 1000 millisecond delay.
setTimeout(function () {
nextSequence();
}, 1000);
}
} else {
console.log("wrong");
playSound("wrong");
//2. In the styles.css file, there is a class called "game-over", apply this class to the body of the website when the user gets one of the answers wrong and then remove it after 200 milliseconds.
document.querySelector("body").classList.add("game-over");
setTimeout(function () {
document.querySelector("body").classList.remove("game-over");
}, 200);
//3. Change the h1 title to say "Game Over, Press Any Key to Restart" if the user got the answer wrong.
document.querySelector("#level-title").innerHTML=("Game Over, Press Any Key to Restart");
startOver();
}
}
function nextSequence(){
userClickedPattern.length=0;
level++;
document.querySelector("#level-title").innerHTML=("Level " + level);
var randomNumber = Math.floor(Math.random() * 4);
var randomChosenColour=buttonColours[randomNumber];
gamePattern.push(randomChosenColour);
document.querySelector("#"+ randomChosenColour).classList.add("pressed");
setTimeout(function()
{
document.querySelector("#"+ randomChosenColour).classList.remove("pressed"); //after 1 sec the class removed
}, 500);
playSound(randomChosenColour);
}
//var randomNumber=nextSequence();
function playSound(name) {
//3. Take the code we used to play sound in the nextSequence() function and add it to playSound().
var audio = new Audio("sounds/" + name + ".mp3");
audio.play();
}
function animatePress(currentColor) {
document.querySelector("#"+ currentColor).classList.add("pressed");
setTimeout(function()
{
document.querySelector("#"+ currentColor).classList.remove("pressed"); //after 1 sec the class removed
}, 100);
}
//1. Create a new function called startOver().
function startOver() {
//3. Inside this function, you'll need to reset the values of level, gamePattern and started variables.
level = 0;
gamePattern = [];
started = false;
}