Пример #1
0
    def chooseFirstCall(self, table):
        # 开关控制是否执行此次略
        if table.room.roomConf.get('finalCallSwitch', 0) != 1:
            return FirstCallPolicyRandom().chooseFirstCall(table)

        seats = sorted(table.gameRound.seats,
                       key=lambda x: x.player.matchUserInfo['score'])
        # 获取进入决赛桌用户
        finalSeats = [
            seat for seat in seats if seat.player.matchUserInfo['isLastStage']
        ]
        if not finalSeats or (len(finalSeats) == 1
                              and finalSeats[0].player.userId
                              == seats[-1].player.userId):
            randomSeat = FirstCallPolicyRandom().chooseFirstCall(table)
            if ftlog.is_debug():
                ftlog.debug(
                    'ArenaMatchFirstCallPolicyFinal.chooseFirstCall randomSeat',
                    'roomId=', table.roomId, 'tableId=', table.tableId,
                    'userScores=',
                    [(s.player.userId, s.player.matchUserInfo['score'])
                     for s in seats], 'callPlayerUserId=',
                    randomSeat.player.userId)
            return randomSeat

        # 按决赛桌用户积分排序
        finalSeats.sort(key=lambda x: x.player.matchUserInfo['score'])

        # 选择首叫用户,如果有一个直接返回否则返回第二个
        retSeat = finalSeats[0] if len(finalSeats) == 1 else finalSeats[1]
        if ftlog.is_debug():
            ftlog.debug(
                'ArenaMatchFirstCallPolicyFinal.chooseFirstCall finalSeat',
                'roomId=', table.roomId, 'tableId=', table.tableId,
                'userScores=',
                [(s.player.userId, s.player.matchUserInfo['score'])
                 for s in finalSeats], 'callPlayerUserId=',
                retSeat.player.userId)
        return retSeat
Пример #2
0
 def __init__(self):
     super(DDZDealerQuickLaizi,
           self).__init__(sm=SM_LAIZI,
                          playMode=PLAY_MODE_QUICKLAIZI,
                          jiabeiMode=JiabeiMode.AFTER_FLIP_BASE_CARD,
                          roundIdGenPolicy=RoundIdGenRedis(),
                          callPolicy=CallPolicyLaizi(),
                          sendCardsPolicy=CardDizhuQuickLaiZi(),
                          firstCallPolicy=FirstCallPolicyRandom(),
                          tuoguanPolicy=TuoguanPolicyDefault(),
                          buyinPolicy=BuyinPolicyFriend(),
                          autoChupaiPolicy=AutoChupaiPolicyDefault(),
                          settlementPolicy=SettlementPolicyFriendTable())
Пример #3
0
 def __init__(self):
     super(DDZDealerErdou,
           self).__init__(sm=SM_NORMAL,
                          playMode=PLAY_MODE_ERDOU,
                          jiabeiMode=JiabeiMode.AFTER_FLIP_BASE_CARD,
                          roundIdGenPolicy=RoundIdGenRedis(),
                          callPolicy=CallPolicyErdou(),
                          sendCardsPolicy=SendCardsPolicyErdou(),
                          firstCallPolicy=FirstCallPolicyRandom(),
                          tuoguanPolicy=TuoguanPolicyDefault(),
                          buyinPolicy=BuyinPolicyFriend(),
                          autoChupaiPolicy=AutoChupaiPolicyDefault(),
                          settlementPolicy=SettlementPolicyFriendTable())
Пример #4
0
 def __init__(self):
     super(DDZDealerNormalHappy, self).__init__(
         sm=SM_NORMAL,
         playMode=PLAY_MODE_NORMAL_HAPPY,
         jiabeiMode=JiabeiMode.AFTER_FLIP_BASE_CARD,
         roundIdGenPolicy=RoundIdGenRedis(),
         callPolicy=CallPolicyHappy3Player(),
         sendCardsPolicy=SendCardsPolicy3PlayerDefault(),
         firstCallPolicy=FirstCallPolicyRandom(),
         tuoguanPolicy=TuoguanPolicyDefault(),
         buyinPolicy=None,
         autoChupaiPolicy=AutoChupaiPolicyDefault(),
         settlementPolicy=SettlementPolicyMatch(),
     )
Пример #5
0
 def __init__(self):
     self._firstCallPolicyMap = {
         'inturn': GroupMatchFirstCallPolicyInturn(),
         'random': FirstCallPolicyRandom()
     }
Пример #6
0
 def __init__(self):
     self._firstCallPolicyMap = {
         'luck': FirstCallPolicyLuck(),
         'random': FirstCallPolicyRandom()
     }