简单的斗地主出牌算法(python)

def get_best_play(mycard, handcard, last_remain, next_remain):
    """
    返回最佳出牌方式

    Parameters:
    mycard (list[int]): 手牌
    handcard (list[int]): 场上牌
    last_remain (int): 上家剩余牌数
    next_remain (int): 下家剩余牌数

    Returns:
    list[int]: 最佳出牌方式
    """
    # 牌面值
    # values = {str(i): i for i in range(3, 11)}
    # values['J'] = 11
    # values['Q'] = 12
    # values['K'] = 13
    # values['A'] = 14
    # values['2'] = 15
    # values['小王'] = 16
    # values['大王'] = 17
    #
    values = {};
    for s in ['♠', '♥', '♣', '♦']:
        values.update({str(i) + s: i for i in range(3, 11)});
        values['11' + s] = 11
        values['12' + s] = 12
        values['13' + s] = 13
        values['14' + s] = 14
        values['15' + s] = 15
        values['小王'] = 16
        values['大王'] = 17

    # 牌面值对应的数量
    num_mycard = [values[str(card)] for card in mycard]
    num_handcard = [values[str(card)] for card in handcard]

    # 场上牌最大值
    if num_handcard:
        max_handcard = max(num_handcard)
    else:
        # handle the case where num_handcard is empty
        max_handcard = 0;

    # 如果场上牌的数量为1或2,则出所有比场上牌大的牌
    if len(handcard) <= 2:
        return [x for x in mycard if values[x] > max_handcard]

    # 如果场上牌的数量为3,则出所有三带一、三带二、顺子、连对、炸弹中比场上牌大的牌
    if len(handcard) == 3:
        # 如果场上牌为三带一
        if num_handcard[0] == num_handcard[1] == num_handcard[2]:
            for i in range(len(num_mycard) - 1):
                if num_mycard[i] == num_mycard[i + 1] == num_mycard[i + 2]:
                    return [mycard[i], mycard[i + 1], mycard[i +
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值