{"id":30111262,"url":"https://github.com/2ue/xzdd-counter","last_synced_at":"2025-08-10T05:33:40.852Z","repository":{"id":309014097,"uuid":"1034875716","full_name":"2ue/xzdd-counter","owner":"2ue","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-09T09:17:20.000Z","size":71,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-09T09:22:21.626Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2ue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-09T06:50:30.000Z","updated_at":"2025-08-09T09:17:23.000Z","dependencies_parsed_at":"2025-08-09T09:22:23.860Z","dependency_job_id":"0cc9ce98-8615-4199-b853-b551b20332c8","html_url":"https://github.com/2ue/xzdd-counter","commit_stats":null,"previous_names":["2ue/xzdd-counter"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/2ue/xzdd-counter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fxzdd-counter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fxzdd-counter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fxzdd-counter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fxzdd-counter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2ue","download_url":"https://codeload.github.com/2ue/xzdd-counter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fxzdd-counter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269682089,"owners_count":24458598,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-10T05:33:31.728Z","updated_at":"2025-08-10T05:33:40.840Z","avatar_url":"https://github.com/2ue.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 四川血战到底麻将计分器\n\n一个基于React + TypeScript + Tailwind CSS开发的四川血战到底麻将计分应用。\n\n## 功能特性\n\n### 🎯 核心功能\n- **玩家管理**: 添加、删除玩家，重置分数\n- **游戏设置**: 配置封顶番数和呼叫转移规则\n- **事件记录**: 记录胡牌和杠牌事件\n- **实时计分**: 自动计算并更新玩家分数\n- **历史记录**: 查看和删除历史事件\n- **本地存储**: 自动保存游戏状态到本地存储\n\n### 🀄 麻将规则支持\n\n#### 基础番型（只能选择一个）\n- **小胡**: 0番\n- **大对子**: 1番\n- **金钩钓**: 2番\n- **小七对**: 2番\n- **龙七对**: 3番\n- **清一色**: 2番\n\n#### 额外番型（可以叠加多个）\n- **杠上花**: 额外2番\n- **杠上炮**: 额外1番\n- **海底捞**: 额外1番\n\n#### 胡牌方式\n- **自摸**: +1分\n- **点炮**: 不加分\n\n#### 杠牌类型\n- **暗杠**: 每家2分\n- **巴杠**: 每家1分\n- **点杠**: 2分\n\n#### 封顶设置\n- 可配置几番封顶\n\n## 技术栈\n\n- **前端框架**: React 19 + TypeScript\n- **构建工具**: Vite 4.5.14\n- **样式框架**: Tailwind CSS 3.4.17\n- **UI组件**: Headless UI + Heroicons\n- **数据存储**: localStorage\n- **包管理**: pnpm\n\n## 快速开始\n\n### 安装依赖\n```bash\npnpm install\n```\n\n### 启动开发服务器\n```bash\npnpm dev\n```\n\n### 构建生产版本\n```bash\npnpm build\n```\n\n## 使用说明\n\n### 1. 添加玩家\n- 在\"玩家管理\"区域输入玩家姓名\n- 点击\"添加\"按钮或按回车键添加玩家\n- 可以删除玩家或重置所有分数\n\n### 2. 配置游戏设置\n- **几番封顶**: 设置最大番数限制，0表示不封顶\n- **呼叫转移**: 开启后杠钱归接杠上炮的玩家\n\n### 3. 记录牌局事件\n\n#### 胡牌事件\n1. 选择事件类型为\"胡牌\"\n2. 选择获胜者\n3. 选择失败者（可多选）\n4. 选择基础番型（必选一个）\n5. 选择额外番型（可选多个，可叠加）\n6. 选择胡牌方式（自摸/点炮）\n7. 查看番数预览确认计算正确\n8. 点击\"添加事件\"\n\n#### 杠牌事件\n1. 选择事件类型为\"杠牌\"\n2. 选择杠牌玩家\n3. 选择杠牌类型（暗杠/巴杠/点杠）\n4. 点击\"添加事件\"\n\n### 4. 查看统计\n- **分数统计**: 实时显示所有玩家分数排名\n- **事件历史**: 查看所有历史事件，可删除错误事件\n\n### 5. 数据管理\n- 所有数据自动保存到本地存储\n- 点击\"重置游戏\"可清空所有数据\n\n## 番型叠加示例\n\n### 示例1：清一色海底捞自摸\n- 基础番型：清一色（2番）\n- 额外番型：海底捞（额外1番）\n- 胡牌方式：自摸（+1分）\n- 最终得分：2番 + 1番 + 1分 = 4分\n\n### 示例2：龙七对海底捞杠上炮自摸\n- 基础番型：龙七对（3番）\n- 额外番型：海底捞（1番）+ 杠上炮（1番）\n- 胡牌方式：自摸（+1分）\n- 最终得分：3番 + 1番 + 1番 + 1分 = 6分\n\n## 计分规则详解\n\n### 胡牌得分计算\n- 基础番数 + 额外番数（可叠加） + 自摸加分（1分）\n- 超过封顶番数时按封顶番数计算\n\n### 杠牌得分计算\n- **暗杠**: 每家给杠牌玩家2分\n- **巴杠**: 每家给杠牌玩家1分  \n- **点杠**: 点杠玩家给杠牌玩家2分\n\n### 特殊规则\n- **呼叫转移**: 影响杠上炮的得分分配\n- **封顶**: 限制最大番数，防止分数过高\n\n## 项目结构\n\n```\nsrc/\n├── components/          # React组件\n│   ├── PlayerManager.tsx    # 玩家管理\n│   ├── SettingsManager.tsx  # 设置管理\n│   ├── EventAdder.tsx       # 事件添加\n│   ├── EventHistory.tsx     # 事件历史\n│   └── ScoreBoard.tsx       # 分数统计\n├── types/              # TypeScript类型定义\n│   └── mahjong.ts\n├── utils/              # 工具函数\n│   ├── mahjongCalculator.ts # 计分计算\n│   └── storage.ts           # 本地存储\n├── App.tsx             # 主应用组件\n└── main.tsx            # 应用入口\n```\n\n## 开发说明\n\n### 添加新的番型\n1. 在 `src/types/mahjong.ts` 中的 `BaseFanType` 或 `ExtraFanType` 枚举添加新番型\n2. 在 `src/utils/mahjongCalculator.ts` 中的对应分数映射添加分数\n3. 更新相关组件的番型选择列表\n\n### 修改计分规则\n- 编辑 `src/utils/mahjongCalculator.ts` 中的计分函数\n- 测试新的计分逻辑\n\n### 样式定制\n- 使用 Tailwind CSS 类名修改样式\n- 在 `src/index.css` 中添加自定义样式\n\n## 许可证\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2ue%2Fxzdd-counter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2ue%2Fxzdd-counter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2ue%2Fxzdd-counter/lists"}