-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
executable file
·107 lines (86 loc) · 3.03 KB
/
script.js
File metadata and controls
executable file
·107 lines (86 loc) · 3.03 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
document.addEventListener('DOMContentLoaded',function(){
let numCards = 0;
let firstSelection = "";
let secondSelection = "";
let lockBoard = false;
let clickBoard = document.querySelector(".clickBoard");
let clicks = 0;
let highscoreBoard = document.querySelector(".highscoreBoard");
let highscore = localStorage.getItem('highscore') || 0;
const cards = document.querySelectorAll(".cards .card");
//shuffle card
function shuffleCards(){
const cardsToShuffle = document.querySelectorAll(".cards .card");
for (let card of cardsToShuffle){
let randomPos = Math.floor(Math.random()*cardsToShuffle.length);
card.style.order = randomPos;
}
}
shuffleCards();
function loadGame(){
highscoreBoard.innerHTML = highscore;
for (let card of cards){
card.addEventListener('click',function(){
if(lockBoard) return;
card.classList.add('clicked');
//avoid same card being clicked twice
card.classList.add('disabled');
clicks += 1;
clickBoard.innerHTML = clicks;
if(numCards === 0){
firstSelection = card.getAttribute("character");
numCards++;
}else if (numCards === 1){
secondSelection = card.getAttribute("character");
numCards = 0;
//check for match
if (firstSelection === secondSelection) {
const correctCards = document.querySelectorAll(".card[character=" +CSS.escape(firstSelection) + "]");
correctCards[0].classList.add('correct');
correctCards[0].classList.remove('clicked');
correctCards[1].classList.add('correct');
correctCards[1].classList.remove('clicked');
} else {
const incorrectCards = document.querySelectorAll(".card.clicked");
lockBoard = true;
setTimeout(function(){
incorrectCards[0].classList.remove('clicked');
incorrectCards[1].classList.remove('clicked');
incorrectCards[0].classList.remove('disabled');
incorrectCards[1].classList.remove('disabled');
lockBoard = false;
},1000);
}
const gameFinished = checkGameFinished(cards);
if (gameFinished) {
setHighscore(highscore, clicks);
alert('Game over! Click restart to play again.')
}
}
})
}
}
loadGame();
function resetGame(){
const restartButton = document.getElementById('restart-btn');
restartButton.addEventListener('click',function(){
shuffleCards(cards);
for (let card of cards){
card.classList.remove('clicked','correct','disabled');
}
clicks = 0;
clickBoard.innerHTML = clicks;
})}
resetGame();
function checkGameFinished(cards){
return Array.from(cards).every(card => card.classList.contains('correct'));
}
function setHighscore(highscore=0, clicks){
console.log('setHighscore:', highscore, 'clicks', clicks)
if(clicks<highscore || highscore === 0){
localStorage.setItem('highscore', clicks);
highscoreBoard.innerHTML = clicks;
alert('Congratulations on the new high score: ' + clicks);
}
}
})