Skip to content

boathell/jiaogonglaing-games

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

交公粮 (Jiaogongliang)

一个基于 JavaScript 的传统中国卡牌游戏,支持 AI 对战和本地多人游戏。

🎮 游戏简介

"交公粮"是一种经典的中国纸牌游戏,玩法类似于"斗地主",具有独特的地方规则和策略性。本项目提供完整的浏览器端游戏体验,支持智能 AI 对手。

✨ 特性

  • 🤖 智能 AI 对手 - 基于策略的 AI 决策系统
  • 👥 多人支持 - 本地多人游戏模式
  • 🎴 完整卡牌系统 - 支持各种牌型和规则判断
  • 📱 响应式设计 - 适配桌面和移动设备
  • 🔊 音效反馈 - 沉浸式游戏体验

🚀 快速开始

在线试玩

访问 GitHub Pages 链接即可开始游戏: https://boathell.github.io/jiaogonglaing-games

本地运行

# 克隆仓库
git clone https://github.com/boathell/jiaogonglaing-games.git
cd jiaogonglaing-games

# 启动本地服务器
python3 -m http.server 8000

# 打开浏览器访问
open http://localhost:8000/index.html

🛠️ 技术栈

  • 前端: 原生 HTML5 + CSS3 + JavaScript (ES6+)
  • 测试: Jest + jsdom
  • 构建: 原生模块化架构,无需复杂构建工具

📁 项目结构

jiaogonglaing-games/
├── index.html              # 游戏主入口
├── css/
│   └── style-new.css       # 游戏样式
├── js/
│   ├── main-new.js         # 主程序入口
│   ├── GameEngine.js       # 游戏引擎核心
│   ├── AIManager.js        # AI 管理模块
│   ├── UIManager-new.js    # UI 管理模块
│   ├── CardManager.js      # 卡牌管理模块
│   ├── EventBus.js         # 事件总线
│   └── models/             # 数据模型
│       ├── Card.js
│       ├── Player.js
│       └── GameState.js
├── tests/                  # 单元测试
├── .gitleaks.toml          # 敏感信息扫描配置
├── .pre-commit-config.yaml # 代码提交前检查
└── SECURITY.md             # 安全指南

🧪 测试

# 安装依赖
npm install

# 运行测试
npm test

# 监视模式
npx jest --watch

🛡️ 安全措施

本项目配置了多层安全保护:

  • Gitleaks - 检测 API 密钥、密码等敏感信息
  • Pre-commit Hooks - 提交前自动安全检查
  • Git Ignore - 防止敏感文件误提交

安装安全钩子:

./install-security-hooks.sh

📝 游戏规则

交公粮是流行于河南西南部的传统扑克牌游戏,与斗地主有相似之处,但规则独特。

基础规则

  1. 参与人数: 三人游戏(一名真人玩家 + 两名电脑玩家)
  2. 使用牌具: 一副扑克牌(54张,含大小王)
  3. 发牌: 系统随机发给三名玩家各 18张牌
  4. 出牌: 轮流出牌,第一局随机决定谁先出牌
  5. 获胜: 最先出完手中所有牌的玩家获胜

牌型说明

牌型 说明 示例
单张 任意一张牌 ♠3、♥A、大王
对子 两张相同点数的牌 ♠3♥3、大小王(最大对子)
三张 三张相同点数的牌 ♠3♥3♣3

⚠️ 重要限制:

  • 不能出顺子(如 3-4-5-6-7)
  • 不能出连对(如 33-44-55)
  • 不能出三带一/三带二
  • 没有炸弹概念(四张相同点数只是普通牌型,不能压制其他牌)

牌型大小

  • 单张: 大王 > 小王 > 2 > A > K > Q > J > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3(3最小)
  • 对子: 按点数比较,大小王组成的对子最大
  • 三张: 按点数比较,222最大,333最小
  • 规则: 相同牌型才能比较大小,不同牌型不能互相压制

跟牌规则

  • 后出牌者必须出与前一家相同牌型且更大的牌,或者选择「不出」
  • 当两家都选择「不出」时,由最后出牌的玩家继续先出牌
  • 第一个人出完牌获胜后,剩下两人谁能压住最后出的牌型,就可以继续出牌;否则由下家顺风出牌

交粮规则(核心特色)

  1. 交粮: 每局结束后,输家需在下一局开始时将手中最大的牌交给赢家
  2. 还粮: 赢家收到「公粮」后,需返还一张较小的牌给输家:
    • 电脑玩家: 自动选择手中最小的单牌作为还粮
    • 真人玩家: 手动从手牌中选择一张牌作为还粮
  3. 出牌顺序: 交粮完成后,由输家先出牌
  4. 免交条件:
    • 输家起到四张同数的牌或大小王,无需交粮,由赢家先出牌
    • 输家手中最大的牌是 K,无需交粮,由赢家先出牌

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开 Pull Request

📄 许可证

MIT License - 详见 LICENSE 文件

🙏 致谢

  • 游戏规则参考传统中国民间玩法
  • AI 算法基于启发式策略

Made with ❤️ by boathell

About

交公粮游戏 - 基于JavaScript的卡牌游戏

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors