如何解决如何通过按“ r”按钮重新启动我的程序?
好的,我已经在Python 3.7.4和Pygame 1.9.6中创建了Space Invaders。我一切正常,没有错误或任何东西。我什至有一个暂停按钮可以很好地工作。只是在屏幕上显示“ GAME OVER”(游戏结束)文字表示您迷路了时。文本消失后,我想弹出一个窗口,要求再次播放。但是我只是不知道从哪里开始。我已经在How do I restart a program based on user input?寻求帮助,但是我不知道在哪里实现或在哪里实现。这是我在Pygame中创建的第一个真实项目/游戏。
代码:
Action
由于“正在运行的循环”上方的所有内容都在不断加载,或者为了进行数据检索(如图像),图像的坐标以及背景音乐等。所以我希望它像暂停/取消暂停部分一样我按下“ r”时的代码我想在不退出程序的情况下重播该程序。因此,我非常感谢大家的帮助。谢谢大家。
解决方法
您必须在对象中创建函数或方法以重置数据并在每次游戏前使用它。您可以为此使用外部while
循环。
# executed only once
pygame.init()
screen = ...
# .. load data ...
player = ...
enemy = ...
gameing = True
while gameing:
# reset data before every game
player.reset()
enemy.reset()
score = 0
paused = False
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT: # exit game
running = False
gameing = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_r: # restart game (but don't exit)
running = False
#gameing = True
if event.key == pygame.K_x: # exit game and program
running = False
gameing = False
if game_over: # restart game (but don't exit)
running = False
#gameing = True
您还可以按照命令中提到的@ Starbuck5进行组织-但随后您应使用running
退出程序,但不要在游戏结束时退出游戏
def reset():
global score,paused,running
player.reset()
enemy.reset()
score = 0
paused = False
running = True
# executed only once
pygame.init()
screen = ...
# .. load data ...
player = ...
enemy = ...
# (re)set data before first game
reset()
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT: # exit game
running = False
gameing = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_r: # restart game (but don't exit)
#running = False # DON'T DO THIS
reset()
if event.key == pygame.K_x: # exit game and program
running = False
if game_over: # restart game (but don't exit)
#running = False # DON'T DO THIS
reset()
这需要为每个必须重置的变量使用global
,这样在类中包含代码时可以更有用,并且可以使用self.
代替global
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。