-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
72 lines (63 loc) · 1.79 KB
/
script.js
File metadata and controls
72 lines (63 loc) · 1.79 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
const board = document.getElementById('game-board');
const letters = [...'AABBCCDDEEFFGGHH'];
let flippedCards = [];
let matchedCount = 0;
let lockBoard = false;
function shuffle(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
function createCard(letter) {
const card = document.createElement('div');
card.classList.add('card');
card.dataset.letter = letter;
card.textContent = '';
card.addEventListener('click', handleCardClick);
return card;
}
function handleCardClick(e) {
const card = e.target;
if (lockBoard || card.classList.contains('flipped') || card.classList.contains('matched') || flippedCards.length === 2) {
return;
}
card.classList.add('flipped');
card.textContent = card.dataset.letter;
flippedCards.push(card);
if (flippedCards.length === 2) {
const [card1, card2] = flippedCards;
if (card1.dataset.letter === card2.dataset.letter) {
card1.classList.add('matched');
card2.classList.add('matched');
flippedCards = [];
matchedCount++;
if (matchedCount === 8) {
setTimeout(() => alert('Congratulations! You won!'), 200);
}
} else {
lockBoard = true;
setTimeout(() => {
card1.classList.remove('flipped');
card2.classList.remove('flipped');
card1.textContent = '';
card2.textContent = '';
flippedCards = [];
lockBoard = false;
}, 1000);
}
}
}
function initGame() {
matchedCount = 0;
board.innerHTML = '';
flippedCards = [];
lockBoard = false;
const shuffledLetters = shuffle(letters.slice());
shuffledLetters.forEach(letter => {
const card = createCard(letter);
board.appendChild(card);
});
}
initGame();