index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Memory Game</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="memory-game" id="memory-game"></div> <script src="script.js"></script> </body> </html>
styles.css
.memory-game {
display: flex;
flex-wrap: wrap;
width: 400px;
height: 400px;
margin: 20px auto;
perspective: 1000px;
}
.card {
width: calc(25% - 10px);
height: calc(25% - 10px);
margin: 5px;
position: relative;
transform-style: preserve-3d;
transition: transform 0.5s;
cursor: pointer;
}
.card.flip {
transform: rotateY(180deg);
}
.card-inner {
position: absolute;
width: 100%;
height: 100%;
text-align: center;
line-height: calc(25% - 10px);
backface-visibility: hidden;
}
.front-face,
.back-face {
width: 100%;
height: 100%;
position: absolute;
display: flex;
justify-content: center;
align-items: center;
font-size: 24px;
background-color: #f0f0f0;
border: 1px solid #ccc;
}
script.js
const cards = ['🍎', '🍊', '🍋', '🍉', '🍇', '🥥', '🍍', '🥝'];
let firstCard = null;
let secondCard = null;
let lockBoard = false;
let pairsMatched = 0;
const memoryGame = document.getElementById('memory-game');
function createCard(cardContent) {
const card = document.createElement('div');
card.classList.add('card');
const cardInner = document.createElement('div');
cardInner.classList.add('card-inner');
const frontFace = document.createElement('div');
frontFace.classList.add('front-face');
frontFace.innerText = '';
const backFace = document.createElement('div');
backFace.classList.add('back-face');
backFace.innerText = cardContent;
cardInner.appendChild(frontFace);
cardInner.appendChild(backFace);
card.appendChild(cardInner);
card.addEventListener('click', flipCard);
return card;
}
function flipCard() {
if (lockBoard) return;
if (this === firstCard) return;
this.classList.add('flip');
if (!firstCard) {
firstCard = this;
return;
}
secondCard = this;
checkForMatch();
}
function checkForMatch() {
const isMatch = firstCard.querySelector('.back-face').innerText === secondCard.querySelector('.back-face').innerText;
isMatch ? disableCards() : unflipCards();
}
function disableCards() {
firstCard.removeEventListener('click', flipCard);
secondCard.removeEventListener('click', flipCard);
resetBoard();
pairsMatched++;
if (pairsMatched === cards.length) {
setTimeout(() => alert('Congratulations! You won!'), 500);
}
}
function unflipCards() {
lockBoard = true;
setTimeout(() => {
firstCard.classList.remove('flip');
secondCard.classList.remove('flip');
resetBoard();
}, 1000);
}
function resetBoard() {
[firstCard, secondCard] = [null, null];
lockBoard = false;
}
function initializeGame() {
const shuffledCards = [...cards, ...cards].sort(() => Math.random() - 0.5);
shuffledCards.forEach(cardContent => {
const card = createCard(cardContent);
memoryGame.appendChild(card);
});
}
initializeGame();
STRUCTURE (Submit after Mid Term , 15 Ashad 2083) A) MCQ 1. What is the…
FUNCTION (Assignment) Submit Before Mid Term MCQ 1. What is the output of this statement…
Evolution History of computer Technology (HISTORY OF COMPUTER) Evolution of computer is a study of…
Unit3_ClassMethodDesign_OOAD DOWNLOAD
Maturity of Enterprise Architecture Practice Maturity of Enterprise Architecture Practice DOWNLOAD
Report-on-final-project_Sample_2