
项目说明
局域网掼蛋 (LAN GuanDan)
一个基于 Node.js, React 和 Socket.IO 开发的局域网联机掼蛋游戏。支持单文件打包运行,开箱即用。
✨ 特色功能 (Features)
🎮 核心体验
*
局域网联机:无需外网,同一个 Wi-Fi 下即可畅玩。
*
智能 AI 托管:人数不足时,智能 Bot 自动补位;支持中途断线重连。
*
完整对局系统 (Match System):
* 从
2 打到 A 的完整对局流程,自动管理多局游戏。
* 每局结束后
自动开始下一局(3秒倒计时)。
* 对局结束条件:某队达到 A 级别并
连胜2次。
*
完整规则实现:
* 支持
进贡/还贡(包括双扣双贡、单扣单贡)。
* 支持
抗贡(双大王在手免贡)。
* 支持
接风(进贡最大者下轮先手)。
* 支持
升级(从 2 打到 A,双扣升3级,单扣升2级,保级升1级)。
* 支持
同花顺(且规则设定为同花顺 > 所有普通炸弹)。
*
红心级牌万能牌 (Wild Card):
* 红心级牌可作为万能牌使用。
* 选牌时自动识别所有可能的牌型组合。
* 多种可能时弹出选择界面,由玩家决定。
🎯 技能掼蛋模式 (Skill Mode)
*
技能卡系统:每局开始时每位玩家随机获得
2张技能卡。
*
5种技能卡:
*
无中生有:获得2张随机牌。
*
顺手牵羊:从目标玩家随机获得1张牌。
*
过河拆桥:让目标玩家随机弃1张牌。
*
乐不思蜀:让目标玩家下回合跳过(无法出牌和使用技能)。
*
五谷丰登:所有未出完的玩家各获得1张随机牌。
*
使用规则:
* 只能在自己的回合使用技能。
* 每张技能卡只能使用一次。
* 使用技能后仍可正常出牌。
* 新获得的牌会短暂高亮显示。
*
智能 Bot:Bot 会根据局势智能使用技能卡。
🖥️ 界面与交互
*
摸鱼模式 (Stealth Mode):
* 按
i 键一键切换至
伪装 VS Code 界面,完美融入办公环境。
* 游戏背景采用深色 IDE 风格,低调不刺眼。
*
智能理牌 (Smart Sort):
* 提供
"同花顺视图"(2D Stack View):将同点数牌纵向堆叠,横向按花色严格对齐,
同花顺高亮显示,一目了然。
* 支持一键切换回普通视图(按点数排序)。
*
出牌提示:AI 辅助计算最优牌型,新手也能轻松上手。
*
自由选座:游戏开始前点击空座位即可换座。
*
房间聊天:
* 内置实时聊天框,支持文字和 Emoji。
* 聊天消息以气泡形式显示在玩家头像上方(5秒后自动消失)。
* Bot 也会根据游戏情况发送 Emoji 表情。
*
房间列表:查看所有活跃房间,快速加入游戏。
*
房主控制:房主可强制结束对局,切换游戏模式(普通/技能)。
🚀 快速开始 (Quick Start)
方式 1: 直接运行 (Windows 本地)
1. 下载最新的
guandan-game.exe。
2. 双击运行。
3. 游戏会自动启动服务器(默认端口 3000)。
4.
房主:在浏览器打开
或本机 IP 地址。
5.
其他玩家:在浏览器输入房主的局域网 IP 地址(如
)加入游戏。
方式 2: 服务器部署 (推荐用于多人联机)
使用 Docker (最简单,无需本地 npm)
> 💡 优势:使用多阶段构建,构建过程完全在 Docker 容器内完成,主机无需安装 Node.js 和 npm,不会污染本地环境。
使用 PM2 (传统方式)
📖 完整部署指南: 参见 DEPLOYMENT.md
方式 3: 开发运行
📖 游戏规则 (Rules)
基础规则
*
牌型大小:四大天王 > 同花顺 > 6+张炸弹 > 5张炸弹 > 4张炸弹 > 其他牌型。
*
级牌 (Level Card):当前打的等级牌(如打2时的所有2)为级牌。
*
红心级牌 (Wild Card):红心级牌(如打2时的红桃2)为
万能牌,可代替任意牌。
*
双扣:同队两人分别获得第1、2名。下局升3级,对方进贡两张。
*
单扣:同队分别获得第1、3名。下局升2级,末游向头游进贡一张。
*
保级:同队分别获得第1、4名。下局升1级,末游向头游进贡一张。
对局流程
1.
开始对局:房主选择游戏模式(普通/技能)并开始游戏。
2.
多局游戏:从 2 级开始,每局结束后根据胜负自动升级。
3.
对局结束:某队达到 A 级别并连胜2次,宣布对局获胜。
4.
返回大厅:对局结束后所有玩家返回房间大厅。
技能模式特殊规则
* 每局开始时每位玩家随机获得2张技能卡。
* 技能卡只能在自己的回合使用,每张只能用一次。
* 使用技能后仍可正常出牌。
* 新获得的牌(通过技能)会高亮显示2秒。
🛠️ 技术栈 (Tech Stack)
*
Frontend: React, Tailwind CSS (v3), Vite
*
Backend: Node.js, Express, Socket.IO
*
Language: TypeScript
*
Packaging: pkg
*
Deployment: Docker, PM2
🏗️ 架构设计
Match-Game 双层架构
技能系统设计
*
95%+ 代码共享:普通模式和技能模式共享所有核心游戏逻辑。
*
插件式架构:技能系统作为可选模块叠加在核心逻辑之上。
*
生命周期管理:游戏实例具有完整的生命周期(创建、运行、销毁),防止旧游戏状态污染新游戏。
*
状态隔离:每局游戏独立管理状态,通过
destroy() 方法清理所有资源。
📝 更新日志
*
v2.0 (2026-01):
* ✨ 新增
技能掼蛋模式,包含5种技能卡。
* 🏗️ 重构为
Match-Game 双层架构,支持完整对局系统。
* 🎯 实现
红心级牌万能牌功能,支持多牌型选择。
* 💬 新增
Emoji 聊天和
气泡显示。
* 🏠 新增
房间列表功能,快速查看和加入游戏。
* 🔧 重构技能系统架构,修复状态同步和生命周期管理问题。
* 🤖 增强 Bot AI,支持技能卡智能使用和 Emoji 互动。
*
v1.2: 新增"摸鱼模式" (Boss Key),优化同花顺视图(紧凑无缝布局)。
*
v1.1: 修复 Bot 炸弹逻辑,调整同花顺权重,增加断线重连功能。
*
v1.0: 基础功能上线。
🐛 已知问题与解决方案
技能模式问题(已修复 v2.0)
✅ 修复游戏结束后技能效果仍然生效的问题✅ 修复新旧游戏状态冲突导致的"突然被塞牌"问题✅ 修复 setTimeout 未清理导致的回合混乱✅ 修复新卡片高亮丢失的问题✅ 修复"五谷丰登"对已出完玩家生效的问题🤝 贡献 (Contributing)
欢迎提交 Issue 和 Pull Request!
📄 许可证 (License)
MIT License
---
*Enjoy your game! 🎮*
技术栈
开发语言:未知
项目类型:局域网联机掼蛋游戏(Node.js+React)
Star 数:0
功能特点
这是一套局域网联机掼蛋游戏(Node.js+React),代码结构清晰,适合开发者学习棋牌游戏的服务端与客户端开发。项目涵盖了棋牌游戏的核心玩法逻辑、网络通信、用户管理、房间匹配等模块,对理解棋牌类游戏的完整开发流程具有较高的参考价值。
从技术实现角度看,棋牌类项目的难点在于:游戏逻辑的状态机设计、并发房间管理、牌型算法、以及服务端与客户端的协议同步。本项目在这些方面提供了可运行的实现,开发者可以在此基础上进行二次开发或学习研究。
部署说明
1. 下载源码压缩包,解压到本地开发环境。
2. 根据项目类型准备对应的运行环境(Node.js / Go / C++ / Java 等)。
3. 按照 README 中的步骤配置依赖、数据库和配置文件。
4. 先启动服务端,再启动客户端,即可进入游戏进行测试。
注意:本项目仅供学习研究使用,请勿用于商业或非法用途。
学习价值
对于想进入棋牌游戏开发领域的开发者来说,这套源码是一个很好的入门参考。通过阅读代码,可以学习到棋牌游戏的核心玩法实现、网络协议设计、房间与匹配机制、以及游戏状态管理等关键技术点。
同时,项目中的代码组织方式和模块划分,也展示了棋牌类项目在工程化方面的实践经验,值得开发者深入研究和借鉴。理解一个完整棋牌项目的架构,对后续开发其他实时对战类游戏也很有帮助。
免责声明
本资源来源于开源社区,仅供学习研究和技术交流使用,请勿用于任何商业或违法违规用途。使用本项目产生的一切后果由使用者自行承担。若涉及第三方权益,请联系删除。