简单的水鱼游戏(穷举法)(python3实现)

本文详细介绍了水鱼游戏的规则,包括玩家与电脑对战、牌型判定(水鱼、单对子和普通单牌)以及输赢规则。通过比较两组牌的点数和特定牌型来决定胜负。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(好像跟市面上的水鱼游戏的规则略有不同)

水鱼游戏规则
游戏流程:玩家和电脑对战,牌堆去掉J、Q、K、大小王,首先随机选电脑或玩家做为庄家,玩家拿到手牌后,把手牌分为两组,每组两张(可以通过输入一个排序号分组,第一第二张为一组,第三第四张为一组。),然后开牌比输赢。
输赢规则:玩家和电脑的两组牌分别比较,两组皆胜者胜。有两个对子(水鱼)最大,单对子次之,然后是单牌。同样类型的牌比点数,对子中A最大。单牌的话比相加的点数的个位数。9最大,0最小。水鱼输给两组都是0的单牌。
平局判定:如果两组牌一赢一输,则庄家胜。

需要应用到的库是random

运行结果如下:

import random

# 水鱼牌型判定
def Waterfish(li):
    if li[0][0] == li[0][1] and li[1][0] == li[1][1]:
        return True
    else:
        return False

# 单对子牌型判定
def Single(li):
    if li[0][0] == li[0][1] or li[1][0] == li[1][1]:
        return True
    else:
        return False

def paixing_determine(li):
    if Waterfish(li):
        return "水鱼牌"
    elif Single(li):
        return "单对子牌"
    else:
        return "普通单牌"

paiku = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10,
         10, 10, 10]  # 牌库
random.shuffle(paiku)  # 打乱牌库

ID = ['庄家','闲家']

print('======欢迎来到水鱼游戏======')
print('   ~小赌怡情,大赌伤身~\n   ~远离赌博,从我做起~')
print("------------------------")

# 身份抽取
computer = random.choice(ID)
ID.remove(computer)
people = ID[0]
print(f"电脑的身份是: {computer}\n玩家的身份是: {people}")

# 发牌
wanjia = []
cpter = []
for i in range(2):
    a = []
    b = []
    for j in range(2):
        a.append(paiku.pop())
        b.append(paiku.pop())
    wanjia.append(a)
    cpter.append(b)
print("------------------------")
print(f'玩家的手牌为: [{wanjia[0][0]},{wanjia[0][1]}],[{wanjia[1][0]},{wanjia[1][1]}]')
print(f'电脑的手牌为: [{cpter[0][0]},{cpter[0][1]}],[{cpter[1][0]},{cpter[1][1]}]')
print("------------------------")
paixing_wanjia = paixing_determine(wanjia)
paixing_computer = paixing_determine(cpter)
print(f'玩家的牌型为:{paixing_wanjia}')
print(f'电脑的牌型为:{paixing_computer}')
print("------------------------")
# 牌型比拼
if paixing_wanjia == "水鱼牌":
    # 水鱼牌的比拼
    if paixing_computer == '水鱼牌':
        if abs(wanjia[0][0]+wanjia[1][0]-10) > abs(cpter[0][0] + cpter[1][0]-10):
            print("恭喜!玩家获胜!")
        elif abs(wanjia[0][0]+wanjia[1][0]-10) < abs(cpter[0][0] + cpter[1][0]-10):
            print('恭喜!电脑获胜!')
        else:
            if computer == "庄家":
                print('恭喜!电脑获胜!')
            else:
                print('恭喜!玩家获胜!')
    # 水鱼牌vs单对子牌
    elif paixing_computer == "单对子牌":
        print("恭喜!玩家获胜!")

    # 水鱼牌 vs 普通单牌
    elif paixing_computer == "普通单牌":
        if (cpter[0][1]+cpter[0][0])%10 == 0 and (cpter[1][0] + cpter[1][1])%10 == 0:
            print("恭喜!电脑获胜!")
        else:
            print('恭喜!玩家获胜!')
