用python实现21点小游戏

import random

# 定义牌堆
cards = [1,2,3,4,5,6,7,8,9,10,10,10,10]*4

# 定义计算手牌点数的函数
def count_points(hand):
    points = sum(hand)
    if points > 21 and 11 in hand:
        points -= 10
    return points

# 定义游戏主体
def play_game():
    # 初始化玩家和庄家的手牌
    player_hand = []
    dealer_hand = []
    
    # 玩家先拿一张牌
    player_hand.append(random.choice(cards))
    print("你的手牌是:", player_hand)
    
    # 庄家拿两张牌,其中一张暗牌
    dealer_hand.append(random.choice(cards))
    dealer_hand.append(random.choice(cards))
    print("庄家的手牌是:[?,", dealer_hand[1], "]")
    
    # 玩家决定是否继续拿牌
    while True:
        choice = input("是否继续拿牌?(y/n)")
        if choice == 'y':
            player_hand.append(random.choice(cards))
            print("你的手牌是:", player_hand)
            if count_points(player_hand) > 21:
                print("你爆了!")
                return -1
        else:
            break
    
    # 庄家一直拿牌直到手牌点数大于等于17
    while count_points(dealer_hand) < 17:
        dealer_hand.append(random.choice(cards))
        print("庄家的手牌是:[?,", dealer_hand[1:], "]")
    
    # 判断胜负
    player_points = count_points(player_hand)
    dealer_points = count_points(dealer_hand)
    print("你的点数是:", player_points)
    print("庄家的点数是:", dealer_points)
    if player_points > 21:
        return -1
    elif dealer_points > 21:
        return 1
    elif player_points > dealer_points:
        return 1
    elif player_points == dealer_points:
        return 0
    else:
        return -1

# 开始游戏
while True:
    result = play_game()
    if result == 1:
        print("你赢了!")
    elif result == 0:
        print("平局!")
    else:
        print("你输了!")
    choice = input("是否再来一局?(y/n)")
    if choice == 'n':
        break

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值