Files
joywayerandClaude Opus 4.8 60271175d6 二七王:逻辑文件补双运行时守卫,解锁 Node 单测
按 dev-guide 01 §1「一套代码,两个运行时」补齐 erqiwang 缺失的守卫(此前只支持友乐全局加载模型):
- 顶部:跨模块依赖走 `if (typeof require!=='undefined') var X=require('./class.X.js')`
  (config/pai/arith 无跨模块依赖;paiju 依赖 arith/config/pai;desk 依赖 paiju;export 依赖 arith/config/desk)
- 底部:`if (typeof module!=='undefined') module.exports = cls_X`
- export/import 的平台接线 `youle_erqiwang.X=...` 加 `typeof youle_erqiwang` 守卫,Node 无此全局时跳过

纯增量:友乐无 require(浏览器模型),守卫全部跳过、全局名仍无条件暴露,线上行为不变;
仅在 Node 下额外启用 require/module.exports,从而可用 node 直接单测。min_*/youle_erqiwang 等平台全局仍按全局名引用(Node 侧由测试 shim 提供)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 23:51:12 +08:00

67 lines
2.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
///////////////////////////////////////////////////
////////// cls_youle_erqiwang_pai: 牌 //////////
///////////////////////////////////////////////////
var cls_youle_erqiwang_pai = cls_youle_erqiwang_pai || {
//创建单张牌对象
new: function(id, flower, number, score, dealowner){
/*
参数说明:
id 绝对id
flower 牌面花色
number 牌面数值
code 牌编码
扑克牌的统一编码规则:
1,牌面花色的定义 5:王 4:黑桃 3:红心 2:梅花 1:方块
2,牌面数值的定义 01:A 02:2 03:3 ... 09:9 10:10 11:J 12:Q 13:K 53:小王 54:大王
3,牌编码的定义
3.1 常主的牌编码定义:
未叫主之前:
2的牌编码定义 黑桃2:2402 红心2:2302 梅花2:2202 方块2:2102
7的牌编码定义 黑桃7:7407 红心2:7307 梅花7:7207 方块7:7107
王的牌编码定义 小王:9553 大王:9554
叫主之后:
主2牌编码定义 原有牌编码的基础上+1000,例如红心为主牌,则红心2的牌编码变为3302
主7牌编码定义 原有牌编码的基础上+1000,例如红心为主牌,则红心7的牌编码变为8307
3.2 普通牌的牌编码定义
A的定义:14
未叫主之前:
3位数字 第一位为牌面花色 第二三位为牌面数值
叫主之后:
主牌花色 4位数字,即在原有牌编码的基础上+1000,表示是主牌
非主牌花色 3位数字,即原有牌编码不变
3.3 综上所述
牌编码是3位的,即小于1000的都是非主牌
牌编码是4位的,即大于1000的都是主牌
可根据牌编码进行牌大小的比较和排序
4 牌型定义
>100: 单张, 101一张单张,102两张单张,103三张单张 ...
>200: 对子, 201一对,202两对,203三对 ...
>300: 拖拉机,302两连对拖拉机,303三连对拖拉机 ...
*/
var pai = {};
pai.id = id; //绝对id,即数组下标,从0开始计数
pai.flower = flower; //牌面花色
pai.number = number; //牌面数值
pai.score = score; //牌在游戏中的分值
pai.dealowner = dealowner; //发牌状态
//-1:规则去除的牌
// 0:未发的牌,即底牌
//>0:发牌发到谁手上,从1开始计数,即位置编号+1,位置编号是从0开始计数的
pai.playround = -1; //出牌状态
//-1:未出的牌
// 0:埋牌
//>0:牌是第几轮出出去的,从1开始计数
pai.playindex = -1; //本轮中的出牌顺序,从1开始计数
pai.playowner = -1; //出牌后被谁得到,与位置编号对应
return pai;
}
}
//Node 导出;友乐/浏览器无 module 时跳过(dev-guide 01 §1)
if (typeof module !== "undefined"){
module.exports = cls_youle_erqiwang_pai;
}