游戏描述:
三个玩家,54张牌
- 默认先给用户发一张牌,其中 J、Q、K、小王、大王代表的值为0.5,其他就是则就是当前的牌面值。
- 用户根据自己的情况判断是否继续要牌。
- 要,则再给他发一张。
- 不要,则开始给下个玩家发牌。
- 如果用户手中的所有牌相加大于11,则表示爆了,此人的分数为0,并且自动开始给下个人发牌。
import random
user_list = ["a","b","c"]
total_poke_list = [] #计分总数
result = {} #计分
cardList = []
"""
生成牌到一个列表
colList
numList
"""
colList = ["红桃","黑桃","方块","草花"]
numList = []
for i in range(1,14):
numList.append(i)
#print(numList)
for col in colList:
for num in numList:
cardList.append((col,num))
cardList.append(("小王",14))
cardList.append(("大王",15))
print(cardList)
for item in user_list:
result.setdefault(item,0)
# 第一轮发牌 默认每个人都发
for user in user_list:
# input("请玩家{}输入是否要牌 输入'Y' or 'N':".format(user))
index = random.randint(0,len(cardList)-1)
card = cardList[index]
print("{}的牌是{}:".format(user,card))
if 0<card[1]<11:
result[user] += card[1]
else:
result[user] += 0.5
cardList.pop(index)
print("当前分数",result)
# 其他发牌轮
while True:
#for i in range()
passNum = 0 #一轮中选择跳过要牌的人数
maxNum = 0 #一轮中达到11分的人数
for numUser in range(len(user_list)-1,-1,-1): # 因为涉及pop,所以倒序取
#print(user_list[numUser])
mm = input("请玩家{}输入是否要牌 输入'Y' or other is (N):".format(user_list[numUser]))
if mm.upper() == 'Y':
index = random.randint(0,len(cardList)-1)
card = cardList[index]
print("{}的牌是{}:".format(user_list[numUser], card))
if 0 < card[1] < 11:
result[user_list[numUser]] += card[1]
else:
result[user_list[numUser]] += 0.5
cardList.pop(index)
if result[user_list[numUser]] > 11:
result[user_list[numUser]] = 0
print("{}当前的游戏分数是{}".format(user_list[numUser],result[user_list[numUser]]))
user_list.pop(numUser)
print("剩余玩家数为:{}".format(len(user_list)))
if len(user_list)<2: #结束条件1:剩余1人,游戏自动结束,进入while进行判断
#print("")
break
else:
pass
else:
print("{}当前的游戏分数是{}".format(user_list[numUser], result[user_list[numUser]]))
else:
passNum += 1
# continue
# 结束条件
# 判断剩余游戏人数:
if len(user_list)<2 or passNum == len(user_list) or maxNum == len(user_list):
break
else:
pass
# 结束条件
# 某个人的结束条件:计分大于11
# 牌局结束条件:
# 1.三人中的两个人都大于11
# 2.在一轮中所有玩家都不要牌
# 3.在一轮中剩余所有玩家都为11,则游戏结束,报分,结果是多个赢家
# 结束时输出结果
print(result)