扑克游戏11点

游戏描述:
三个玩家,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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值