Repository navigation
Expand file tree
/
Copy pathgameState.js
More file actions
107 lines (89 loc) · 2.46 KB
/
Copy pathgameState.js
File metadata and controls
107 lines (89 loc) · 2.46 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
// Pick a game mode
function setGameMode(gameModes, gameMode, renderCards, resetScore) {
let modeButtons = [];
for (let mode of gameModes.keys()) {
modeButtons.push(document.getElementById(mode));
}
// Set the initial game mode
for (let button of modeButtons) {
if (button.id == gameMode) {
button.classList.add("current-game-mode");
}
}
// Check for game mode changes
for (let button of modeButtons) {
button.addEventListener("click", function () {
button.classList.add("current-game-mode");
resetScore();
printScore(0);
resetButtons(modeButtons, button);
gameMode = button.id;
renderCards(gameMode);
});
}
return gameMode;
}
// Start a new game
function newGame(resetCards, gameMode, resetScore, renderCards) {
let newGame = document.getElementsByClassName("new-button");
newGame[0].addEventListener("click", function () {
resetCards();
// Reset score
let score = resetScore();
printScore(score);
// Remove old cards
setTimeout(function () {
renderCards(gameMode);
}, 500);
});
}
// Handle game over
function gameOver(
isGameOver,
gameMode,
gameModes,
resetCards,
resetScore,
renderCards
) {
let faceUp = document.getElementsByClassName("card-flipped");
if (faceUp.length == gameModes.get(gameMode) && !isGameOver) {
gameOverMessage(resetCards, gameMode, resetScore, renderCards);
isGameOver = true;
}
}
// Reset button colours if not selected
function resetButtons(modeButtons, selected) {
for (let button of modeButtons) {
if (selected != button) {
button.classList.remove("current-game-mode");
}
}
}
// Output current score to the screen
function printScore(score) {
let scoreDiv = document.getElementById("score").getElementsByTagName("h3");
scoreDiv[0].textContent = "Score: " + score;
}
function gameOverMessage(resetCards, gameMode, resetScore, renderCards) {
let myModal = document.getElementById("exampleModalCenter");
let button = document.getElementById("new-game");
let modalVideo = document.getElementById("modalVideo");
$(myModal).modal("show");
setTimeout(function () {
// Autoplay the video
modalVideo.play();
}, 420);
button.onclick = function () {
setTimeout(function () {
resetCards();
}, 300);
// Reset score
let score = resetScore();
printScore(score);
// Remove old cards
setTimeout(function () {
renderCards(gameMode);
}, 600);
};
}