document.addEventListener("DOMContentLoaded", function() {
var grid = document.querySelector(".grid");
var cells = grid.getElementsByClassName("cell");
var bombs = []; // 存儲炸彈位置
// 隨機生成炸彈位置
function generateBombs() {
while (bombs.length < 10) {
var randomCell = Math.floor(Math.random() * 100);
if (!bombs.includes(randomCell)) {
bombs.push(randomCell);
}
}
}
// 檢查是否為炸彈格子
function isBombCell(cellIndex) {
return bombs.includes(cellIndex);
}
// 計算相鄰格子的炸彈數量
function countAdjacentBombs(cellIndex) {
var adjacentIndices = [
cellIndex - 11, cellIndex - 10, cellIndex - 9,
cellIndex - 1, cellIndex + 1,
cellIndex + 9, cellIndex + 10, cellIndex + 11
];
var count = 0;
for (var i = 0; i < adjacentIndices.length; i++) {
if (adjacentIndices[i] >= 0 && adjacentIndices[i] < 100) {
if (isBombCell(adjacentIndices[i])) {
count++;
}
}
}
return count;
}
// 顯示格子的數字
function revealNumber(cellIndex) {
var cell = cells[cellIndex];
if (!cell.classList.contains("revealed")) {
cell.classList.add("revealed");
if (isBombCell(cellIndex)) {
cell.style.backgroundColor = "red";
} else {
var bombCount = countAdjacentBombs(cellIndex);
if (bombCount > 0) {
cell.textContent = bombCount;
}
}
}
}
// 點擊格子事件處理程序
function cellClickHandler() {
var cellIndex = Array.prototype.indexOf.call(cells, this);
revealNumber(cellIndex);
}
// 生成踩地雷遊戲
function generateGame() {
generateBombs();
for (var i = 0; i < cells.length; i++) {
cells[i].addEventListener("click", cellClickHandler);
}
}
generateGame();
});