四国军棋:轻量级在线军棋网站
TL;DR
四国军棋网站
背景
我们机房里人太多了军棋不够下了😭并且我在网上找了一圈,找不到能不用手机号登录的免费军棋网站,同时为了压榨我的 GPT,vibe-code 了这个项目。
最开始只是一个支持多人联机的军棋网页,后来陆续加上了账号、聊天、rating 系统、复盘,以及 bot。现在既可以和真人下,也可以和 bot 下,还可以观赏 bot 互殴。
项目地址:BitByBitG/siguo-junqi。
这是什么
一个基于 Node.js 和 Socket.IO 的四国军棋网页,打开浏览器就能玩,不需要安装客户端。
目前支持:
- 两人、三人、四人对局,四人可以选择对家结盟。
- 自由落座、离座和观战。
- Rating 与排行榜。
- 暗棋标记、上一手移动轨迹和战况记录。
- 对局结束后下载棋谱、进行明棋复盘。
- 自定义 BOT,通过 API 或网站托管程序参与对局。
页面有隐蔽模式,防止被教练抓走。
使用
网站地址:四国军棋。
注册账号并通过审核(如果审核慢可以联系我进行提醒)后,可以创建房间,也可以从首页进入别人创建的房间。房间有独立链接,可以直接发给朋友。
进入房间后选择方向落座,完成布阵并准备,由房主开始对局。不落座就是观战,正常观战看不到暗子的具体身份。
普通(Unrated)对局中,玩家离座后棋子会保留在原位,可以由其他人接替。Rated 对局的限制更严格,开局后不能换人,离开会按认输处理。
服务器重启后可以恢复已保存的房间。房间不会因为没人就自动关闭,需要房主或网站管理员手动关闭。
棋盘与对局
这个项目采用的是我平时习惯的铁路规则,可能与你玩过的版本有区别,建议开局前看一下首页的规则说明。
例如,中央保留九个铁路点,四角的弯道按连续直道处理;工兵可以沿铁路转弯,其他棋子沿规则允许的连续直道行进。两人或三人对局不能进入未参战方向的阵地。
下棋时可以右键对方的棋子,选择一个名称作为自己的猜测标记。这个标记只是辅助记忆,不代表系统确认了棋子的身份。
每次走子后,棋盘会显示白色轨迹。也可以看右侧的 log 得知上一步走了什么。
棋谱与复盘
对局开始后,服务器会记录开局阵型、走子、交战结果和棋盘变化。
结束后可以:
- 下载 JSON 格式的完整棋谱。
- 从开局开始逐步前进、后退,查看明棋复盘。
对局尚未结束时,不能通过复盘接口查看暗子。关闭房间后,服务器保存的该局棋谱也会删除,需要保留的话记得先下载。
自己写一个 BOT
BOT 使用独立的账号类型。登录 BOT 工作台后,可以粘贴 JavaScript 程序,由网站服务器运行;也可以自己运行程序,通过 HTTP API 提交操作。
可参考 API 文档
欢迎写自己的策略来试试。目前配套 BOT 还在调整,并不是很成熟,也没有经过严格的棋力评测。
聊天
首页和房间内都有聊天框,支持 Markdown、LaTeX 公式和图片链接,也支持 @用户名。浏览器允许通知、且用户打开提醒后,被提及时会收到通知。
聊天区域可以放大到整个浏览器窗口。当前只保留最近 80 条消息,不适合当作长期资料存档使用。
部署
代码在 GitHub 仓库,可以下载后自行部署。
安装项目所需的 Node.js 环境,在项目目录执行:
npm ci
npm start
默认使用 3000 端口。账号、BOT 程序和房间存档需要另外备份,更新代码时不要把这些数据一起删掉。具体配置可以参考仓库里的说明。
反馈
项目还在持续修改,可能会遇到一些没有考虑到的情况。如果发现问题,可以到 GitHub 提交 Issue,最好附上复现步骤、截图,以及当时是几人对局、有没有 BOT,方便定位。或者直接 QQ 跟我说也行。
QQ 交流群:630238775。
欢迎来下棋、写 BOT。欢迎给项目点个 star 喵。欢迎给我买服务器喵。