按 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>
67 lines
2.7 KiB
JavaScript
67 lines
2.7 KiB
JavaScript
///////////////////////////////////////////////////
|
||
////////// 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;
|
||
}
|