-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmemory.js
76 lines (71 loc) · 2.1 KB
/
memory.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
let cards = document.querySelectorAll(".card");
let restartButton = document.getElementById("restart");
let board = document.getElementsByClassName("wrapper");
cards.forEach(function (card) {
card.addEventListener("click", flipCard);
});
let card1, card2, card1im, card2img;
let disableDeck = false;
let matched = 0;
function flipCard({ target: clickedCard }) {
if (!card1 && !disableDeck) {
clickedCard.classList.add("flip");
card1 = clickedCard;
card1img = clickedCard.querySelector(".back-view img").src;
} else if (!disableDeck && clickedCard != card1) {
clickedCard.classList.add("flip");
disableDeck = true;
card2 = clickedCard;
card2img = clickedCard.querySelector(".back-view img").src;
checkMatch(card1img, card2img);
}
}
function checkMatch(img1, img2) {
if (img1 === img2) {
matched++;
card1.removeEventListener("click", flipCard);
card2.removeEventListener("click", flipCard);
setTimeout(() => {
card1.classList.add("tilt");
card2.classList.add("tilt");
card1 = false;
card2 = false;
setTimeout(() => {
disableDeck = false;
}, 2000);
}, 500);
if (matched === cards.length / 2) {
setTimeout(() => {
board[0].classList.add("spin");
}, 500);
setTimeout(() => {
restartButton.style.visibility = "visible";
}, 3000);
}
} else {
setTimeout(() => {
card1.classList.add("shake");
card2.classList.add("shake");
}, 400);
setTimeout(() => {
card1.classList.remove("flip", "shake");
card2.classList.remove("flip", "shake");
disableDeck = false;
card1 = false;
card2 = false;
}, 1000);
}
}
function shuffleDeck() {
restartButton.style.visibility = "hidden";
let deck = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8];
deck.sort(() => (Math.random() > 0.5 ? 1 : -1));
cards.forEach(function (card, i) {
card.classList.remove("flip");
card.addEventListener("click", flipCard);
setTimeout(() => {
card.querySelector(".back-view img").src = `images/img-${deck[i]}.png`;
}, 1000);
});
}
shuffleDeck();