-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
145 lines (102 loc) · 6.04 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
141
142
143
144
145
//3. At the top of the game.js file, create a new array called buttonColours and set it to hold the sequence "red", "blue", "ligth green", "yellow" .
var buttonColours = ["red", "blue", "ligth green", "yellow"];
//5. At the top of the game.js file, create a new empty array called gamePattern.
var gamePattern = [];
//3. At the top of the game.js file, create a new empty array with the name userClickedPattern.
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).keypress(function() {
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".
$("#level-title").text("Level " + level);
nextSequence();
started = true;
}
});
//1. Use jQuery to detect when any of the buttons are clicked and trigger a handler function.
$(".btn").click(function() {
//2. Inside the handler, create a new variable called userChosenColour to store the id of the button that got clicked.
var userChosenColour = $(this).attr("id");
//4. Add the contents of the variable userChosenColour created in step 2 to the end of this new userClickedPattern
userClickedPattern.push(userChosenColour);
//console.log(userClickedPattern);
//1. In the same way we played sound in nextSequence() , when a user clicks on a button, the corresponding sound should be played.
playSound(userChosenColour);
animatePress(userChosenColour);
//2. Call checkAnswer() after a user has clicked and chosen their answer, passing in the index of the last answer in the user's sequence.
checkAnswer(userClickedPattern.length-1);
});
//1. Create a new function called checkAnswer(), it should take one input with the name currentLevel
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");
//1. In the sounds folder, there is a sound called wrong.mp3, play this sound if the user got one of the answers 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.
$("body").addClass("game-over");
setTimeout(function () {
$("body").removeClass("game-over");
}, 200);
//3. Change the h1 title to say "Game Over, Press Any Key to Restart" if the user got the answer wrong.
$("#level-title").text("Game Over, Press Any Key to Restart");
//2. Call startOver() if the user gets the sequence wrong.
startOver();
}
}
//1. Inside game.js create a new function called nextSequence()
function nextSequence() {
//6. Once nextSequence() is triggered, reset the userClickedPattern to an empty array ready for the next level.
userClickedPattern = [];
level++;
$("#level-title").text("Level " + level);
//2. Inside the new function generate a new random number between 0 and 3, and store it in a variable called randomNumber
var randomNumber = Math.floor(Math.random() * 4);
//4. Create a new variable called randomChosenColour and use the randomNumber from step 2 to select a random colour from the buttonColours array.
var randomChosenColour = buttonColours[randomNumber];
//6. Add the new randomChosenColour generated in step 4 to the end of the gamePattern.
gamePattern.push(randomChosenColour);
//1. Use jQuery to select the button with the same id as the randomChosenColour
//2. Use Google/Stackoverflow to figure out how you can use jQuery to animate a flash to the button selected in step 1.
$("#" + randomChosenColour).fadeIn(100).fadeOut(100).fadeIn(100);
//3. Use Google/Stackoverflow to figure out how you can use Javascript to play the sound for the button colour selected in step 1.
//var audio = new Audio("sounds/" + randomChosenColour + ".mp3");
//audio.play();
//4. Refactor the code in playSound() so that it will work for both playing sound in nextSequence() and when the user clicks a button.
playSound(randomChosenColour);
}
//2. Create a new function called playSound() that takes a single input parameter called name.
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();
}
//1. Create a new function called animatePress(), it should take a single input parameter called currentColour.
function animatePress(currentColor) {
//2. Use jQuery to add this pressed class to the button that gets clicked inside animatePress().
$("#" + currentColor).addClass("pressed");
//3. use Google/Stackoverflow to figure out how you can use Javascript to remove the pressed class after a 100 milliseconds.
setTimeout(function () {
$("#" + currentColor).removeClass("pressed");
}, 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;
}