Loops 如何清除屏幕以及如何在levelOne循环后运行代码
完整代码和文件: 似乎找不到解决这一困境的办法。基本上,我按空格键进入下一个循环(Loops 如何清除屏幕以及如何在levelOne循环后运行代码,loops,python-3.x,pygame,Loops,Python 3.x,Pygame,完整代码和文件: 似乎找不到解决这一困境的办法。基本上,我按空格键进入下一个循环(levelTwo),然后它就停止了,屏幕上没有新的显示,即使我有代码可以这样做。我非常感谢你的帮助 代码的一部分可能面临困境,但不确定: if len(rabbits) == 0: rabbitCounter = 0 windowSurface.blit (textLevelOne, (100, 104)) levelOne = False w
levelTwo
),然后它就停止了,屏幕上没有新的显示,即使我有代码可以这样做。我非常感谢你的帮助
代码的一部分可能面临困境,但不确定:
if len(rabbits) == 0:
rabbitCounter = 0
windowSurface.blit (textLevelOne, (100, 104))
levelOne = False
windowSurface.fill((0,0,0))
#Ritar fönstret
pygame.display.update()
mainClock.tick(60)
#LEVEL TWO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
startSoundLevelTwo = True
while levelOne == False:
levelTwo = True
if startSoundLevelTwo == True:
rabbitSound.play()
foxSound.play()
pygame.mixer.music.play()
startSoundLevelTwo = False
pigSpawn = True
boarSpawn = True
级别2缺少
pygame.display.update()调用
我个人喜欢用一个主循环来构造pygame代码,如下所示:
level = 1
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
# Process event, update game state:
if level == 1:
# Update level 1 state
elif level == 2:
# Update level 1 state
# Clear screen:
windowSurface.fill((0,0,0))
# Draw current state to screen:
if level == 1:
# Play level 2 music
# Draw level 1 state to screen
elif level == 2:
# Play level 2 music
# Draw level 2 state to screen
...
# Update screen and control FPS
pygame.display.update()
mainClock.tick(60)
您可以为每个级别使用函数,因此主循环保持简单。您的代码链接不会为我加载。这是链接@KevinI现在正试图将我的代码转换成面向对象的代码,如果可能的话。有关于PyGame、Python和OOC(面向对象编码)的好教程吗?我建议您阅读sprites:这应该是您走向面向对象代码的第一步。你可以将雪碧子类化来制作兔子、猪等;如本教程所示:这是一种糟糕的做法,如果有5个级别,代码会是什么样子?10个怎么样?与其指出问题,不如使用建设性的批评和建议修复等@bartlomiej lewandowski the if elif不是我想要指出的,而是保持一个干净的主循环的好的pygame实践,这是发布/链接代码中的一个普遍问题(如果你看过的话)。