LanPoker · 项目介绍

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
2
3
4
5
6
7
8
9
10
11
12
LanPoker/
├── server/ # 服务端
│ ├── index.js # 服务器入口(Express + Socket.IO)
│ ├── game/ # 游戏逻辑:Card.js / Deck.js / Patterns.js / Game.js
│ └── socket/ # 通信:socketHandler.js
├── public/ # 客户端
│ ├── index.html # 游戏界面
│ ├── css/style.css # 移动端样式
│ └── js/app.js # 客户端逻辑
├── test/ # 测试
├── package.json # 依赖 express / socket.io,scripts: start/dev
└── README.md

相关链接