簡體   English   中英

試圖做一個二十一點游戲

[英]Trying to make a blackjack game kind of

總結問題

我正在嘗試制作一個簡單的二十一點程序,該程序為庄家 1-11 選擇兩個數字,也為玩家 1-11 選擇兩個數字。 我想制作一個循環,根據玩家輸入、擊中或停留的內容來檢查玩家是否擊中或停留。 如果他們擊中,我希望它在玩家牌組中添加一張牌,並讓他們選擇再次擊中或留下。

如果他們留下來,我希望經銷商檢查一組規則,這些規則是:

1:庄家的點數是否小於 17 且小於玩家的點數 1a:如果小於 17 且小於玩家的點數,將抽取一個新號碼 1-11 並將其添加到庄家手牌中 1b:它然后將運行檢查它是否具有以下條件的循環

2:庄家是否有 17-21 且是否多於閑家 2a:如果有任何數字 17-21 且多於閑家,則打印獲勝信息

3:庄家是否有超過 21 3a:如果有超過 21 則打印房屋破產信息

4:庄家是否多於玩家 4a:如果庄家多於玩家(但由於之前的檢查而小於 21),那么它會打印一個庄家獲勝消息

所以這就是我試圖用留命令完成的事情,到目前為止我還沒有發現任何問題。

但是,即使我不鍵入stay,我的命中命令也不會注冊。我試圖通過讓它打印一條消息並在我鍵入命中時結束循環來調試它,但無論如何它仍然會通過停留命令運行,我認為這可能是我的輸入轉換為字符串的問題。

不要對我太苛刻,哈哈,我上周只自學了如何編碼,並從 python 開始。

這是我遇到問題的代碼:

'''

                    else:

                        hitstay = True

                        while hitstay:
                            action = str(input("hit or stay? "))
                            dealer = sum(dealer_cards)
                            player = sum(player_cards)
                            if action == 'stay' or 'Stay':
                                if dealer < 17 and dealer < player:
                                    dealer_cards.append(random.randint(1, 11))
                                    dealer = sum(dealer_cards)
                                    print(f"Dealer pulls {dealer_cards[-1]}\n"
                                          f"Dealer now has {sum(dealer_cards)}")
                                    if 17 <= dealer <= 21 and dealer > player:
                                        print(f"House won! Dealer cards: {dealer_cards}, {sum(dealer_cards)}\n"
                                              f"Player cards: {player_cards}, {sum(player_cards)}")
                                        playing = False
                                        hitstay = False
                                    elif dealer > 21:
                                        print(f'House busted! Dealer cards: {dealer_cards}')
                                        playing = False
                                        hitstay = False
                                    elif dealer > player:
                                        print(f'House wins, Dealer cards {dealer_cards}, {sum(dealer_cards)}\n'
                                              f'Player cards: {player_cards}, {sum(player_cards)}')
                                        playing = False
                                        hitstay = False
                            if action == 'hit' or 'Hit':
                                print('command hit')
                                playing = False
                                hitstay = False

'''

代替:

if action == 'stay' or 'Stay':

做:

if action == 'stay' or action == 'Stay':

或者:

if action in ('stay', 'Stay'):

或者最重要的是:

if action.lower() == 'stay':

第一個版本不起作用,因為它被解釋為:

if (action == 'stay') or 'Stay':

這與以下內容相同:

if (action == 'stay') or True:

這與以下內容相同:

if True:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM