コード例 #1
0
    def reset_data(self):
        """
        一局游戏结束重置玩家数据
        :return:
        """
        self.hu_source_seat = -1  # 胡牌来源座位号
        self.hand_card = HandCard(self.seat_id, self.game_data)

        self.time_out_count = 0  # 超时次数
        self.is_auto = 0  # 是否处于托管状态

        self.zi_mo_num = 0
        self.hu_pai_num = 0
        self.jie_pao_num = 0
        self.dian_pao_num = 0
        self.an_gang_num = 0
        self.ming_gang_num = 0

        self.ting_info = {}
        self.can_ting_info = {}

        self.reset_hook()
コード例 #2
0
    def __init__(self, seat_id, game_data, point=0):
        self.game_data = game_data
        self.seat_id = seat_id
        self.hu_source_seat = -1    # 胡牌来源座位号
        self.can_hu_result = []     # 玩家当前可胡的牌型

        self.hand_card = HandCard(seat_id, game_data)
        self.point = point

        self.time_out_count = 0     # 超时次数
        self.is_auto = 0            # 是否处于托管状态

        self.zi_mo_num = 0
        self.hu_pai_num = 0
        self.jie_pao_num = 0
        self.dian_pao_num = 0
        self.an_gang_num = 0
        self.ming_gang_num = 0


        self.hook_hu_seat_id = -1  # 抢胡来源座位id

        self.ting_info = {}     # 选择听牌后的胡牌信息 {胡的牌:{"fan":胡牌基本类型番数, "type_list":[胡牌类型]}, ...}
        self.can_ting_info = {}    # 可以听牌的信息  {出牌1:{胡的牌:{"fan":胡牌基本类型番数, "type_list":[胡牌类型]}, ...}
コード例 #3
0
ファイル: buqiuren.py プロジェクト: st199051/echecs
    def is_this_type(self, hand_card, card_analyse):
        used_card_type = [CardType.WAN]  # 此游戏中使用的花色
        if len(hand_card.chi_card_vals) > 0:
            return False
        if len(hand_card.peng_card_vals) > 0:
            return False
        if len(hand_card.dian_gang_card_vals) > 0:
            return False
        return True


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [8, 0, 1, 1, 1, 1, 1, 1, 0, 2],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [3, 3, 0, 0, 0],  # 风
        5: [0, 0, 0, 0],  # 箭
    }
コード例 #4
0
ファイル: qiliandui.py プロジェクト: st199051/echecs
        if union_card[CardType.WAN][1] == 0 and union_card[
                CardType.WAN][2] == 0:
            dui_count = 0
            for index, count in enumerate(union_card[CardType.WAN][1:-1]):
                if count == 2:
                    dui_count += 1
            if dui_count == 7:
                return True
        return False


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0, None)
    hand_card.hand_card_info = {
        1: [14, 2, 2, 2, 2, 2, 2, 2, 0, 0],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [0, 0, 0, 0, 0],  # 风
        5: [0, 0, 0, 0],  # 箭
    }
    # hand_card.hand_card_info = {
    #     1: [14, 3, 1, 1, 1, 1, 1, 1, 2, 3],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [0, 0, 0, 0, 0],                 # 风
    #     5: [0, 0, 0, 0],                    # 箭
    # }
コード例 #5
0
ファイル: shuangjianke.py プロジェクト: st199051/echecs
        ret = card_analyse.get_jiang_ke_shun_plus(hand_card.hand_card_vals)
        for index in range(len(ret)):
            k = ret[index]["k"]
            ke_lst.extend(k)
            for i in k:
                if self.is_jian(i):
                    jian_ke_count += 1
            if jian_ke_count >= 2:
                return True
        return False


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [8, 0, 3, 3, 2, 0, 0, 0, 0, 0],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [0, 0, 0, 0, 0],  # 风
        5: [6, 3, 3, 0],  # 箭
    }
コード例 #6
0
ファイル: kan_zhang.py プロジェクト: st199051/echecs
        hu_card_val = hand_card.hu_card_val
        chi_cards_lst = hand_card.chi_card_vals
        ret = card_analyse.get_jiang_ke_shun_plus(hand_card.hand_card_vals)
        for index in range(len(ret)):
            s = ret[index]["s"]
            s.extend(chi_cards_lst)
            for i in s:
                if hu_card_val == i[1]:
                    return True
        return False


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0, None)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [6, 0, 0, 0, 1, 1, 1, 1, 1, 1],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [2, 2, 0, 0, 0],                 # 风
        5: [3, 3, 0, 0],                    # 箭
    }
    hand_card.chi_card_vals=[[23,24,25]]
コード例 #7
0
    def get_gang_lst(self, hand_card):
        ret = []
        for i in hand_card.dian_gang_card_vals:  # 点杠的牌
            ret.append(i[0])
        for i in hand_card.bu_gang_card_vals:  # 补杠的牌
            ret.append(i[0])
        for i in hand_card.an_gang_card_vals:  # 暗杠的牌
            ret.append(i[0])
        return ret


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [9, 1, 1, 4, 1, 1, 1, 1, 1, 1],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [2, 2, 0, 0, 0],  # 风
        5: [0, 0, 0, 0],  # 箭
    }
    hand_card.handle_hand_card_for_settle_show()
コード例 #8
0
ファイル: dangoujiang.py プロジェクト: st199051/echecs
    def __init__(self):
        super(DanGouJiang, self).__init__()

    def is_this_type(self, hand_card, card_analyse):
        hu_card_val = hand_card.hu_card_val
        j, s, k = card_analyse.get_jiang_ke_shun(hand_card.hand_card_vals)
        print("j=", j)
        if hu_card_val and hu_card_val in j[0]:
            return True
        return False


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [11, 3, 0, 0, 1, 1, 1, 2, 0, 3],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [0, 0, 0, 0, 0],  # 风
        5: [3, 3, 0, 0],  # 箭
    }
    # hand_card.chi_card_vals=[[23,24,25]]
コード例 #9
0
ファイル: quanqiuren.py プロジェクト: st199051/echecs
class QuanQiuRen(BaseType):
    """
    3)	全求人: 胡牌时,全靠吃牌、碰牌、单钓别人打出的牌胡牌。不记番:单钓
    """
    def __init__(self):
        super(QuanQiuRen, self).__init__()

    def is_this_type(self, hand_card, card_analyse):
        cards = hand_card.hand_card_vals
        return len(cards) == 2


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [2, 0, 0, 0, 0, 0, 0, 0, 0, 2],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [0, 0, 0, 0, 0],  # 风
        5: [0, 0, 0, 0],  # 箭
    }
コード例 #10
0
ファイル: sangang.py プロジェクト: st199051/echecs
    def is_this_type(self, hand_card, card_analyse):
        an_gang_card_vals = hand_card.an_gang_card_vals
        bu_gang_card_vals = hand_card.bu_gang_card_vals
        dian_gang_card_vals = hand_card.dian_gang_card_vals
        ke_lst = []
        ke_lst.extend(an_gang_card_vals)
        ke_lst.extend(bu_gang_card_vals)
        ke_lst.extend(dian_gang_card_vals)

        return len(ke_lst) == 3


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0, None)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [4, 0, 0, 0, 0, 0, 0, 0, 0, 3],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [0, 0, 0, 0, 0],  # 风
        5: [2, 2, 0, 0],  # 箭
    }
コード例 #11
0
ファイル: laoshaofu.py プロジェクト: st199051/echecs
        j, s, k = card_analyse.get_jiang_ke_shun(hand_card.hand_card_vals)
        if hand_card.chi_card_vals:
            s.extend(hand_card.chi_card_vals)
        if len(s) < 2:
            return False
        s.sort()
        print("s=", s)
        if [17, 18, 19] in s and [23, 24, 25] in s:
            return True
        return False


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [6, 0, 0, 0, 1, 1, 1, 1, 1, 1],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [2, 2, 0, 0, 0],  # 风
        5: [3, 3, 0, 0],  # 箭
    }
    # hand_card.chi_card_vals=[[23,24,25]]
コード例 #12
0
    def is_this_type(self, hand_card, card_analyse):
        used_card_type = [CardType.WAN]  # 此游戏中使用的花色
        union_card = hand_card.union_card_info
        for index, count in enumerate(union_card[CardType.WAN]):
            if index in [0, 1, 9]:
                continue
            if count > 0:
                return False
        return True


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0, None)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [11, 0, 1, 1, 1, 1, 2, 2, 1, 2],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [3, 0, 0, 3, 0],  # 风
        5: [0, 0, 0, 0],  # 箭
    }
    # hand_card.record_peng_card(67)
