我的collide\rect函数没有像我期望的那样工作。问题是当按下“r”键时,它应该能够重置所有内容并继续游戏。但当我实际按下“r”键时,当我在pause语句中添加时,它不会改变任何东西。我想让游戏暂停时,我有两个精灵(球,障碍物)碰撞。在用户输入字母“r”之后,它应该返回到运行并重置两个精灵的位置。我得到的错误是,当我按下“r”键时,它不会改变表面上的任何东西。你知道吗
我在循环之前启动了paused = False
,而不是在任何类或函数中
这是我的while循环:
paused = False
def display_text(text):
font = pygame.freetype.Font('helvetica.ttc', 32)
text_attributed = font.render_to(gameDisplay, (300,300), text, black)
while not crashed:
time = pygame.time.get_ticks()
obstacle.change_x()
for event in pygame.event.get():
if event.type == pygame.QUIT:
crashed = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
ball.jump_true()
if event.key == pygame.K_SPACE:
ball.jump_true()
if event.key == pygame.K_r:
paused = not paused
if ball.collide == True:
gameDisplay.fill(white)
display_text('You Lost! type "R" to restart')
paused = True
if paused == True:
ball.reset_position()
obstacle.reset_position()
pygame.display.flip()
clock.tick(20)
else:
ball.jump()
ball.test_collision(obstacle)
gameDisplay.fill(white)
ball.update()
obstacle.update()
pygame.display.flip()
clock.tick(60)
pygame.quit()
sys.exit()
不要把事情搞得太复杂。您不需要多个事件循环。使用1个主循环、1个事件循环和一个指示游戏是否暂停的状态。e、 g.:
相关问题 更多 >
编程相关推荐