黑傑克blackjack 遊戲的簡化版(第一個遊戲程序)

學完了python的基礎篇,大概很多東西都是可以做了,不過一般來說第一個項目都是飛機大戰,由於之前學習C 的時候也做過飛機大戰,於是我想嘗試一下別的項目,就從最簡單的黑傑克開始執行吧。感覺德州撲克和黑傑克的運行原理差不多,都可以使用python自帶的隨機抽取函數達到隨機抽卡的效果,不需要自己再去創建隨機數組了,執行代碼如下,目前是簡化版本,有幾個問題:
1 A+花色牌的問題沒有解決(在黑傑克中,A加任意花牌可以直接獲勝),我覺得可以把花色牌和A分別做兩個集合AB,然後用語句
if (i in A and j in B) or (i in B and j in A)
print(“直接獲勝”)
break
來進行判定。

2 fir_value =random.sample(fir_pockers.items(),1) 這個語句中產生隨機抽取的方法會將字典類型的變量變爲列表類型,所以後面的訪問需要用到訪問列表的方法,然後強制爲int類型進行值的計算。

3 積分版塊的缺失 不過這個倒是挺容易,直接從 10000分開始,分爲 10
20 50 100 200 500 1000幾種籌碼然後記性計算就完事了。

#定義黑紅梅方四種撲克,heart(紅桃),club(梅花),spade(黑桃),diamond(方片),並且賦值。

import random
import time
from random import choice
begain = True
while True:
begain = input(“請輸入開始來開始遊戲或者結束來結束遊戲!:”)
if begain == ‘開始’:
def get_card():
pocker_heart={‘紅a’: 1, ‘紅2’: 2, ‘紅3’: 3, ‘紅4’: 4, ‘紅5’: 5, ‘紅6’:
6, ‘紅7’: 7, ‘紅8’: 8, ‘紅9’: 9, ‘紅10’: 10, ‘紅J’: 10, ‘紅Q’: 10,‘紅K’: 10}
pocker_club={‘梅a’: 1, ‘梅2’: 2, ‘梅3’: 3, ‘梅4’: 4, ‘梅5’: 5, ‘梅6’:
6, ‘梅7’: 7, ‘梅8’: 8, ‘梅9’: 9, ‘梅10’: 10, ‘梅J’: 10, ‘梅Q’: 10,‘梅K’: 10}
pocker_spade={‘黑a’: 1, ‘黑2’: 2, ‘黑3’: 3, ‘黑4’: 4, ‘黑5’: 5, ‘黑6’: 6, ‘黑7’
: 7, ‘黑8’: 8, ‘黑9’: 9, ‘黑10’: 10, ‘黑J’: 10, ‘黑Q’: 10,‘黑K’: 10}
pocker_diamond={‘方a’: 1, ‘方2’: 2, ‘方3’: 3, ‘方4’: 4, ‘方5’: 5, ‘方6’: 6, ‘方7’:
7, ‘方8’: 8, ‘方9’: 9, ‘方10’: 10, ‘方J’: 10,‘方Q’: 10, ‘方K’: 10}

將四種撲克放進撲克集合裏面 並且引入choice方法產生隨機數組

        pockers = [pocker_club,pocker_diamond,pocker_heart,pocker_spade]

#隨機第一張卡牌

        fir_pockers = choice(pockers)

        fir_value =random.sample(fir_pockers.items(),1)

        for key,value in fir_value:
            value = int(value)
        # print(value,end="  ")
            print(key, end="  ")
            return value

    def player():
        first = get_card()
        second = get_card()
        print()
        sum = first + second
        print(sum)
        return sum

#定義玩家的牌
def get_more():
print(“你的牌:”,end="")
hand_cards = player()
#hand_cards = hand_cards
while hand_cards <= 21:
message = input(“你還需要更多的牌嗎?yes\ no:”.lower())
if message == ‘yes’:
print(“再來一張!”)
again = get_card()
time.sleep(1)
hand_cards = again + hand_cards
if hand_cards <= 21:
print(“總分” + str(hand_cards))
continue
else:
print( “BOSS:” + str(hand_cards)+ “你已經原地爆炸了,小老弟!”)

            else:
                print("你最終的得分是"+ str(hand_cards))
                break
#print( "你輸定了,小老弟!")
        return hand_cards

#定義莊家的牌
def dealer():
print(“莊家的牌:”,end="")
dealer_card = player()
play_point = get_more()
if play_point > 21:
print(“BOSS:你就是個弟弟!”)
elif dealer_card >= play_point:
print(“BOSS:我都還沒動手,你就躺下了。”)

        else:
            while dealer_card < play_point:
                print("BOSS:逆",end="")
                time.sleep(0.5)
                print("天",end="")
                time.sleep(0.5)
                print("改",end="")
                time.sleep(0.5)
                print("命!",end="")
                time.sleep(0.5)
                again = get_card()
                dealer_card = dealer_card + again
                if dealer_card < play_point:
                    continue
                elif dealer_card > 21:
                    print("BOSS:"+str(dealer_card)+"點,我怎麼可能會輸!")
                    break
                else:
                    print("BOSS:哎,"+str(dealer_card)+"點,人生寂寞,何人可與我一站!")
                    break

    dealer()
elif input == '結束':

    break
else:
    break

後記 以後應該會做德州撲克 不過我需要學習一些python的窗體知識,改善一下界面 ,沒有畫面的程序終究是不成的。不過抽卡的代碼倒是可以直接抄過去 就是定義的字典值需要改一改。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章