现在的位置: 首页 > 综合 > 正文

自用组帧工具

2018年05月28日 ⁄ 综合 ⁄ 共 2874字 ⁄ 字号 评论关闭

#coding:utf-8

BUTTON = 'button' # 庄稼?????
L_BLIND = 'little_blind' # 小盲注
B_BLIND = 'big_blind' # 小盲注

SEAT = 'seat'
HOLD = 'hold'   # 手牌
ASK  = 'ask'    # ?????
FIRST= 'first'  # 第一次发三张牌 ?????
TURN = 'turn'   # 转牌
RIVER= 'river'  # 河牌
ACT  = 'act'

# ????
HEI  = 'hei'
HONG = 'hong'
MEI  = 'mei'
FANG = 'fang'

LITTLE_BLIND_MONEY = 500
START_MONEY = 8000
START_BET = 2000

input_info = [

    (SEAT, 2, 0), # 共2人,我是第0位,0位表示庄稼
    (HOLD, [(HEI, 'A'), (HEI, 'K')]),
    (ACT, [0,]), # -1=放弃, 0=让(或跟), n=加n注
    (FIRST, [(HEI, 'Q'), (HEI, 'J'), (HEI, '10')]),
    (ACT, [0, 1]),
    (TURN, [(HONG, '2'), ]),
    (ACT, [0, 1]),
    (RIVER, [(FANG, '3'), ]),
    (ACT, [0, 1]),
]

def analyse_SEAT(one_info):

    person_cnt = one_info[1]
    my_seat = one_info[2]
    
    core = ''
    for i in range(person_cnt):
        if my_seat == i:
            pid = 3001
        else:
            pid = 9001+i
            
        if i == 0:
            extra_info = BUTTON
        elif i == 1:
            extra_info = L_BLIND
        elif i == 2:
            extra_info = B_BLIND
        else:
            extra_info = ''
        
        this_line = '{0} {1}: {2} {3} \n'.format(extra_info, pid, START_BET, START_MONEY) # ??????
        core += this_line

    return SEAT+'/ \n'+ core +'/'+SEAT + ' \n'

def analyse_HOLD(one_info):
    '''
    hold\ 
    HEI 10 
    MEI 9 
    \hold 
    '''
    body_info = one_info[1]
    return '''{0}\ 
{1} {2} 
{3} {4} 
\{0} '''.format(HOLD,
        body_info[0][0], body_info[0][1],
        body_info[1][0], body_info[1][1],
        )
    
def analyse_FIRST(one_info):

    body_info = one_info[1]
    return '''{0}\ 
{1} {2} 
{3} {4} 
{5} {6} 
\{0} '''.format(FIRST,
        body_info[0][0], body_info[0][1],
        body_info[1][0], body_info[1][1],
        body_info[2][0], body_info[2][1],
        )
        
        
def analyse_TURN(one_info):
    body_info = one_info[1]
    return '''{0}\ 
{1} {2} 
\{0} '''.format(TURN,
        body_info[0][0], body_info[0][1],
        )
        
        
def analyse_RIVER(one_info):
    body_info = one_info[1]
    return '''{0}\ 
{1} {2} 
\{0} '''.format(RIVER,
        body_info[0][0], body_info[0][1],
        )
        
        
# ?????
def get_pid(i):
    return 9001 + i
    
        
def analyse_ACT(one_info):
    '''
    ASK\ 
    9001: 0 8000 500 call 
    total: xxxx 
    \ASK 
    '''
    
    core = ''
    for i,itm in enumerate(one_info[1]):
        if 0 == itm:
            extra_info = 'check'
            pay = LITTLE_BLIND_MONEY # ????
        elif -1 == itm: # ???? 有人弃牌会引发组装错误
            extra_info = 'fold'
            pay = 0
        else:
            extra_info = 'raise'
            pay = LITTLE_BLIND_MONEY*itm
        
        pid = get_pid(i)
        cur_bet = 500 # ???? 需要动态获取
        cur_money = 8000
        
        this_line = '{0}: {1} {2} {3} {4} \n'.format(
            pid, cur_bet, cur_money, pay, extra_info)
        core += this_line

    total_pot = 1000 # ?????
    rtn = '''
{0}\ 
{1}total: {2} 
\{0} 
'''.format(ASK, core, total_pot) # ????????

    return rtn
        
    
def analyse_one(one_info):

    type = one_info[0]

    if type == SEAT:
        rtn = analyse_SEAT(one_info)
    elif type == HOLD:
        rtn = analyse_HOLD(one_info)
    elif type == FIRST:
        rtn = analyse_FIRST(one_info)
    elif type == TURN:
        rtn = analyse_TURN(one_info)
    elif type == RIVER:
        rtn = analyse_RIVER(one_info)
    elif type == ACT:
        rtn = analyse_ACT(one_info)
    else:
        print 'type error'
    
      
    

    return rtn

def analyse(all_info):

    rtn = ''
    for itm in all_info:
        rtn += analyse_one(itm)

    return rtn

    
    
print analyse(input_info)

抱歉!评论已关闭.