吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4783|回复: 29
收起左侧

[Python 转载] 仿『斗牛』休闲游戏编写的python代码版斗牛

[复制链接]
yanshiqi 发表于 2022-1-29 16:06
如题,就是根据斗牛游戏规则编写的代码, 可以手动设置玩家个数(最大不超过7个).
代码一运行即可知道玩家的牌,且自动计算是否有牛。
庄家的牌需按下回车,(增加趣味性... )  

自主编写的,如果有大神能指点下,有更好的代码的逻辑,盼回复~~



代码如下 :

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import random
puke = [3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, "小王", "大王"]
 
 
def niuniu():
    x = []
    first = random.choice(puke)
    x.append(first)
    puke.pop(puke.index(first))
    second = random.choice(puke)
    x.append(second)
    puke.pop(puke.index(second))
    thrid = random.choice(puke)
    x.append(thrid)
    puke.pop(puke.index(thrid))
    fourth = random.choice(puke)
    x.append(fourth)
    puke.pop(puke.index(fourth))
    fifth = random.choice(puke)
    x.append(fifth)
    puke.pop(puke.index(fifth))
    return x
 
 
def conversion(xlist):
    '''
    将花牌和大小王转换成数字10
    '''
    l = []
    for i in xlist:
        if i in ["J", "Q", "K", "小王", "大王"]:
            l.append(10)
        elif i == "A":
            l.append(1)
        else:
            l.append(i)
    return l
 
 
def compute(xlist):
    if (xlist[0]+xlist[1]+xlist[2])%10 == 0 or (xlist[0]+xlist[1]+xlist[3])%10 == 0 or (xlist[0]+xlist[1]+xlist[4])%10 == 0 or (xlist[0]+xlist[2]+xlist[3])%10 == 0 or (xlist[0]+xlist[2]+xlist[4])%10 == 0 or (xlist[0]+xlist[3]+xlist[4])%10 == 0 or (xlist[1]+xlist[2]+xlist[3])%10 == 0 or (xlist[1]+xlist[2]+xlist[4])%10 == 0 or (xlist[1]+xlist[3]+xlist[4])%10 == 0 or (xlist[2]+xlist[3]+xlist[4])%10 == 0 :
        total = xlist[0]+xlist[1]+xlist[2]+xlist[3]+xlist[4]
        result = int(str(total)[-1])
        if result == 0:
            return 0 # 牛牛
        else:
            return result
    return -1   # 无牛
 
 
def format_print(x):
    if len(str(x)) > 1:
        return str(x)
    return " " + str(x)
 
 
def players(x):
    di = {1 : "一", 2 : "二", 3 : "三", 4 : "四", 5 : "五", 6 : "六", 7 : "七"}
    for i in range(x):
        player_puke = niuniu()
        player = conversion(player_puke)
        player_puke = f"{format_print(player_puke[0])}  {format_print(player_puke[1])}  {format_print(player_puke[2])}  {format_print(player_puke[3])}  {format_print(player_puke[4])}"
        if compute(player) != -1:
            if compute(player) != 0:
                print(f"玩家{di[i+1]}: {player_puke}  --  恭喜  牛{compute(player)}")
            else:
                print(f"玩家{di[i+1]}: {player_puke}  --  恭喜 『牛牛』")
        else:
            print(f"玩家{di[i+1]}: {player_puke}  --  哈哈~ 无牛")
 
 
def zhuang():
    zhuang_puke = niuniu()
    player = conversion(zhuang_puke)
    zhuang_puke = f"{format_print(zhuang_puke[0])}  {format_print(zhuang_puke[1])}  {format_print(zhuang_puke[2])}  {format_print(zhuang_puke[3])}  {format_print(zhuang_puke[4])}"
    if compute(player) != -1:
        if compute(player) != 0:
            print(f"庄 家: {zhuang_puke}  --  恭喜  牛{compute(player)}")
        else:
            print(f"庄 家: {zhuang_puke}  --  恭喜 『牛牛』")
    else:
        print(f"庄 家: {zhuang_puke}  --  哈哈~ 无牛")
 
 
if __name__ == '__main__':
    players(3)
    input("按下回车键开庄...")
    zhuang()



运行效果图:

捕获2.PNG



手机端  : 使用 QPython

QQ图片20220129155136.jpg

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
liuxiaoxin + 1 + 1 楼主,还得让你加个循环,也好学学牛牛

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| yanshiqi 发表于 2022-1-29 20:22
yanshiqi 发表于 2022-1-29 20:10
用while, 需要把 puke这个列表,放在while里面第一行。  报错的原因是, 几次循环后, 54张牌用完了,就 ...

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
if __name__ == '__main__':
    while True:
        puke = [3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, 3, 4, 5,
                6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, "小王", "大王"]
        players(3)
        input("按下回车键开庄...")
        zhuang()
        print("-"*46)
        inp = input("请问是否继续游戏? (y/n) ")
        if inp == "n" or inp == "N":
            break
        elif inp == "y" or inp == "Y":
            pass
        else:
            print("输入有误,请重新开始游戏")
            break
        print("\n\n")


将原代码 第二行删掉, 将 if __name__ == '__main__': 以下代码 改成上面的代码,即可无限循环
liuxiaoxin 发表于 2022-1-29 21:06
本帖最后由 liuxiaoxin 于 2022-1-29 21:10 编辑

yanshiqi 发表于 2022-1-29 20:22
[mw_shl_code=python,true]if __name__ == '__main__':
    while True:
        puke = [3, 4, 5, 6,  ...

if __name__ == '__main__':
    while True:
        puke = [3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, 3, 4, 5, 6, 7, 8, 9, 10,
                      "J", "Q", "K", "A", 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", 2, "小王", "大王"]
        players(3)
        input("按下回车键开庄...")
        zhuang()
        print("")
我直接这样整了 按回车一直继续
w92vv 发表于 2022-1-29 16:08
表情帝 发表于 2022-1-29 16:17
我也好奇啥是斗牛
 楼主| yanshiqi 发表于 2022-1-29 16:18
w92vv 发表于 2022-1-29 16:08
其实我就好奇什么是斗牛

大小王、花牌算10, A算 1.   各得五张牌, 其中任三张相加,得10或10的倍数即为有牛(凑不出即无牛),再看个位数 1-9,即牛1-9, 若个位0,就是牛牛
hutopower 发表于 2022-1-29 16:27
不错不错感谢分享
17798 发表于 2022-1-29 16:51
咱也不可能说只玩一把  加个循环更好吧
17798 发表于 2022-1-29 16:54
lz那个手机端是什么软件  
liuxiaoxin 发表于 2022-1-29 17:09
感谢分享,给力支持
winson365 发表于 2022-1-29 17:38
感谢大佬分享,可以尝试一下
额微粒波地 发表于 2022-1-29 18:20
yanshiqi 发表于 2022-1-29 16:18
大小王、花牌算10, A算 1.   各得五张牌, 其中任三张相加,得10或10的倍数即为有牛(凑不出即无牛), ...

他的意思可能是这个玩法叫“牛牛”。而不是“斗牛”
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-22 22:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表