import math
import random
import time
import sys
Start = False
Quit = False
while True:
print ("Welcome to my first ever RPG! created 10/07/2016")
time.sleep(2)
begin = raw_input("Would you like to start the game?")
if begin.strip() in ("yes" , "y" , "Yes" , "Y" ):
Start = True
break
while Start == True:
player_name = raw_input("What would you like to name your character?")
print ("Welcome " + player_name.capitalize())
Quit_command = raw_input()
if Quit_command.strip() in ("q" , "Q"):
print("Game closing....")
time.sleep(1)
Quit = True
break
while Quit == True:
sys.exit()
正如你所看到的,我可能编码这个令人震惊的哈哈但基本上,我想要的是能够允许用户在执行程序期间按下'Q'按钮时退出程序ANYTIME
P.S我是python的新手,所以最简单的解决方案将非常感谢,谢谢!
答案 0 :(得分:1)
如果是一个简单的游戏,你可以依靠提示用户,并检查他是否用Q
或其他东西回复。 (因此,输入与程序同步。)
在这种情况下,您可以使用Dan Coates的回答。虽然,我会扩展他的preprocess_user_input
函数来处理整个提示序列:
import sys
def user_input(prompt):
"""user_input(prompt)
prompt -- string to prompt the user with
returns the user's answer to the prompt
or handles it in special cases
"""
inp = raw_input(prompt)
if inp.strip().upper() == "Q":
print("Bye, gamer!")
sys.exit()
return inp
# and use this function everywhere now
begin = user_input("Would you like to start the game?")
if begin.strip() not in ("yes" , "y" , "Yes" , "Y" ):
print("Ok, maybe next time...")
sys.exit()
player_name = user_input("What would you like to name your character?")
print("Welcome " + player_name.capitalize())
while True:
# now we are in the game
act = user_input("People are celebrating on the north, yelling 'Selecao! Parabens!'\nWould you like to go north?")
...process the act...
- 等等。
您可能希望为特殊情况添加更多选项。然后你需要更多if
个分支。您可能想知道“如何在Python中case
?”。答案是:"do it with dictionaries"。这是一个很好的方法。 (事实上,人们可以根据用户所处的每种情况在选项词典上构建整个游戏。)
但是在异步输入的情况下(因此,当用户自己按下键时,没有程序提示他并期望输入)这并不简单。退出正在运行的Python程序的最简单方法是按 Ctrl + C 。它会向程序发送SIGINT
信号。哪个Python转换为异常,称为KeyboardInterrupt
。 (不确定Windows中的信号,但对于Python,它应该在任何操作系统上都相同。)如果try..except
没有捕获到异常,它会在异常提示下退出程序。如果你需要 - 你可以捕获它并做你想做的事。 (打印消息“再见,游戏玩家!”并退出程序。This quiestion是另一个例子。)
但是为了捕获任何按下的自定义组合键,可能需要更多参与方法。
答案 1 :(得分:0)
在架构上,我认为你想要一些帮助函数来处理任何用户输入并检查" global"在检查特定于您提醒用户的任何特定问题的选项之前,退出Q等选项。
例如,它看起来像这样:
begin = raw_input("Would you like to start the game?")
preprocess_user_input(begin)
...
player_name = raw_input("What would you like to name your character?")
preprocess_user_input(player_name)
print ("Welcome " + player_name.capitalize())
...
def preprocess_user_input(user_input):
if user_input.strip().upper() == 'Q':
sys.exit()