多维数组可高效构建棋盘游戏,如3×3井字棋用二维数组存储状态,通过boardrow定位格子,封装placemark、checkwin、isboardfull等函数实现落子、判胜和平局;升级五子棋仅需改为15×15数组并调整连子数判定。

用多维数组构建简易棋盘游戏,核心是把棋盘看作一个二维表格,每个格子用 [行][列] 坐标定位,方便存状态、判胜负、做移动。
用二维数组表示棋盘
比如 3×3 的井字棋(Tic-Tac-Toe),直接声明一个 3 行 3 列的数组:
let board = [ [' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' '] ];
初始全为空格,玩家落子时改对应位置为 'X' 或 'O'。访问第 1 行第 2 列(从 0 开始计数)就写 board[0][1],直观又可靠。
封装常用操作函数
把重复逻辑抽成函数,让主流程干净:
-
placeMark(row, col, player):检查位置是否空,再赋值;返回
true表示成功 - checkWin(player):遍历所有行、列、两条对角线,看是否有连续三个相同标记
- isBoardFull():检查所有格子是否都不为空,判断平局
支持更复杂棋盘只需调整维度和规则
想升级成五子棋?把数组改成 15×15:
let goboard = Array(15).fill().map(() => Array(15).fill(null));
赢判定从“三连”改为“五连”,扫描逻辑稍扩展即可——仍是检查同一行/列/斜线上连续五个元素是否全等于当前玩家。不需要换数据结构,只改边界和条件。
加一点交互就可玩
在浏览器中,用 document.querySelector 找格子元素,点击触发 placeMark;每次落子后调用 checkWin 和 isBoardFull,及时弹出结果。控制台打印 board 数组,一眼看清当前局势,调试非常方便。











