JavaScript五子棋游戏:从零开始编写
JavaScript五子棋游戏:从零开始编写
想学习如何使用JavaScript编写五子棋游戏吗?这篇文章提供了一个简单易懂的教程,带你一步步实现一个功能完整的五子棋游戏。
1. 创建棋盘
首先,我们需要创建一个15x15的棋盘。使用二维数组可以轻松表示棋盘,每个元素代表一个棋盘格,初始值为'-'表示为空。javascriptconst board = [];const size = 15;
for (let i = 0; i < size; i++) { board[i] = []; for (let j = 0; j < size; j++) { board[i][j] = '-'; }}
2. 检查是否获胜
每次落子后,我们需要检查是否形成五子连线。检查方法是从当前位置出发,沿水平、垂直、两个对角线方向搜索,判断是否有连续五个相同的棋子。javascriptfunction checkWin(row, col, player) { const directions = [ [0, 1], [1, 0], [1, 1], [1, -1] // 水平、垂直、对角线方向 ];
for (let i = 0; i < directions.length; i++) { const [dx, dy] = directions[i]; let count = 1;
let j = 1; while ( row + j * dx >= 0 && row + j * dx < size && col + j * dy >= 0 && col + j * dy < size && board[row + j * dx][col + j * dy] === player ) { count++; j++; }
j = 1; while ( row - j * dx >= 0 && row - j * dx < size && col - j * dy >= 0 && col - j * dy < size && board[row - j * dx][col - j * dy] === player ) { count++; j++; }
if (count >= 5) { return true; } }
return false;}
3. 落子逻辑
落子时,首先要判断落子位置是否合法(在棋盘范围内且为空格)。如果合法,则将该位置设置为当前玩家的棋子,并检查是否获胜。javascriptfunction makeMove(row, col, player) { if (row < 0 || row >= size || col < 0 || col >= size || board[row][col] !== '-') { return false; }
board[row][col] = player;
if (checkWin(row, col, player)) { console.log(Player ${player} wins!); return true; }
return false;}
4. 打印棋盘
为了方便查看游戏进程,我们需要将棋盘打印到控制台。javascriptfunction printBoard() { for (let i = 0; i < size; i++) { console.log(board[i].join(' ')); }}
5. 人机对战
为了增加游戏的趣味性,我们可以实现一个简单的人机对战功能。玩家下棋时,输入行号和列号;机器玩家随机选择一个合法位置落子。javascriptfunction playGame() { let currentPlayer = 'X'; let isGameOver = false;
while (!isGameOver) { if (currentPlayer === 'X') { // 人类玩家输入坐标 const row = prompt('请输入行号 (0-14):'); const col = prompt('请输入列号 (0-14):');
if (makeMove(row, col, currentPlayer)) { isGameOver = true; } } else { // 机器玩家随机下棋 let row, col; do { row = Math.floor(Math.random() * size); col = Math.floor(Math.random() * size); } while (!makeMove(row, col, currentPlayer)); }
printBoard(); currentPlayer = currentPlayer === 'X' ? 'O' : 'X'; }}
// 开始游戏playGame();
总结
至此,我们已经完成了一个简单的控制台五子棋游戏。你可以根据自己的需求,例如添加图形界面、改进机器玩家算法等,来进一步扩展游戏功能。
原文地址: https://www.cveoy.top/t/topic/b0i1 著作权归作者所有。请勿转载和采集!