-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
80 lines (71 loc) · 2.14 KB
/
index.js
File metadata and controls
80 lines (71 loc) · 2.14 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
let previousCardElem = undefined;
isPairing = false;
const cardHTMLCodesArr = [
"🍗",
"🍕",
"🍔",
"🍜",
"🍟",
"🍤",
"🍯",
"🍫",
];
const initGame = () => {
const boardDiv = document.querySelector(".board");
cardArr = getCardsArray();
for (let i = 0; i < cardArr.length; i++) {
let cardContainerDiv = document.createElement("div");
let cardDivBack = document.createElement("div");
let cardDivFront = document.createElement("div");
cardContainerDiv.classList.add("card-container");
cardDivBack.classList.add("card-face");
cardDivBack.classList.add("card-back");
cardDivFront.classList.add("card-face");
cardDivFront.classList.add("card-front");
cardDivBack.classList.add(`card-${cardArr[i]}`);
cardDivFront.classList.add(`card-${cardArr[i]}`);
cardContainerDiv.id = i;
cardDivBack.id = cardArr[i];
cardDivFront.innerHTML = cardHTMLCodesArr[cardArr[i]];
cardDivBack.addEventListener("click", (e) => cardClick(e));
cardContainerDiv.append(cardDivFront);
cardContainerDiv.append(cardDivBack);
boardDiv.append(cardContainerDiv);
}
};
const getCardsArray = () => {
const arr = "0123456701234567".split("");
for (let i = arr.length - 1; i > 0; i--) {
const rand = Math.floor(Math.random() * (i + 1));
[arr[i], arr[rand]] = [arr[rand], arr[i]];
}
return arr;
};
const findPair = (e) => {
if (previousCardElem.id === e.target.id) {
var pairs = document.querySelectorAll(`.card-${e.target.id}`);
pairs.forEach((elem) => {
elem.classList.add("solved");
});
} else {
e.target.parentElement.classList.remove("flipped");
previousCardElem.parentElement.classList.remove("flipped");
}
};
const cardClick = (e) => {
if (e.target.parentElement.classList.contains("flipped") || isPairing) {
return;
}
e.target.parentElement.classList.add("flipped");
if (previousCardElem !== undefined) {
isPairing = true;
setTimeout(() => {
findPair(e);
previousCardElem = undefined;
isPairing = false;
}, 1000);
} else {
previousCardElem = e.target;
}
};
initGame();