|
1 | 1 | const clearAllTimeouts = (setTimeoutsId) => { |
2 | 2 | for (const timeoutId of setTimeoutsId) { |
3 | | - clearInterval(timeoutId); |
| 3 | + clearTimeout(timeoutId); |
4 | 4 | } |
5 | 5 |
|
6 | 6 | setTimeoutsId.clear(); |
7 | 7 | }; |
8 | 8 |
|
9 | 9 | const closeAllOpenedCards = (clickedCards) => { |
10 | 10 | return setTimeout(() => { |
11 | | - if (areColorMatches(clickedCards)) removeCards(clickedCards); |
| 11 | + if (areColorMatches(clickedCards)) { |
| 12 | + removeCards(clickedCards); |
| 13 | + return; |
| 14 | + }; |
| 15 | + |
12 | 16 | for (const clickedCard of clickedCards) { |
13 | | - clickedCard.classList.remove('open_card'); |
| 17 | + clickedCard.classList.add('closed_cards'); |
14 | 18 | } |
15 | 19 | clickedCards.clear(); |
16 | 20 | }, 2000); |
17 | 21 | }; |
18 | 22 |
|
19 | 23 | const openCards = (clickedCards) => { |
20 | 24 | for (const clickedCard of clickedCards) { |
21 | | - clickedCard.classList.add('open_card'); |
| 25 | + clickedCard.classList.remove('closed_cards'); |
22 | 26 | } |
23 | 27 | }; |
24 | 28 |
|
25 | 29 | const areColorMatches = ([...clickedCards]) => { |
26 | 30 | return clickedCards[0].className === clickedCards[1]?.className; |
27 | | - |
28 | 31 | }; |
29 | 32 |
|
30 | 33 | const removeCards = (clickedCards) => { |
31 | 34 | for (const clickedCard of clickedCards) { |
32 | | - clickedCard.style.display = 'none'; |
| 35 | + clickedCard.classList.add('remove_card'); |
33 | 36 | } |
| 37 | + clickedCards.clear(); |
34 | 38 | }; |
35 | 39 |
|
36 | 40 | const startGame = () => { |
37 | 41 | const setTimeoutsId = new Set(); |
38 | 42 | const clickedCards = new Set(); |
39 | 43 |
|
40 | 44 | addEventListener("click", (event) => { |
41 | | - if (!(event.target.classList.contains('card'))) return; |
| 45 | + if (!(event.target.classList.contains('card')) || clickedCards.size >= 2) return; |
42 | 46 |
|
43 | 47 | clickedCards.add(event.target); |
44 | 48 | openCards(clickedCards); |
|
0 commit comments