1.0.19 • Published 11 months ago

chinese-poker v1.0.19

Weekly downloads
-
License
ISC
Repository
github
Last release
11 months ago

Chinese Poker

This repository primarily focuses on the rule logic of Chinese poker, catering not only to the classic version but also to any customizations you might want to make.

Installation:

To use this package, run either:

npm install chinese-poker

or

yarn add chinese-poker

Configure in src/Config.ts without modifying any logic code.

//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]] }
}

Here's an example of how to use the code:

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);

To verify the accuracy of the card types, you can utilize jest:

  • Update src/tests/ruler_spec.ts.
  • Execute npm run test from the root directory to view the test outcomes.
1.0.19

11 months ago

1.0.18

11 months ago

1.0.16

11 months ago

1.0.12

11 months ago

1.0.11

3 years ago

1.0.10

3 years ago

1.0.9

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago