派森从零到放弃 发表于 2024-1-23 16:39:09


找到一个以前突发奇想写的斗地主的程序,就给大伙发来看看,包含发牌:54张牌分别发三份,玩家出牌,以及控制两个电脑进行出牌(电脑跟托管差不多判断有大就出)
以下是运行程序:首先是随机选取地主,并且电脑出牌,显示玩家的牌,并且玩家进行出牌

                               
登录/注册后可看大图

玩家进行出牌

                               
登录/注册后可看大图


                               
登录/注册后可看大图

最后牌出完判断输赢

                               
登录/注册后可看大图

由于代码时间久远,应该还有一些bug(应该是关于判定出牌的问题)但懒得改了
整体代码放不下了就简单放一个电脑进行出牌判定的代码吧,大概就是判断出牌是啥,判断手牌有啥,打得过就出,其中判断手牌的函数比如单张,对子四带二飞机等等就不一一列出了
# 参数:
# 列表array       玩家的牌
# 列表last_cart   上次出牌  上次出牌默认符合规则
# 作用  判断 AI 本次应该出什么类型的牌
def count(array,last_cart,name):
    # print(last_cart,'666666666666')
    # 顺子和联对 比较特殊  就不按张数算了
    # print(last_cart,'6666')
    temp_list = delete_symbol(last_cart) # 去符号  因为jug_array函数不要符号
   
    # print(temp_list)
    if jug_array(temp_list) == 0:#顺子
        return straight(array,last_cart,name)
    elif Even_for(temp_list) == 0: # 连对
        return paired_count(array,last_cart,name)
    elif judge_airplane(temp_list) == 0:#干捞飞机
        return airplane_0(array,last_cart,name)
    elif judge_airplane(temp_list) == 1:#飞机带单
        return airplane_1(array,last_cart,name)
    elif judge_airplane(temp_list) == 2:#飞机带队
        return airplane_2(array,last_cart,name)

    else:
        if last_cart == []:#全都不要的时候的机器出牌
            return singel_count(array,last_cart,name)
        elif len(last_cart) == 1:# 出单
            return singel_count(array,last_cart,name)
        elif len(last_cart) == 2:# 出对子
            return double_count(array,last_cart,name)
        elif len(last_cart) == 3:# 出三张
            return triple_count(array,last_cart,name)
            

        elif len(last_cart) == 4:
            a = sort_array(last_cart) # 变成数字 按照大小 排列  如:[3,3,3,2]
            if a[zxsq-anti-bbcode-0][1:] == a[-1][1:]: # 说明是炸弹
                return has_boom(array,last_cart,name)
            elif a[zxsq-anti-bbcode-0][1:] != a[-1][1:]:# 说明是三代一
                return three_with_one(array,last_cart,name)

        elif len(last_cart) == 5:
            # a = sort_array(last_cart) # 变成数字 按照大小 排列  如:[3,3,3,2,2]    sort 会吃数组 先不用了
            a = last_cart
            #
            if ((a[zxsq-anti-bbcode-2][1:] != a[zxsq-anti-bbcode-3][1:]) and (a[zxsq-anti-bbcode-0][1:] == a[zxsq-anti-bbcode-1][1:])) or ((a[zxsq-anti-bbcode-2][1:] != a[zxsq-anti-bbcode-3][1:]) and (a[-1][1:] == a[-2][1:])):
                # 说明是 三代二
                return three_with_two(array,last_cart,name)
            else:
                print('你来到了奇怪的地方   ugsiduhoi')

        elif len(last_cart) == 6:
            # a = sort_array(last_cart) # 变成数字 按照大小 排列  如:[3,3,3,2,2]
            a = last_cart
            if (a[zxsq-anti-bbcode-2][1:] == a[zxsq-anti-bbcode-3][1:]) and ((a[zxsq-anti-bbcode-0][1:] != a[zxsq-anti-bbcode-1][1:]) or (a[zxsq-anti-bbcode-0][1:] != a[-1][1:]) or (a[-1][1:] != a[-2][1:])):
                # 说明是四代二单   [6,7,8,8,8,8] [6,8,8,8,8,9] [8,8,8,8,9,K]
                # print('这里是四代二')
                return four_with_1(array,last_cart,name)
            else:
                print('不要进来!淦')
                pass

        elif len(last_cart) == 8:#四代对
            return four_with_2(array,last_cart,name)

        else:
            return -1



已有 2 人购买  本主题需向作者支付 10 鱼币 才能浏览 购买主题

中英文泡椒 发表于 2024-1-23 18:08:37

{:5_106:}{:5_106:}

sfqxx 发表于 2024-1-23 19:28:53

{:10_254:}

某一个“天” 发表于 2024-1-28 12:26:03

{:5_109:}

zhangchenyvn 发表于 2024-1-28 17:36:39

厉害

闪光少年 发表于 2024-1-29 10:49:44

感谢大佬的馈赠

哇好帅 发表于 2024-1-29 21:06:37

{:5_106:}

15945179970 发表于 2024-1-29 21:10:00

{:5_102:}

stumblemodel 发表于 2024-1-31 22:01:38

{:10_277:}

学C的h 发表于 2024-2-1 11:19:15

{:5_103:}

laoyoutiao 发表于 2024-3-12 22:12:39

6
页: [1]
查看完整版本: 斗地主