コード例 #13
0
class Player(object):
    """
    游戏内玩家类
    """
    def __init__(self, seat_id, game_data, point=0):
        self.game_data = game_data
        self.seat_id = seat_id
        self.hu_source_seat = -1    # 胡牌来源座位号
        self.can_hu_result = []     # 玩家当前可胡的牌型

        self.hand_card = HandCard(seat_id, game_data)
        self.point = point

        self.time_out_count = 0     # 超时次数
        self.is_auto = 0            # 是否处于托管状态

        self.zi_mo_num = 0
        self.hu_pai_num = 0
        self.jie_pao_num = 0
        self.dian_pao_num = 0
        self.an_gang_num = 0
        self.ming_gang_num = 0


        self.hook_hu_seat_id = -1  # 抢胡来源座位id

        self.ting_info = {}     # 选择听牌后的胡牌信息 {胡的牌:{"fan":胡牌基本类型番数, "type_list":[胡牌类型]}, ...}
        self.can_ting_info = {}    # 可以听牌的信息  {出牌1:{胡的牌:{"fan":胡牌基本类型番数, "type_list":[胡牌类型]}, ...}

    def reset_data(self):
        """
        一局游戏结束重置玩家数据
        :return:
        """
        self.hu_source_seat = -1  # 胡牌来源座位号
        self.hand_card = HandCard(self.seat_id, self.game_data)

        self.time_out_count = 0  # 超时次数
        self.is_auto = 0  # 是否处于托管状态

        self.zi_mo_num = 0
        self.hu_pai_num = 0
        self.jie_pao_num = 0
        self.dian_pao_num = 0
        self.an_gang_num = 0
        self.ming_gang_num = 0

        self.ting_info = {}
        self.can_ting_info = {}

        self.reset_hook()

    def set_hand_card(self, hand_card):
        self.hand_card.hand_card_info = hand_card

    def change_point(self, num):
        self.point += num

    def chu_card(self, card_val):
        self.hand_card.del_hand_card_by_val(card_val)
        self.hand_card.out_card_vals.append(card_val)

    def reset_hook(self):
        self.hook_hu_seat_id = -1  # 抢胡来源座位id

    def set_can_ting_info(self, ting_info={}):
        """
        记录可听牌信息
        :param ting_info:  可以听牌的信息 {出牌1:{胡的牌:{"fan":胡牌基本类型番数, "type_list":[胡牌类型]}, ...}
        :return:
        """
        self.can_ting_info = ting_info

    def set_ting_info(self, chu_card_val):
        """
        记录选择的听牌信息
        :param chu_card_val: 选择打出哪张牌后听牌
        :return:
        """
        self.ting_info = self.can_ting_info.get(chu_card_val)
コード例 #14
0
ファイル: dasanyuan.py プロジェクト: st199051/echecs
    def __init__(self):
        super(DaSanYuan, self).__init__()

    def is_this_type(self, hand_card, card_analyse):
        # 不是清一色则返 False
        union_card = hand_card.union_card_info
        # 4,5,6 至少有一张
        if union_card[CardType.JIAN][0] == 9:
            return True
        return False


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0, None)
    hand_card.hand_card_info = {
        1: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [5, 3, 2, 0, 0],  # 风
        5: [9, 3, 3, 3],  # 箭
    }
    # hand_card.hand_card_info = {
    #     1: [8, 0, 0, 0, 1, 2, 2, 1, 0, 2],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [0, 0, 0, 0, 0],                 # 风
    #     5: [0, 0, 0, 0],                    # 箭
    # }
コード例 #15
0
ファイル: yaojiuke.py プロジェクト: st199051/echecs
            k.extend(hand_card.peng_card_vals)
        if len(k) < 2:
            return False
        print("k=", k)
        if [17, 17, 17] in k and [25, 25, 25] in k:
            return True
        for i in [65, 66, 67, 68]:
            if i in k:
                return True
        return False


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0)
    # hand_card.hand_card_info = {
    #     1: [9, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [2, 2, 0, 0, 0],                 # 风
    #     5: [3, 3, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [8, 0, 0, 0, 1, 1, 1, 2, 0, 3],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [0, 0, 0, 0, 0],  # 风
        5: [3, 3, 0, 0],  # 箭
    }
    # hand_card.chi_card_vals=[[23,24,25]]
コード例 #16
0
ファイル: yisesanjiegao.py プロジェクト: st199051/echecs
            k.extend(ke_lst)
            print("k=", k)
            if len(k) < 3:
                return False
            if k[0][0] - 1 == k[1][0] and k[1][0] - 1 == k[2][0]:
                return True
            if len(k) == 4:
                if k[1][0] - 1 == k[2][0] and k[2][0] - 1 == k[3][0]:
                    return True
        return False


if __name__ == "__main__":
    pass
    card_analyse = CardAnalyse()
    hand_card = HandCard(0, None)
    # hand_card.hand_card_info = {
    #     1: [14, 3, 3, 3, 1, 1, 1, 0, 0, 2],  # 万
    #     2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
    #     3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
    #     4: [0, 0, 0, 0, 0],                 # 风
    #     5: [0, 0, 0, 0],                    # 箭
    # }
    hand_card.hand_card_info = {
        1: [7, 3, 0, 0, 0, 1, 0, 1, 2, 0],  # 万
        2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 条
        3: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # 饼
        4: [0, 0, 0, 0, 0],  # 风
        5: [0, 0, 0, 0],  # 箭
    }