回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我希望我的代码</p>
<ul>
<li>询问用户名和存储用户名</li>
<li>显示一个菜单屏幕,玩家必须-输入任何键开始游戏</李>
<li><p>当玩家输入“任何提示”时生成数字并重置“尝试”</p></li>
<li><p>游戏中:</p></li>
<li><p>玩家下注和猜测</p></li>
<li><p>如果错了,回到猜测和打赌。变量平衡并尝试减去赌注和-1尝试</p></li>
<li><p>如果猜测和生成的数字相同,则赢得屏幕。玩家得到的可变奖金加在他的余额上</p></li>
<li><p>赢/输都会显示“选择”菜单,并通过回答“是”或“否”提示玩家重新开始游戏。</p></li>
<li><p>如果是,则用奖品/损失更新余额,生成新号码并更新余额。尝试也被重置</p></li>
<li><p>如果没有,玩家被送回菜单</p></li>
<li><p>如果tries==0,那么“yes/no”选项提示将再次出现,因为玩家输了,余额将更新为输了</p></li>
</ul>
<p>问题是</p>
<ul>
<li><p>我怀疑函数的顺序和/或重新启动/结束游戏的循环有问题</p></li>
<li><p>除了一件事之外,所有的事情都能正常工作:当游戏赢了或输了0次时,输入yes/no,这种情况就会发生:</p></li>
</ul>
<p>图:0<a href="https://i.stack.imgur.com/9fbLL.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9fbLL.jpg" alt="enter image description here"/></a></p>
<p>我尝试过改变游戏的状态变量,改变if/elif语句,甚至尝试过添加更多的函数/while循环,但都不适合我</p>
<p>我对Python还不熟悉,已经到了极限</p>
<p>我的代码:</p>
<pre><code>#pylint:disable=W0613
#pylint:disable=W0312
#pylint:disable=W0611
from random import randint
import math
######### NUMBER GUESSING GAME ##########
START_BALANCE = 500
POSITIVES = ["yes", "yeah", "y", "yep", "roger", "yea", "positive", "play"]
NEGATIVES = ["no", "nope", "n", "nah", "negative"]
choice = ("\nPlay again? Y/N: ").upper()
userName = input ("Welcome to NumGuess! What is your name?\n")
userName = userName.title()
def menu():
print(''' \n Hello {}!\n
* The rules are very simple *
-- The AI generates a number from 1 - 100. --
-- You will have to make a bet and enter your guess. --
-- You have 10x tries. If you fail, you lose your bet. --
-- The AI will let say if you guessed 'low' or 'high' --
-- Correct guess = prize. Wrong guess = lost bet. --
- Good Luck! -
'''.format(userName))
def menuPlay():
try:
menuPlay = input("Press any key to start the game.")
# except (ValueError):
# return menuPlay()
except TypeError:
return menuPlay()
else:
if menuPlay.upper() != "":
return
def xNumbers():
number = randint(1,100)
return number
def xTries():
tries = 3
return tries
def xBets():
print("-------------------------------------")
bet = int(input("Enter your bet: "))
return bet
def xGuesses():
guess = int(input("Enter your guess: "))
return guess
menu()
menuPlay()
tries = xTries()
number = xNumbers()
def main(tries, balance):
print("\nYour balance is: {}$.\nYou have {}x tries left.\n".format(balance, tries))
bet = xBets()
guess = xGuesses()
print("\nnumber: {}, guess: {}, bet: {}".format(number, guess, bet)) ##just to check if things are working
if tries <=1:
print("\nGAME OVER! - YOU ARE OUT OF TRIES!\n - The number was: {}.".format(number))
input(choice)
return [balance]
if guess == number:
prize = bet * float(3.75)
prize = math.ceil(prize)
balance += prize
print("Congratulations! You win: {}$".format(prize))
print("Your new balance is: {}$\n".format(balance))
elif guess < number:
print("Wrong guess!")
print("- Your guess is too low!")
tries -= 1
balance -= bet
main(tries, balance)
elif guess > number:
print("Wrong guess!")
print("- Your guess is too high!")
tries -= 1
balance -= bet
main(tries, balance)
player_Choice = input(choice)
if player_Choice in POSITIVES: #If player wants to play again.
print("New round started!")
return [True, balance] #return True & updated balancd to while loop.
else: # If player inputs NO to play again.
print("\nThanks for playing!\n")
return [False, balance] #return False & updated balnce to while loop - should end the game.
# BONUS: If this could return to menuPlay() with an updated balance, that would be ideal.
game_state = [True, START_BALANCE]
while game_state[0]:
game_state = main(tries, game_state[1])
</code></pre>
<p>`</p>
<p>谢谢你帮助一个新手</p>