Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何清除屏幕以及如何在levelOne循环后运行代码_Loops_Python 3.x_Pygame - Fatal编程技术网

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实践,这是发布/链接代码中的一个普遍问题(如果你看过的话)。