LanPoker
本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。
项目简介
LanPoker 是一个基于 Node.js + Socket.IO 的局域网斗地主游戏,专为无外网环境设计:一台手机开热点并作为服务器,其余设备连入同一 Wi-Fi 即可在浏览器里三人联机斗地主。游戏实现完整的斗地主规则与多种牌型判定,并支持断线重连。
技术栈
| 维度 | 技术 |
|---|---|
| 主要语言/框架 | Node.js(服务端)+ 原生 HTML / CSS / JavaScript(客户端) |
| 关键依赖/库 | express ^4.18.2、socket.io ^4.6.1(见 package.json) |
| 数据存储 | 内存(无持久化数据库,房间状态保存在服务端) |
| 运行/部署方式 | npm install 后 npm start 启动 Node 服务(默认端口 3000);可运行于电脑或 Android Termux |
核心功能 / 亮点
- 完整斗地主规则:发牌(每人 17 张 + 3 张底牌)、叫地主、出牌与压牌流程,由
server/game/Game.js控制。 - 多种牌型识别:
server/game/Patterns.js支持单/对/三/三带一/三带二/顺子/连对/飞机(带单或带对)/四带二/炸弹/王炸,并规定顺子、连对不含 2 和王。 - 扑克牌与牌组:
server/game/Card.js、Deck.js负责单牌表示与洗牌发牌。 - 3 人在线联机:
server/socket/socketHandler.js通过 Socket.IO 做实时状态同步,三人同房间号自动开局。 - 实时游戏状态同步:出牌、要不起、胜负均经 WebSocket 下发到各客户端(
public/js/app.js)。 - 移动端优化界面:
public/css/style.css针对手机屏幕布局。 - 断线重连机制:服务端按房间保留状态,客户端可重新连接恢复对局。
- 无需外网:纯局域网运行,主要使用场景为手机热点组网(Termux 部署)。
目录结构
1 | LanPoker/ |
相关链接
- GitHub 仓库:LanPoker