撲克11點游戲(python代碼)


import random

'''
紙牌11點游戲
規則:
1. 3個人參與,默認先給用戶發一張牌,其中 J、Q、K、小王、大王代表的值為0.5,其他就是則就是當前的牌面值。
2. 隨機順序開始輪流抽牌,可以不抽,就得到點數
3. 超過11點爆炸出局,最接近11點的獲勝

result={'player1':10,
        'player2':8,
        'player3':0}

'''

# 生成一副牌. The suits are called hearts, clubs, diamonds and spades.
poker_cards = []
for s in ['黑桃', '草花', '紅心', '方片']:
    for n in range(1, 14):
        poker_cards.append((s, n))
poker_cards.append(('joker', 14))
poker_cards.append(('joker', 15))
# print(poker_cards)
# print(len(poker_cards))

# 生成玩家
players = []
play_num = int(input("幾個人玩 ? "))
for i in range(play_num):
    players.append(input("玩家 {}:".format(i + 1)))
print(players)
result = {}

# 生成當前玩家過程
while players:
    now_player = players.pop(random.randint(0, len(players) - 1))
    now_pick = []
    while True:
        msg1 = "{player},你要抽牌還是不抽?(y/n)".format(player=now_player)
        choice = input(msg1)
        if choice.lower() == 'y':
            pick_card = poker_cards.pop(random.randint(0, len(poker_cards) - 1))
            now_pick.append(pick_card)
            if 1 <= pick_card[1] <= 10:
                card_value = pick_card[1]
            else:
                card_value = 0.5
            player_score = result.get(now_player, 0)
            player_score += card_value
            result[now_player] = player_score
            if player_score <= 11:
                msg2 = "{player},你抽到的牌是:{pick},現有牌組{cards},你的總分是 {score} .".format(player=now_player, pick=pick_card,
                                                                                   cards=now_pick,
                                                                                   score=player_score)
                print(msg2)
            else:
                player_score = 0
                result[now_player] = player_score
                msg3 = "{player},你抽到的牌是:{pick},現有牌組{cards},總分>11,你爆了,分數歸0".format(player=now_player, pick=pick_card,
                                                                                  cards=now_pick, )
                print(msg3)
                break
        elif choice.lower() == 'n':
            player_score = result.get(now_player, 0)
            msg4 = "{player},你選擇不抽牌,你的總分是 {score} . 等待結果吧".format(
                player=now_player, score=player_score)
            print(msg4)
            result[now_player] = player_score
            break
        else:
            print("輸入錯誤,請重試。")

for k, v in result.items():
    msg5 = "{name} 的總分是 {score}".format(name=k, score=v)
    print(msg5)
# 結果演示:
#
# 幾個人玩 ? 3
# 玩家 1:a
# 玩家 2:b
# 玩家 3:c
# ['a', 'b', 'c']
# c,你要抽牌還是不抽?(y/n)y
# c,你抽到的牌是:('草花', 12),現有牌組[('草花', 12)],你的總分是 0.5 .
# c,你要抽牌還是不抽?(y/n)y
# c,你抽到的牌是:('紅心', 8),現有牌組[('草花', 12), ('紅心', 8)],你的總分是 8.5 .
# c,你要抽牌還是不抽?(y/n)n
# c,你選擇不抽牌,你的總分是 8.5 . 等待結果吧
# b,你要抽牌還是不抽?(y/n)y
# b,你抽到的牌是:('黑桃', 7),現有牌組[('黑桃', 7)],你的總分是 7 .
# b,你要抽牌還是不抽?(y/n)y
# b,你抽到的牌是:('草花', 5),現有牌組[('黑桃', 7), ('草花', 5)],總分>11,你爆了,分數歸0
# a,你要抽牌還是不抽?(y/n)n
# a,你選擇不抽牌,你的總分是 0 . 等待結果吧
# c 的總分是 8.5
# b 的總分是 0
# a 的總分是 0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM