二维数组实现棋盘游戏的核心是用boardrow映射位置,以整数常量(如empty=0、black=1、white=2)表示状态;初始化全设为empty;落子前校验边界与空位;胜负判断仅扫描当前点四方向连续同色子;可视化用字符打印便于调试。

用二维数组实现棋盘游戏,核心在于把棋盘映射为 board[row][col] 的索引结构,每个元素存状态(如空位、黑子、白子),再围绕落子、胜负判断、边界检查等逻辑展开。
初始化棋盘并统一表示状态
定义一个固定大小的二维数组,比如 8×8 的国际象棋或 15×15 的五子棋。用整数或枚举值代表不同状态,避免直接用字符串比较:
- 推荐用常量区分:如
EMPTY = 0、BLACK = 1、WHITE = 2 - 初始化时用循环把所有元素设为
EMPTY,确保起点干净 - 声明时建议使用
int[][] board = new int[15][15];,比Object或包装类更轻量
安全落子:先校验,再赋值
用户输入坐标后,不能直接写入数组——越界或已有子都会导致逻辑错误:
- 检查行列是否在
[0, size)范围内(注意是左闭右开) - 确认目标位置值为
EMPTY,否则提示“该位置已有棋子” - 通过
board[row][col] = currentPlayer;完成落子,随后切换玩家
判断胜负:扫描四个方向的连续相同棋子
以五子棋为例,每次落子后,只需检查该点所在行、列、两条对角线是否出现 ≥5 个连续同色棋子:
- 定义四个方向向量:
{0,1}(横)、{1,0}(竖)、{1,1}(主对角)、{1,-1}(副对角) - 对每个方向,分别向正负两个延伸方向计数,加起来 ≥5 即胜
- 避免重复扫描全盘,只聚焦当前落子点周边,效率更高
可视化与调试:简单打印棋盘状态
开发阶段不用图形界面,用字符直观呈现棋盘有助于快速验证逻辑:
- 遍历数组,遇到
EMPTY打印".",BLACK打印"●",WHITE打印"○" - 每行末换行,列之间加空格提升可读性
- 可在关键步骤后调用打印方法,比如落子后、胜负判定前
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











