Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

四国军棋网页版

一个供 2~4 名真人联机游玩的四国军棋网页。游戏通过房间码连接,不包含 AI 玩家。

服务端统一保存棋局并判断移动、战斗和胜负;未公开的敌方棋子不会发送真实棋子类型给其他玩家。

功能

  • 支持 2 人、3 人和 4 人房间。
  • 2 人使用南、北两个相对阵营。
  • 3 人使用北、东、南三个阵营。
  • 4 人支持自由混战,以及南北对东西的联盟模式。
  • 支持随机布阵、手动交换棋子、准备、开局和断线重连。
  • 提供隐蔽模式:界面使用灰色、棕色、深绿色和深蓝色,暗棋背面不显示文字。
  • 房间和棋局保存在内存中,服务器重启后会清空。

环境要求

  • Node.js 18 或更高版本
  • npm

Windows 用户建议在 WSL 中运行。项目放在 WSL 自己的目录中通常比 /mnt/c/mnt/d/mnt/e 等 Windows 挂载盘安装依赖更快,例如:

mkdir -p ~/projects
cp -r /mnt/e/siguo-junqi ~/projects/
cd ~/projects/siguo-junqi

安装与启动

首次下载,或 package-lock.json 发生变化后安装依赖:

npm ci

启动服务器:

npm start

然后打开 http://localhost:3000。停止服务器按 Ctrl+C

依赖只需在项目中安装一次,不需要每次启动都重新下载。不要把 Express、Socket.IO 等项目依赖全局安装;保留 node_modules 后,之后直接执行 npm start 即可。

如果没有 package-lock.json,才使用:

npm install

让朋友加入

可以使用 VS Code 的端口转发功能:

  1. 在 WSL 中打开项目并执行 npm start
  2. 打开 VS Code 的“端口(Ports)”面板。
  3. 转发端口 3000
  4. 将端口可见性设置为 Public
  5. 把生成的 HTTPS 地址发给其他玩家。
  6. 房主创建房间,把房间码发给其他玩家。

联机期间,WSL 中的服务器进程和 VS Code 都需要保持运行。

棋盘与铁路规则

  • 每方第一行、第五行是横向铁路。
  • 每方第一列、第五列从第一行到第五行是纵向铁路。
  • 第六行不接铁路,只通过普通道路连接第五行。
  • 每方第三行第三列是中央行营,只接公路,不接铁路。
  • 棋盘正中央保留 3×3 共九个铁路点,九点内部的三行、三列分别直接相连。
  • 每方只有第一行的第 1、3、5 列接入中央九点,第 2、4 列不接中央。
  • 相对玩家的三条中央铁路贯通,普通棋子可以沿同一条直线通过中央攻击对面,但不能在中央转弯。
  • 工兵可以沿连通铁路行进,并在中央九点转弯。
  • 每方左侧纵向铁路通过一个角部弯道,连接左侧相邻玩家的下侧铁路。该弯道在规则上视作一条连续直道,普通棋子也可沿线通过。
  • 铁路途中有棋子阻挡时,任何棋子都不能越过。

其他主要规则

  • 地雷和军旗不能移动。
  • 军旗必须放在大本营;地雷只能放在最后两行;炸弹不能放在第一行。
  • 大本营中的棋子不能移动。
  • 行营中的棋子不能被攻击。
  • 工兵可以排雷;炸弹与对方棋子同归于尽;相同等级的棋子同归于尽。
  • 司令阵亡后,该阵营的军旗会公开。

测试

npm test

可打开 http://localhost:3000/health 检查服务器;正常时会返回包含 "ok": true 的 JSON。

项目结构

public/               浏览器界面、样式和交互
server/server.js      房间、联机和对局流程
server/game.js        棋盘、移动和战斗规则
test/                 规则与多人联机测试
package.json          启动命令和依赖

常见问题

npm 安装长时间没有变化

首次安装可能需要几分钟。若项目位于 /mnt/e 等 Windows 磁盘,先移动到 ~/projects 再执行 npm ci。不要在安装过程中重复运行多个 npm 命令。

出现 Express 源码语法错误

通常表示 node_modules 下载不完整或文件损坏。删除项目内的 node_modules 后重新执行 npm ci。这只会重新安装依赖,不会删除游戏代码。

其他玩家打不开转发地址

确认服务器仍在运行、转发的是 3000 端口,并且端口可见性为 Public

About

Four-country military chess.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages