我的Pygame游戏运行得很慢?

时间:2016-11-01 04:23:06

标签: python-3.x pygame

对于初学者我很想知道自从我使用python已经过了一年多,所以如果答案很明显而且我只是愚蠢那么请原谅我的无知哈哈。

继续,我正在创建一个太空入侵者类型的游戏,除了我从主屏幕更改为游戏屏幕时,一切都很顺利。它可能只是我用来更改屏幕的方法,但我之前在其他程序中使用过这种方法,从未遇到过任何问题。或者可能只是尝试同时运行太多进程。无论哪种方式,我都找不到类似问题的东西,所以我求助于求助。

(虽然我们讨论的是在pygame中更改屏幕的方法,如果有人知道更好的使用方法,请告诉我。)

下面是主要代码,如果您需要查看导入文件,请告诉我,我会尽快回复您所要求的任何文件。

import time
from SpaceInvaders.Scroller import *
from SpaceInvaders.TextDisplay import *
from SpaceInvaders.Alien import *
from SpaceInvaders.Shooter import *
from SpaceInvaders.Colors import *

background = Scroller("starfield.png", "starfield.png", 0, 0, 0, 1000)
screen_width = 800
screen_height = 1000
screen = pygame.display.set_mode((screen_width, screen_height))
mouse_pos = pygame.mouse.get_pos()


def title_screen():
    pygame.init()

    done = False

    clock = pygame.time.Clock()

    intro = Text("Welcome to Space Invaders", indian_red, 30, (screen_width * .5), (screen_height * .5 - 100))

    play_button_text = Text("Click to Play", white, 15, (screen_width * .5), (screen_height * .5))

    while not done:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True

            elif event.type == pygame.MOUSEBUTTONDOWN:
                game_screen()

        background.draw(screen)
        background.update()

        intro.draw(screen)

        play_button_text.draw(screen)

        clock.tick(30)

        pygame.display.flip()

    pygame.quit()


def game_screen():
    pygame.init()

    alien = Alien("Alien.png")

    shooter = Shooter("Shooter.png", mouse_pos[0], 650)

    done = False

    clock = pygame.time.Clock()

    level_text = Text("Level 1", silver, 50, (screen_width * .5), (screen_height * .5))

    while not done:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True

        screen.fill(black)

        level_text.draw(screen)

        time.sleep(2)

        background.draw(screen)
        background.update()

        clock.tick(30)

        pygame.display.flip()

    pygame.quit()

title_screen()

游戏运行完美,直到您尝试从标题屏幕切换到游戏屏幕,然后帧速率下降,整个笔记本电脑变慢。实际上这很烦人。

请感谢您希望通过此问题获得的所有帮助。如果您想查看导入文件,请再次告诉我,我会尽快给您回复。此外,如果您想下载这些文件以便您自己查看这些文件,那么我将在此末尾留下一个链接。

我还应该补充一点,这是我第一次使用滚动背景制作游戏,这可能是问题(我希望不是)。如果是的话,我会很感激如何能够在没有帧率下降的情况下仍然使用它。

Google Drive Link,供那些想要下载文件的人使用: https://drive.google.com/drive/folders/0B69VPNkZEzsmTjhaYzRQRVEwdTA?usp=sharing

=================================== EDIT =========== ========================

我也意识到Alien和Shooter对象没有被渲染。这是因为我还没有调整尺寸。它们对于游戏来说仍然太大了。

1 个答案:

答案 0 :(得分:0)

答案很简单,我在while循环中有time.sleep(2),我猜你不能等待无限循环。有点失败的目的哈哈。