Python 是否有任何事情可以影响我需要更早地进行time.sleep()?
我是初学者,正在学习pygame。我正在学习一个简单游戏的教程,我不知道问题出在哪里。我有一个崩溃函数并使用time.sleep()。但是睡眠时间越早,整个代码就变得毫无用处 我正在Mac上工作,但我不认为这应该是造成这种情况的原因 我曾尝试将time.sleep()放入另一个函数,并在crash函数中使用该函数,但效果并不理想,我不确定time.sleep是否有某种偏好Python 是否有任何事情可以影响我需要更早地进行time.sleep()?,python,pygame,Python,Pygame,我是初学者,正在学习pygame。我正在学习一个简单游戏的教程,我不知道问题出在哪里。我有一个崩溃函数并使用time.sleep()。但是睡眠时间越早,整个代码就变得毫无用处 我正在Mac上工作,但我不认为这应该是造成这种情况的原因 我曾尝试将time.sleep()放入另一个函数,并在crash函数中使用该函数,但效果并不理想,我不确定time.sleep是否有某种偏好 def text_objects(text, font): textSurface = font.render(te
def text_objects(text, font):
textSurface = font.render(text, True, black)
return textSurface, textSurface.get_rect()
def message_display(text):
largeText = pygame.font.Font('freesansbold.ttf',115)
TextSurf, TextRect = text_objects(text, largeText)
TextRect.center = ((display_width/2),(display_height/2))
gameDisplay.blit(TextSurf, TextRect)
pygame.display.update()
time.sleep(2)
game_loop()
def crash():
message_display('You Crashed')
前两个函数应该不是问题,但我发布它们只是为了确定。
因此,当游戏中的汽车撞车时,应该写上“You crash”,然后等待2秒钟,然后使用game_loop()函数重新启动游戏。但它会停止游戏,等待2秒钟,然后写入“You crash”并立即重新启动游戏。这是因为,在您使用
pygame.display.flip()
或pygame.display.update()
更新屏幕表面后,您必须处理事件(例如调用pygame.event.get
)让窗口有机会重新绘制自己
这可能适用于Windows,因为Windows的窗口管理工作方式不同,但它仍然是“错误的”
你必须遵守这些规则:
- 永远不要叫时间。睡觉(除非你知道得更清楚)
- 永远不要在主循环之外调用
或pygame.display.update()
(除非您知道得更清楚)pygame.display.flip()
- 永远不要有超过一个游戏循环(除非你更清楚)
- 你的游戏运行在一个循环中,所以要做任何基于“时间”的事情(比如:打印2秒,4秒等等),你必须跟踪游戏状态中的时间(可能只是一个变量)
- 不要从游戏循环中调用游戏循环
- 对游戏应该如何运行、中的哪些状态可以处于、如何在状态之间移动以及每个状态下发生的情况有一个基本的了解
- 标题屏幕
- 真正的赛车游戏
- 屏幕上的游戏
state
和一个大的if/else
块:
if state == 'TITLE_SCREEN':
...render title screen...
...if the space bar was pressed set state = 'GAME'
elif state == 'GAME':
...render the player, obstacles, etc...
...if the player crashed, set state = 'GAMEOVER' and keep track of the current time, e.g. with `timer = pygame.Clock().get_ticks()`
elif state == 'GAMEOVER':
...render a game over message...
...if the space bar was pressed or `pygame.Clock().get_ticks() - timer > 2000` set state = 'GAME'
类似问题:关于游戏状态的更多信息:
可能也很有趣: