二七王:前端 CardCodec,cardId 转牌面帧号
清单 §0.4 的唯一权威转换:服务端花色段序与美术帧顺序相反, 转换把花色段反过来数。用清单给的 10 条样例逐条锁死, 另加两副牌同帧、值域、单射三组断言。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
///////////////////////////////////////////////////////////////
|
||||
////////// EQW_CardCodec: 牌 id → 牌面资源帧号(纯逻辑)//////////
|
||||
///////////////////////////////////////////////////////////////
|
||||
// 清单 §0.4:牌面资源统一 10 列 × 6 行 = 60 帧,行优先编号
|
||||
// 帧 1–13 黑桃 A–K / 14–26 红桃 / 27–39 梅花 / 40–52 方块
|
||||
// 帧 53 小王 / 54 大王 / 55–60 牌背 1–6(二七王用帧 55)
|
||||
// 服务端牌 id 的花色段序是 方块→梅花→红心→黑桃(class.pai.js:16),
|
||||
// 与美术帧的花色顺序【正好相反】,转换必须把花色段反过来数。
|
||||
// 【全前端只此一处实现】其余模块一律调用它,不得另写一份。
|
||||
var EQW_CardCodec = EQW_CardCodec || {
|
||||
|
||||
//牌背帧号(二七王固定用牌背 1)
|
||||
CARD_BACK_FRAME: 55,
|
||||
|
||||
//牌 id → 牌面资源帧号。deck1 与 deck2 的同一张牌共用同一帧(牌面完全相同)
|
||||
cardIdToFrame: function (cardId) {
|
||||
var n = cardId % 54; // 去掉副数
|
||||
if (n === 52) { return 53; } // 小王
|
||||
if (n === 53) { return 54; } // 大王
|
||||
return (3 - Math.floor(n / 13)) * 13 + (n % 13) + 1;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user