iT邦幫忙

2025 iThome 鐵人賽

0

Day 27
主題:Bug修正 — 測試所有流程並修復問題

今日目標
今天專注於遊戲品質保證,全面檢查所有功能並修正錯誤,確保遊戲流程穩定無誤。

主要目標:

  1. 測試遊戲所有流程 — 從開始、翻牌、配對、計分到結束。
  2. 修正常見 Bug — 包括快速連點、多點觸控、狀態異常、分數錯誤等。
  3. 優化使用者體驗 — 避免任何操作導致遊戲中斷或異常。

學習與操作重點

  1. 快速連點問題
    使用 lockBoard 鎖定翻牌過程,避免玩家在動畫進行中快速點擊造成錯誤。

  2. 多點觸控問題
    在手機/平板測試時,確保同時觸碰多個卡片不會觸發錯誤行為。

  3. 狀態異常修正
    確保 gameState 在各個流程中正確切換,避免翻牌或計分在遊戲尚未開始或已結束時被觸發。

  4. 分數與翻牌次數檢查
    驗證翻牌次數與分數計算正確,避免累加錯誤或漏加分。

  5. 瀏覽器相容性測試
    在不同瀏覽器及裝置測試,確保 CSS 動畫、觸控操作和音效皆正常。

程式檢查與修正示範

function flipCard(event) {
  const card = event.currentTarget;

  // 修正多種狀態問題
  if (lockBoard || gameState !== "playing" || card.classList.contains("flip")) return;

  card.classList.add("flip");
  flippedCards.push(card);
  flipCount++;
  updateScoreboard();

  flipSound.currentTime = 0;
  flipSound.play();

  if (flippedCards.length === 2) checkMatch();
}

function checkMatch() {
  lockBoard = true;
  const [card1, card2] = flippedCards;
  const isMatch = card1.querySelector(".back").textContent === card2.querySelector(".back").textContent;

  if (isMatch) {
    matchedPairs++;
    matchSound.currentTime = 0;
    matchSound.play();
  } else {
    failSound.currentTime = 0;
    failSound.play();
  }

  setTimeout(() => {
    if (!isMatch) {
      card1.classList.remove("flip");
      card2.classList.remove("flip");
    }
    flippedCards = [];
    lockBoard = false;
    checkGameEnd();
  }, 1000);
}

今日成果
✅ 全面測試遊戲流程,發現並修復各種操作 bug。
✅ 確保快速點擊、觸控、分數計算等邏輯正確無誤。
✅ 遊戲穩定性提升,玩家體驗更順暢、安全。


上一篇
Day 26 | 音效整合
下一篇
Day 28 | UI細節
系列文
30天打造純前端互動小遊戲網站30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言