南方科技大学 CS109 2025秋季学期 Java 项目。这是一个基于 Java Swing 开发的中国象棋游戏,支持单机存档、复盘以及局域网联机对战。
运行 edu.sustech.xiangqi.XiangqiApplication 类的 main 方法即可启动游戏。
- 完整规则实现: 实现了中国象棋的所有标准规则,包括:
- 所有兵种(帅/将、仕/士、相/象、马、车、炮、兵/卒)的合法移动与吃子规则。
- 特殊规则支持:别马腿、塞象眼、不见将等。
- 游戏状态管理: 记录每一步走棋历史,
支持不支持悔棋(真男人从不回头看爆炸!),可以在棋局结束后复盘查看。
- 图形化界面: 使用 Java Swing 构建,包含精美的背景和棋子绘制。
- 响应式布局: 棋盘和控件支持窗口大小自适应调整。
- 交互体验:
- 控制面板: 提供重置、复盘、返回存档、投降等快捷操作。
- 状态显示: 实时显示当前回合方和游戏结果。
- 复盘模式: 可视化展示历史走棋记录,支持点击回溯。
- 自定义组件: 统一风格的圆角按钮、输入框,提升视觉体验。
- 账户管理: 支持用户注册、登录和登出。
- 安全存储: 用户密码使用 SHA-256 哈希算法加密存储。
- 游客模式: 支持免登录的游客模式(功能受限)。
- 本地持久化: 使用 SQLite 数据库存储游戏数据。
- 存档操作:
- 新建存档: 支持自定义存档名、描述,可选择先手方(红/黑/随机)。
- 管理存档: 支持查看存档列表、修改存档信息、删除存档。
- 加载游戏: 随时读取存档继续对局。
- 局域网联机: 基于 UDP 协议实现的局域网对战功能。
- 自动发现: 通过广播机制自动发现同一房间号的对手。
- 实时同步: 实时同步双方的走棋操作,保证对局一致性。
edu.sustech.xiangqi.model: 包含核心业务逻辑、棋子规则定义及数据库操作类。edu.sustech.xiangqi.ui: 包含所有图形界面实现、窗口、面板及自定义组件。edu.sustech.xiangqi.database: 存放 SQLite 数据库文件。edu.sustech.xiangqi.assets: 存放图片、字体等静态资源。
git管理- 棋盘信息和用户信息存储在
SQLite中,采用哈希算法保护用户密码数据 - 添加了移动音效,并且可以控制开/关
- 每个页面支持人性化的快捷键绑定如
- ArchiveManager:
↑/↓: 代替鼠标滚动功能。Enter: 进入选中的存档。Esc: 取消当前选中项。Delete: 删除选中的存档。
- 对话框 (Dialogs):
Enter: 确认/提交。Esc: 取消/关闭。
- ArchiveManager:
- 完整的用户注册、登录、密码修改、登出等功能;支持游客登录,游客登录可在程序未关闭时临时保存棋局,重开程序自动清空。欢迎界面显示用户名。
ArchiveManager美观的存档管理页面,有缩略图展示,棋局信息显示(本地、网络)是否已结束等等- 新建存档能选先后手或随机。
- 投降、复盘、选中棋子可到达、选中棋子可吃、上一步挪动的棋子与步骤,每操作一次数据自动存档
- 支持UDP协议下的局域网网络对战,该模式下棋盘根据用户翻转并且显示用户名
- 增加了每个页面可以随时返回上一级页面的功能
- 对登录、选择、棋盘界面进行了美化,如添加背景图片与修改字体,调整组件相对位置,棋盘可任意放大缩小而不变形,棋盘上增添卒/炮位标记、调整线段粗细
- 吃掉的对方棋子放置在棋盘上增强用户成就感