1.0.11 • Published 2 years ago

chinese-poker v1.0.11

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

Chinese Poker

npm version

This repo is mainly about the rule logic of Chinese poker, and it is not just for classic Chinese poker, but for the poker you want to customize.

Just config in file src/Config.ts with no logic code change.

Test your customize rule with jest:

  • modify src/tests/ruler_spec.tsas you want.
  • run npm run test at rootDir to check the results.

扑克(斗地主)牌型检测/压牌逻辑

这个项目用于扑克牌的牌型配置和相应的牌型检测和大小判断,当然也适用于斗地主牌型检测/压牌逻辑

只需要修改 src/Config.ts 文件,就可以配置你想要的任意牌型.

//定义牌型 define poker type

/*
* - metaType 基牌元类型
* - minCount 基牌数量下限
* - increment 基牌元类型关系(是否递增)

* - subTypeData 副牌数据
* - val 特定值
*/
export const TypeDefinition: { [type: number]: T_TYPE_DATA } = {
    [E_TYPE.SINGLE]: { metaType: E_META.ONE, count: 1 },
    [E_TYPE.DOUBLE]: { metaType: E_META.TWO, count: 1 },
    [E_TYPE.TRIPLE]: { metaType: E_META.THREE, count: 1 },
    [E_TYPE.SINGLE_ORDER]: { metaType: E_META.ONE, minCount: 5, increment: true },
    [E_TYPE.DOUBLE_ORDER]: { metaType: E_META.TWO, minCount: 3, increment: true },
    [E_TYPE.TRIPLE_ORDER]: { metaType: E_META.THREE, minCount: 2, increment: true },
    [E_TYPE.TRIPLE_ORDER]: { metaType: E_META.THREE, minCount: 2, increment: true },
    [E_TYPE.TRIPLE_ORDER_TAKE_ONE]: {
        metaType: E_META.THREE, minCount: 2, increment: true,
        subTypeData: { metaType: E_META.ONE, count: 1 }
    },
    [E_TYPE.TRIPLE_ORDER_TAKE_TWO]: {
        metaType: E_META.THREE, minCount: 2, increment: true,
        subTypeData: { metaType: E_META.TWO, count: 1 }
    },
    [E_TYPE.TRIPLE_TAKE_ONE]: {
        metaType: E_META.THREE, count: 1,
        subTypeData: { metaType: E_META.ONE, count: 1 }
    },
    [E_TYPE.TRIPLE_TAKE_TWO]: {
        metaType: E_META.THREE, count: 1,
        subTypeData: { metaType: E_META.TWO, count: 1 }
    },
    [E_TYPE.QUADRUPLE_TAKE_TWO_SINGLE]: {
        metaType: E_META.FOUR, count: 1,
        subTypeData: { metaType: E_META.ONE, count: 2 }
    },
    [E_TYPE.QUADRUPLE_TAKE_TWO_DOUBLE]: {
        metaType: E_META.FOUR, count: 1,
        subTypeData: { metaType: E_META.TWO, count: 2 }
    },
    [E_TYPE.QUADRUPLE]: { metaType: E_META.FOUR, count: 1 },
    [E_TYPE.DOUBLE_JOKER]: { metaType: E_META.ONE, count: 2, val: [FaceSerialsDic[E_FACE.B_JOKER][0], FaceSerialsDic[E_FACE.R_JOKER][0]] }
}

可以使用 jest 来测试牌型的准确性:

  • 修改 src/tests/ruler_spec.ts.
  • 在根目录运行 npm run test 以测试检测结果.

How to use:

npm install chinese-poker or yarn add chinese-poker

Then code like example below:

import * as poker from "chinese-poker";
let ruler = new  poker.Ruler();
let checkRes=  ruler.checkCardType([3,4,5,6,7])
let defeatRes=  ruler.canDefeat([4,5,6,7,8],[3,4,5,6,7],poker.E_TYPE.SINGLE_ORDER)
console.log(checkRes,defeatRes);

If any help, give me a star to support Click to star⭐

给个小星星吧 点击赏个小星星⭐

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago