当前位置:首页 > JavaScript

js实现翻牌游戏

2026-03-16 07:57:43JavaScript

实现翻牌游戏的基本思路

翻牌游戏通常涉及一组卡片,玩家点击卡片后翻转显示内容,匹配相同卡片得分。使用JavaScript实现需要处理卡片布局、点击事件、匹配逻辑和计时功能。

HTML结构设计

创建卡片容器和卡片元素,使用CSS控制样式和翻转效果。HTML结构示例如下:

<div id="game-board" class="game-board"></div>

CSS样式设置

通过CSS实现卡片的翻转动画效果。关键点包括卡片尺寸、背面和正面的样式以及过渡效果:

js实现翻牌游戏

.card {
  width: 100px;
  height: 100px;
  position: relative;
  transform-style: preserve-3d;
  transition: transform 0.5s;
}

.card.flipped {
  transform: rotateY(180deg);
}

.card-face {
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
}

.card-front {
  background-color: #f0f0f0;
}

.card-back {
  background-color: #333;
  transform: rotateY(180deg);
}

JavaScript逻辑实现

初始化游戏板,创建卡片数组并随机排列。为每张卡片添加点击事件监听器:

const cards = ['A', 'B', 'C', 'D', 'E', 'F', 'A', 'B', 'C', 'D', 'E', 'F'];
let flippedCards = [];
let matchedPairs = 0;

function initGame() {
  const gameBoard = document.getElementById('game-board');
  const shuffledCards = shuffleArray([...cards]);

  shuffledCards.forEach((card, index) => {
    const cardElement = document.createElement('div');
    cardElement.classList.add('card');
    cardElement.dataset.value = card;
    cardElement.dataset.index = index;

    cardElement.innerHTML = `
      <div class="card-face card-front"></div>
      <div class="card-face card-back">${card}</div>
    `;

    cardElement.addEventListener('click', flipCard);
    gameBoard.appendChild(cardElement);
  });
}

function shuffleArray(array) {
  return array.sort(() => Math.random() - 0.5);
}

卡片翻转逻辑

处理卡片点击事件,控制同时翻转的卡片数量并检查匹配:

js实现翻牌游戏

function flipCard() {
  if (flippedCards.length < 2 && !this.classList.contains('flipped')) {
    this.classList.add('flipped');
    flippedCards.push(this);

    if (flippedCards.length === 2) {
      checkForMatch();
    }
  }
}

function checkForMatch() {
  const [card1, card2] = flippedCards;

  if (card1.dataset.value === card2.dataset.value) {
    matchedPairs++;
    flippedCards = [];

    if (matchedPairs === cards.length / 2) {
      setTimeout(() => alert('恭喜你赢了!'), 500);
    }
  } else {
    setTimeout(() => {
      card1.classList.remove('flipped');
      card2.classList.remove('flipped');
      flippedCards = [];
    }, 1000);
  }
}

游戏初始化

在页面加载时调用初始化函数开始游戏:

document.addEventListener('DOMContentLoaded', initGame);

扩展功能建议

增加计时器和计分系统提升游戏体验。使用setInterval实现计时功能,并在游戏结束时显示分数:

let time = 0;
let timerInterval;

function startTimer() {
  timerInterval = setInterval(() => {
    time++;
    document.getElementById('timer').textContent = time;
  }, 1000);
}

function stopTimer() {
  clearInterval(timerInterval);
}

初始化时调用startTimer(),游戏结束时调用stopTimer()

标签: 游戏js
分享给朋友:

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

h5翻牌游戏实现思路

h5翻牌游戏实现思路

翻牌游戏实现思路 游戏核心逻辑 翻牌游戏(Memory Game)的核心是通过匹配成对的卡片来消除它们。玩家每次翻开两张牌,若相同则消除,否则翻回背面。游戏目标是在最短时间内或最少步数内消除所有牌。…

vue实现猜拳游戏

vue实现猜拳游戏

实现猜拳游戏的基本思路 使用Vue实现猜拳游戏需要设计玩家与电脑的交互逻辑,包括选择手势、随机生成电脑手势、判断胜负以及显示结果。以下是具体实现方法。 创建Vue项目 使用Vue CLI或Vite初…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…