# 单对子牌的比拼
elif paixing_wanjia == '单对子牌':
    if paixing_computer == '水鱼牌':
        print("恭喜!电脑获胜!")
    elif paixing_computer == '单对子牌':
        if wanjia[0][0] == wanjia[0][1]:
            if cpter[0][0] == cpter[0][1]:
                if wanjia[0][0] == 1 and cpter[0][0] != 1:
                    print('恭喜!玩家获胜!')
                elif wanjia[0][0] != 1 and cpter[0][0] == 1:
                    print('恭喜!电脑获胜!')
                else:
                    if abs(wanjia[0][0]-10) > abs(cpter[0][0]-10):
                        print('恭喜!玩家获胜!')
                    elif abs(wanjia[0][0]-10) < abs(cpter[0][0]-10):
                        print('恭喜!电脑获胜!')
                    else:
                        if abs(wanjia[1][0]+wanjia[1][1]-10) > abs(cpter[1][0]+cpter[1][1]-10):
                            print('恭喜!玩家获胜!')
                        elif abs(wanjia[1][0]+wanjia[1][1]-10) < abs(cpter[1][0]+cpter[1][1]-10):
                            print('恭喜!电脑获胜!')
                        else:
                            if computer == '庄家':
                                print('恭喜!电脑获胜!')
                            else:
                                print('恭喜!玩家获胜!')
            else:
                if wanjia[0][0] == 1 and cpter[1][0] != 1:
                    print('恭喜!玩家获胜!')
                elif wanjia[0][0] != 1 and cpter[1][0] == 1:
                    print('恭喜!电脑获胜!')
                else:
                    if abs(wanjia[0][0] - 10) > abs(cpter[1][0] - 10):
                        print('恭喜!玩家获胜!')
                    elif abs(wanjia[0][0] - 10) < abs(cpter[1][0] - 10):
                        print('恭喜!电脑获胜!')
                    else:
                        if abs(wanjia[1][0] + wanjia[1][1] - 10) > abs(cpter[0][0] + cpter[0][1] - 10):
                            print('恭喜!玩家获胜!')
                        elif abs(wanjia[1][0] + wanjia[1][1] - 10) < abs(cpter[0][0] + cpter[0][1] - 10):
                            print('恭喜!电脑获胜!')
                        else:
                            if computer == '庄家':
                                print('恭喜!电脑获胜!')
                            else:
                                print('恭喜!玩家获胜!')
        else:
            if cpter[0][0] == cpter[0][1]:
                if wanjia[1][0] == 1 and cpter[0][0] != 1:
                    print('恭喜!玩家获胜!')
                elif wanjia[1][0] != 1 and cpter[0][0] == 1:
                    print('恭喜!电脑获胜!')
                else:
                    if abs(wanjia[1][0] - 10) > abs(cpter[0][0] - 10):
                        print('恭喜!玩家获胜!')
                    elif abs(wanjia[1][0] - 10) < abs(cpter[0][0] - 10):
                        print('恭喜!电脑获胜!')
                    else:
                        if abs(wanjia[0][0] + wanjia[0][1] - 10) > abs(cpter[1][0] + cpter[1][1] - 10):
                            print('恭喜!玩家获胜!')
                        elif abs(wanjia[0][0] + wanjia[0][1] - 10) < abs(cpter[1][0] + cpter[1][1] - 10):
                            print('恭喜!电脑获胜!')
                        else:
                            if computer == '庄家':
                                print('恭喜!电脑获胜!')
                            else:
                                print('恭喜!玩家获胜!')
            else:
                if wanjia[1][0] == 1 and cpter[1][0] != 1:
                    print('恭喜!玩家获胜!')
                elif wanjia[1][0] != 1 and cpter[1][0] == 1:
                    print('恭喜!电脑获胜!')
                else:
                    if abs(wanjia[1][0] - 10) > abs(cpter[1][0] - 10):
                        print('恭喜!玩家获胜!')
                    elif abs(wanjia[1][0] - 10) < abs(cpter[1][0] - 10):
                        print('恭喜!电脑获胜!')
                    else:
                        if abs(wanjia[0][0] + wanjia[0][1] - 10) > abs(cpter[0][0] + cpter[0][1] - 10):
                            print('恭喜!玩家获胜!')
                        elif abs(wanjia[0][0] + wanjia[0][1] - 10) < abs(cpter[0][0] + cpter[0][1] - 10):
                            print('恭喜!电脑获胜!')
                        else:
                            if computer == '庄家':
                                print('恭喜!电脑获胜!')
                            else:
                                print('恭喜!玩家获胜!')
    else:
        print("恭喜!玩家获胜!")
# 普通单牌
else:
    A = 0
    B = 0
    if paixing_computer == '水鱼牌':
        print("恭喜!电脑获胜!")
    elif paixing_computer == '单对子牌':
        print('恭喜!电脑获胜!')
    else:
        # 第一组比较
        if abs(wanjia[0][0] + wanjia[0][1]-10) > abs(cpter[0][0] + cpter[0][1] -10):
            A += 1
        elif abs(wanjia[0][0] + wanjia[0][1]-10) < abs(cpter[0][0] + cpter[0][1] -10):
            B += 1
        # 第二组比较
        if abs(wanjia[1][0] + wanjia[1][1]-10) > abs(cpter[1][0] + cpter[1][1] -10):
            A += 1
        elif abs(wanjia[1][0] + wanjia[1][1]-10) < abs(cpter[1][0] + cpter[1][1] -10):
            B += 1
        if A > B:
            print("恭喜!玩家获胜!")
        elif B > A:
            print("恭喜!电脑获胜!")
        else:
            if computer == "庄家":
                print('恭喜!电脑获胜!')
            else:
                print('恭喜!玩家获胜!')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值