今天我們要介紹的是JavaScript五子棋游戲,這是一個很受歡迎的小游戲。它適合一些想要挑戰自己腦力的人來玩,也可以幫助一些想要學習JavaScript的人來了解JavaScript在實際應用中的運用。下面我們來詳細了解一下它的實現方法以及運行機制。
在五子棋游戲中,我們需要定義一個棋盤。棋盤通常是一個二維數組,在游戲的初始化階段被創建。下面的代碼用于創建一個棋盤:
// 初始化棋盤 var board = []; for (var i = 0; i < 15; i++) { board[i] = new Array(15); for (var j = 0; j < 15; j++) { board[i][j] = 0; } }
接下來,我們需要定義落子的過程。這個過程包括了判斷是否已經有棋子在該位置的狀態,如何記錄這個棋子等等。下面是代碼實現:
// 落子 function putChess(row, col, isBlack) { // 判斷該位置是否已經有棋子 if (board[row][col] !== 0) { return false; } // 記錄棋子狀態 board[row][col] = isBlack ? 1 : 2; return true; }
接下來,我們需要編寫一個游戲結束的函數。這個函數用于在棋盤上判斷是否出現“五子連珠”的勝利情況。下面是代碼實現:
// 判斷游戲結束 function isGameOver() { var horizontal = 0, vertical = 0, leftOblique = 0, rightOblique = 0; for (var i = 0; i < 15; i++) { for (var j = 0; j < 15; j++) { // 水平檢測 if (board[i][j] === board[i][j+1] && board[i][j] !== 0) { horizontal++; } else { horizontal = 0; } // 垂直檢測 if (board[j][i] === board[j+1][i] && board[j][i] !== 0) { vertical++; } else { vertical = 0; } // 左斜檢測 if (board[i][j] === board[i+1][j+1] && board[i][j] !== 0) { leftOblique++; } else { leftOblique = 0; } // 右斜檢測 if (board[i][j+1] === board[i+1][j] && board[i][j+1] !== 0) { rightOblique++; } else { rightOblique = 0; } // 如果已經有五子連珠,則游戲結束 if (horizontal === 4 || vertical === 4 || leftOblique === 4 || rightOblique === 4) { return true; } } } return false; // 如果所有方向都沒有五子連珠,游戲繼續 }
下面是完整的代碼實現:
var board = []; var isBlack = true; // 黑子先手 // 初始畫棋盤 function init() { var container = document.getElementById("container"); for (var i = 0; i < 15; i++) { board[i] = new Array(15); for (var j = 0; j < 15; j++) { var grid = document.createElement("div"); grid.className = "grid"; grid.dataset.row = i; grid.dataset.col = j; container.appendChild(grid); } } container.onclick = function(e) { var target = e.target; if (target.className.indexOf("grid") >= 0) { var row = parseInt(target.dataset.row); var col = parseInt(target.dataset.col); if (putChess(row, col, isBlack)) { var chess = document.createElement("div"); chess.className = isBlack ? "black" : "white"; target.parentNode.appendChild(chess); isBlack = !isBlack; if (isGameOver()) { alert("游戲結束"); } } } } } // 落子 function putChess(row, col, isBlack) { if (board[row][col] !== 0) { return false; } board[row][col] = isBlack ? 1 : 2; return true; } // 判斷游戲結束 function isGameOver() { var horizontal = 0, vertical = 0, leftOblique = 0, rightOblique = 0; for (var i = 0; i < 15; i++) { for (var j = 0; j < 15; j++) { // 水平檢測 if (board[i][j] === board[i][j+1] && board[i][j] !== 0) { horizontal++; } else { horizontal = 0; } // 垂直檢測 if (board[j][i] === board[j+1][i] && board[j][i] !== 0) { vertical++; } else { vertical = 0; } // 左斜檢測 if (board[i][j] === board[i+1][j+1] && board[i][j] !== 0) { leftOblique++; } else { leftOblique = 0; } // 右斜檢測 if (board[i][j+1] === board[i+1][j] && board[i][j+1] !== 0) { rightOblique++; } else { rightOblique = 0; } if (horizontal === 4 || vertical === 4 || leftOblique === 4 || rightOblique === 4) { return true; } } } return false; } // 初始化 init();
這樣,我們就完成了JavaScript五子棋游戲的編寫。希望大家可以通過這個例子學習到更多關于JavaScript的知識,在以后的編程過程中可以更加得心應手。
上一篇css文字對圖片居中
下一篇div 重疊問題