我对编程很新,我正在为我的妹妹创建一个小游戏......
我有一个while循环,我希望有一个选项可以退出游戏,但我所知道的退出技术似乎都不起作用:
#main game:
while 1:
input_event_1 = gui.buttonbox(
msg = 'Hello, what would you like to do with your Potato Head?',
title = 'Main Screen',
choices = ('Check Stats', 'Feed', 'Exercise', 'Teach', 'Play', 'Go to Doctor', 'Change Favourite Thing', 'Get New Toy', 'Quit'))
if input_event_1 == 'Check Stats':
myPotatoHead.check_p_h_stats()
if input_event_1 == 'Change Favourite Thing':
myPotatoHead.change_favourite_thing()
if input_quit == 'Quit':
input_quit = gui.ynbox(
msg = 'Are you sure you want to quit?',
title = 'Confirm quit',
choices = ('Quit', 'Cancel'))
if input_event_quit == 'Quit':
sys.exit(1)
感谢任何帮助。
由于
- - - - - - - - UPDATE
感谢您的建议,但它仍然无效:
这是更新后的代码:
#import the required modules:
import easygui as gui
import os
#-----CLASS-----------------------------------
#Class:
class PotatoHead:
#Atributes:
def __init__(self):
self.data = game_data
self.first_name = self.data[0]
self.last_name = self.data[1]
self.gender = self.data[2]
self.colour = self.data[3]
self.fav_thing = self.data[4]
self.toys = []
self.toys.append(self.data[5])
self.age = '0.0'
self.hunger = '0.0'
self.health = '0.0'
self.fitness = '0.0'
self.education = '0.0'
self.happiness = '0.0'
self.tiredness = '0.0'
def check_p_h_stats(self):
self.toys_string = str(self.toys)
gui.msgbox(
msg = '''
Name: ''' + self.first_name + ' ' + self.last_name + '''
Gender: ''' + self.gender + '''
Colour: ''' + self.colour + '''
Favourite Thing: ''' + self.colour + '''
Toys:''' + self.toys_string + '''
Age: ''' + self.age + '''
Hunger: ''' + self.hunger + '''
Health: ''' + self.health + '''
Fitness: ''' + self.fitness + '''
Education: ''' + self.education + '''
Happiness: ''' + self.happiness + '''
Tiredness: ''' + self.tiredness + '''
''',
title = 'Potato Head Stats',
ok_button = 'Continue')
def change_favourite_thing(self):
new_fav_thing = gui.enterbox(
msg = 'Enter the new favourite thing:',
title = 'Change Favourite Thing',
default = 'Type Here')
self.fav_thing = new_fav_thing
#Methods:
#-----MAIN PROGRAM----------------------------
#set up game:
image = 'nest.gif'
game_choice = gui.ynbox(
msg = """Would you like to start a new game,
or load a previously saved one?""",
title = 'Start/Load Game',
choices = ('New Game', 'Load Game'),
image = image)
if game_choice == 1:
fieldNames = ['First Name', 'Last Name', 'Gender', 'Colour', 'Favourite Thing', 'First Toy']
new_p_head_data = []
new_p_head_data = gui.multenterbox(
msg = 'Fill in the starting information about your Potato Head:',
title = 'New Game',
fields = fieldNames,
values = ('', '', 'Male/Female', 'Red, Green, Blue, Yellow, White, Black', '', 'Choose either Rattle, Pacifier, Teddy, Doll, or Soft Ball'))
game_data = new_p_head_data
else:
gui.msgbox('This function is not yet supported, please start again...')
myPotatoHead = PotatoHead()
#main game:
while 1:
input_event_1 = gui.buttonbox(
msg = 'Hello, what would you like to do with your Potato Head?',
title = 'Main Screen',
choices = ('Check Stats', 'Feed', 'Exercise', 'Teach', 'Play', 'Go to Doctor', 'Change Favourite Thing', 'Get New Toy', 'Quit'))
if input_event_1 == 'Check Stats':
myPotatoHead.check_p_h_stats()
elif input_event_1 == 'Change Favourite Thing':
myPotatoHead.change_favourite_thing()
elif input_event_1 == 'Quit':
input_quit = gui.ynbox(
msg = 'Are you sure you want to quit?',
title = 'Confirm quit',
choices = ('Quit', 'Cancel'))
if input_quit == 'Quit':
sys.exit(1)
使用PYthon 2.5.4 for Mac 并使用Easygui 0.83
再次感谢任何建议
答案 0 :(得分:2)
我认为这是你的问题:
if input_quit == 'Quit':
input_quit = gui.ynbox(
msg = 'Are you sure you want to quit?',
应该是
if input_event_1 == 'Quit':
input_quit = gui.ynbox(
msg = 'Are you sure you want to quit?',
编辑:根据EasyGui教程,它仍然不起作用的原因是ynbox
返回0或1,而不是选项的字符串值。所以改为
elif input_event_1 == 'Quit':
input_quit = gui.ynbox(
msg = 'Are you sure you want to quit?',
title = 'Confirm quit',
choices = ('Quit', 'Cancel'))
if input_quit == 1:
sys.exit(1)
答案 1 :(得分:2)
我想也许是你的代码
if input_quit == 'Quit':
应该是
if input_event_1 == 'Quit':
就像你的其他支票一样?我不熟悉buttonbox
那件事,但是这张支票和其他支票之间的差异立即引起了震动并跳到眼前......
编辑:啊,发现它,它来自easygui(提到你正在使用的框架会有所帮助! - ) - 是的,它返回与按钮相关的字符串,所以我上面提出的改变绝对是关键点。
此外,将第一个之后的所有if input_event_1
更改为elif input_event_1
(因为它不能等于多个字符串,为什么一旦找到一个字符串就继续检查<强>是相等? - ),虽然不是绝对必要的,但是会有所改善。
答案 2 :(得分:0)
这种方式更优雅:
she_wants_to_play = true
while she_wants_to_play:
ask input
if input == quit:
she_wants_to_play = false
所以你很好地退出了while循环,而不是以10000吨的重量击中系统。
答案 3 :(得分:0)
几个检查站
if input_event_quit == 'Quit':
应该是input_quit == 'Quit':