科科打牌记分器
一个简洁的移动端打牌(3–6 人)记分工具,纯前端单页应用,无需后端,支持离线使用。

功能特性
- 3–6 位玩家:统一深色头像底板,可使用 emoji、字母或一两个中文作为身份标记
- 滚轮输入分数:每人通过拖动滚轮选择本轮得分(人数越多,可选范围越大)
- 自动补全:当只剩 1 位玩家未拨分时,自动计算最后一人的分数(确保总和为 0)
- 分数校验:提交前检查所有玩家分数之和是否为 0,否则给出提示
- 历史记录:固定列宽展示每轮得分;只有真正解锁稀有称号时才额外标记,默认显示最近 5 轮
- 撤销:可撤销最近一轮的提交
- 牌桌菜单:放在历史记录之后,收纳音效、动效、新局和帮助,不干扰炸弹与提交操作
- 身份编辑:点击头像进入个人战报,再从资料卡直接编辑身份标记
- 本地持久化:游戏状态存储于
localStorage,刷新后恢复
- 原位结算播报:金币不显示辅助线,直接沿曲线从输家流向赢家;离开时分数向下滚动,汇入后分数向上滚动,最后才进行分级称号判定和盖章
- 分级称号:炸弹每次必有称号;普通胜局从 +6 开始发放,+10、+14、+18 逐级升级,其中 +18 进入独立传奇等级;五/十连胜、翻盘、胜场和领先里程碑仍会触发专属称号
- 个人战报:点击头像查看当前排名、胜场和最高得分;只收录正式获得的稀有称号,相同称号以“×次数”集中展示
- 排名头像:前三名头像显示金、银、铜小皇冠,数字贴近皇冠底座;上一轮唯一赢家在右侧转盘右下角保留约四分之三可见的透明底、单圈淡红色“胜”章,文字与圆圈同色
- 炸弹模式:指定赢家后统一向其他玩家收取 2 分或 4 分,点击后直接结算并单独记录
- 可选梗音效:结算音效默认关闭,可在牌桌设置中试听;关键场景使用火山引擎“广西远舟”趣味口音生成本地固定短句,播报与画面最终称号逐字对应,不朗读玩家、分数和说明
- 移动端优化:触屏友好,支持 iOS Safe Area,深色主题
使用方法
直接访问在线版本即可,无需安装任何依赖:
规则说明
每轮结束后,各玩家拨动对应滚轮选择得分,所有玩家分数之和必须为 0,然后点击「提交分数」。
若只剩 1 位玩家未拨分,系统会自动高亮并填入对应值。
动效原则
- 状态连续:数字从旧值滚动到新值,不用凭空替换或从零重新出现。
- 位置有因果:分差从本轮输入位进入总分,筹码从失分方流向胜方,称号从全局判定区落到对应的称号记录位。
- 身份保持稳定:头像只承担身份识别,不用无意义的放大、缩小或抖动表达输赢。
- 结果必须留下:临时动画结束后,最终总分、每轮称号和上一轮“胜”章都留在原界面的固定位置。
- 动静分层:轻微得分只做短路径流转,高分、连胜和炸弹才增加天气、粒子与强化音效;减少动态偏好下直接呈现最终状态。
称号文案也分三层:玩家行和历史只记录短称号;全局判定使用一句热梗;中文播报再补完整包袱。攻击性较强的梗会改写成牌桌语境,例如“在座各位,今晚都是经验包”,避免直接针对玩家本人。
技术栈
- 原生 HTML / CSS / JavaScript(无框架、无构建工具)
localStorage 持久化
- Google Fonts(DM Mono + Noto Sans SC)
双端维护
两端共用规则与体验基线位于 shared/。修改称号、计分范围或公共音频后运行:
node scripts/sync-mini-shared.mjs
node scripts/sync-mini-shared.mjs --check
node tests/game-rules.test.js
小程序提交时同时提交生成的 shared/game-rules.js、docs/双端体验基线.md 和有效音频副本。