Exemplo n.º 1
0
 def test():
     #     tiles = [3, 4, 5, 7, 8, 9, 17, 17]
     tiles = human_tiles("六筒 七筒 八筒 南 南 发 发 一条")
     #     ,6,7,8,3,3,3]
     result, pattern = MWin.isHu(tiles, human_tiles("一条"))
     ftlog.debug('result:', result)
     if result:
         ftlog.debug('pattern:', pattern)
Exemplo n.º 2
0
Arquivo: win.py Projeto: zhaozw/hall37
 def test():
     #     tiles = [3, 4, 5, 7, 8, 9, 17, 17]
     tiles = human_tiles("六筒 七筒 八筒 南 南 发 发 一条")
     #     ,6,7,8,3,3,3]
     result, pattern = MWin.isHu(tiles, human_tiles("一条"))
     ftlog.debug('result:', result)
     if result:
         ftlog.debug('pattern:', pattern)
Exemplo n.º 3
0
class MWinRuleJiNan(MWinRule):
    """
    济南麻将
    2,5,8将胡牌
    """
    JIANG = set(
        human_tiles("2万5万8万2筒5筒8筒2条5条8条"))  # [2, 5, 8, 12, 15, 18, 22, 25, 28]

    def __init__(self, jiang258=True, dui7=True, dui7_258=True):
        """
        :param jiang258: 必须258为将牌
        :param dui7: 支持7对胡牌
        :param dui7_258: 7对胡牌必须也有258
        """
        super(MWinRuleJiNan, self).__init__()
        self.jiang258 = jiang258
        self.dui7 = dui7
        self.dui7_258 = dui7_258

    def isHu(self,
             tiles,
             last_tile,
             isTing,
             getTileType,
             magicTiles=list(),
             tingNodes=list()):
        hu_tiles = HuTiles()
        handTileArr = MTile.changeTilesToValueArr(tiles[MHand.TYPE_HAND])
        if not M14.find_first(
                handTileArr,
                hu_tiles,
                M14.is7Dui if self.dui7 else M14.justPass,
                M14.isPHu,
        ):
            # 基本的胡牌类型都挂了
            return False, None
        dui_list = handTileArr.tiles_dui()
        if len(dui_list) == 0:
            # 没有将牌
            return False, []
        if len(hu_tiles) != 7 and not set(
                zip(*dui_list)[0]) & MWinRuleJiNan.JIANG:
            # 没有2,5,8将牌
            return False, []

        return True, hu_tiles
Exemplo n.º 4
0
def test_hu(line):
    tmp = line.split("|")[:5]
    tmp += [None] * (5 - len(tmp))
    rule, hand_tiles, last_tile, result, detail = tmp[:5]
    if len(result) == 0:
        result = None
    else:
        Assert(
            str(result).lower() in ("true", "false", "t", "f"),
            "true/false[%s]填写错误", result)
        result = str(result).lower() in ("true", "t")
    rule = _rule[rule]
    tiles = new_hand_tails(human_tiles(hand_tiles + last_tile))
    ret, hu_tiles = rule.isHu(tiles, human_one_tile(last_tile), True, [3])
    if result is not None:
        Assert(ret == result, "胡牌判断错误")
        if detail is not None and isinstance(hu_tiles, HuTiles):
            Assert(hu_tiles.title == detail, "胡牌的类型判断错误")
Exemplo n.º 5
0
 def test():
     tiles = new_hand_tails(human_tiles("幺鸡二条三条二万二万五万六万七万7筒八筒9筒5条6条4条"))
     leftTiles = human_tiles("1万1万1万2万2万4万4万4万5万5万7万8万9万2筒")
     winRule = MWinRuleFactory.getWinRule(MPlayMode.SICHUAN)
     print MTing.canTing(tiles, leftTiles, winRule, 1)
Exemplo n.º 6
0
 def test():
     tiles = new_hand_tails(human_tiles("幺鸡二条三条二万二万五万六万七万7筒八筒9筒5条6条"))
     rule = MWinRuleJixi()
     ftlog.debug(rule.isHu(tiles, 2, True, human_tiles("4条")))
Exemplo n.º 7
0
 def test():
     tiles = new_hand_tails(human_tiles("幺鸡二条三条二万二万五万六万七万7筒八筒9筒5条6条"))
     rule = MWinRuleJixi()
     ftlog.debug(rule.isHu(tiles, 2, True, human_tiles("4条")))