当前位置:首页 > JavaScript

js实现翻牌游戏

2026-02-03 06:57:16JavaScript

js实现翻牌游戏

js实现翻牌游戏

翻牌游戏的基本实现思路

翻牌游戏通常涉及一组卡片,玩家需要翻开两张卡片,如果匹配则保留翻开状态,否则翻回背面。以下是使用JavaScript实现翻牌游戏的核心步骤:

创建HTML结构

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

添加CSS样式

.game-board {
  display: grid;
  grid-template-columns: repeat(4, 100px);
  gap: 10px;
}

.card {
  width: 100px;
  height: 100px;
  background-color: #ccc;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 24px;
  cursor: pointer;
  transition: transform 0.3s;
}

.card.flipped {
  transform: rotateY(180deg);
  background-color: white;
}

JavaScript核心逻辑

document.addEventListener('DOMContentLoaded', () => {
  const cards = ['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D'];
  let flippedCards = [];
  let matchedPairs = 0;

  // 洗牌函数
  function shuffleArray(array) {
    return array.sort(() => Math.random() - 0.5);
  }

  // 初始化游戏板
  function initGame() {
    const gameBoard = document.getElementById('game-board');
    gameBoard.innerHTML = '';
    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.addEventListener('click', flipCard);
      gameBoard.appendChild(cardElement);
    });
  }

  // 翻牌函数
  function flipCard() {
    if (flippedCards.length < 2 && !this.classList.contains('flipped')) {
      this.classList.add('flipped');
      this.textContent = this.dataset.value;
      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');
        card1.textContent = '';
        card2.textContent = '';
        flippedCards = [];
      }, 1000);
    }
  }

  initGame();
});

功能扩展建议

  1. 计时功能:添加游戏计时器,记录玩家完成游戏所用时间
  2. 计步功能:统计玩家翻牌的次数
  3. 难度选择:提供不同大小的游戏板(4x4、6x6等)
  4. 动画效果:为卡片翻转添加更流畅的动画
  5. 音效:为翻牌和匹配成功添加音效反馈

性能优化考虑

  1. 使用事件委托代替为每张卡片单独添加事件监听
  2. 避免频繁的DOM操作,可以缓存DOM元素
  3. 对于大型游戏板,考虑虚拟滚动技术

以上代码提供了翻牌游戏的基本实现框架,可以根据具体需求进一步扩展和完善功能。

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

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…