js简易翻牌小游戏
时间: 2023-07-23 20:06:05 浏览: 44
好的,以下是一个简易的翻牌小游戏的HTML和JavaScript代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>翻牌小游戏</title>
<style>
.card {
width: 100px;
height: 100px;
background-color: #ccc;
margin: 10px;
display: inline-block;
text-align: center;
font-size: 50px;
line-height: 100px;
cursor: pointer;
}
.card-flipped {
background-color: #f00;
}
</style>
</head>
<body>
<div id="game-board"></div>
<script>
const cards = ['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'E', 'E', 'F', 'F']; // 卡片数组
let flippedCards = []; // 已翻转的卡片
let matchedCards = []; // 已匹配的卡片
// 生成卡片
function generateCards() {
const gameBoard = document.getElementById('game-board');
cards.forEach((card) => {
const cardElement = document.createElement('div');
cardElement.classList.add('card');
cardElement.dataset.card = card;
cardElement.textContent = '';
cardElement.addEventListener('click', flipCard);
gameBoard.appendChild(cardElement);
})
}
// 翻转卡片
function flipCard() {
if (flippedCards.length < 2 && !flippedCards.includes(this) && !matchedCards.includes(this)) {
this.classList.add('card-flipped');
flippedCards.push(this);
if (flippedCards.length === 2) {
checkMatch();
}
}
}
// 检查匹配
function checkMatch() {
if (flippedCards[0].dataset.card === flippedCards[1].dataset.card) {
flippedCards.forEach((card) => {
card.removeEventListener('click', flipCard);
matchedCards.push(card);
});
} else {
setTimeout(() => {
flippedCards.forEach((card) => {
card.classList.remove('card-flipped');
});
}, 1000);
}
flippedCards = [];
if (matchedCards.length === cards.length) {
alert('游戏结束!');
}
}
generateCards();
</script>
</body>
</html>
```
这个游戏的规则是:在卡片中随机分布了6种不同的字母,玩家需要翻转卡片来寻找匹配的卡片。每次可以翻转两张卡片,如果两张卡片的字母相同,则匹配成功,卡片保持翻转状态,不可再次翻转。如果两张卡片的字母不同,则匹配失败,卡片翻转回原来的状态。当所有卡片都匹配成功时游戏结束。
在代码中,我们定义了一个`cards`数组来存储所有卡片的字母,然后通过`generateCards`函数将其生成到HTML中。每个卡片都是一个`div`元素,有一个`card`类和一个`data-card`属性来存储它的字母。点击卡片时,会触发`flipCard`函数来翻转卡片,并将翻转的卡片存储在`flippedCards`数组中。如果翻转了两张卡片,则调用`checkMatch`函数检查它们是否匹配。如果匹配成功,则将卡片从`flippedCards`数组中删除,并将其添加到`matchedCards`数组中。如果匹配失败,则使用`setTimeout`函数将卡片翻转回去。当所有卡片都匹配成功时,游戏结束。