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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录