(好像跟市面上的水鱼游戏的规则略有不同)
水鱼游戏规则
游戏流程:玩家和电脑对战,牌堆去掉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('恭喜!玩家获胜!')