【问题标题】:My Pygame game is running really slow?我的 Pygame 游戏运行很慢?
【发布时间】:2016-11-01 04:23:05
【问题描述】:

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

继续前进,我正在创建一个 Space Invaders 类型的游戏,除了我从主屏幕切换到游戏屏幕时,一切都进行得很顺利。这可能只是我用来改变屏幕的方法,但我以前在其他程序中使用过这种方法,从来没有遇到过任何问题。或者可能只是试图同时运行太多进程。无论哪种方式,我都找不到与此问题相似的任何东西,所以我求助于寻求帮助。

(虽然我们讨论的是在 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 云端硬盘链接: https://drive.google.com/drive/folders/0B69VPNkZEzsmTjhaYzRQRVEwdTA?usp=sharing

====================================编辑=========== =========================

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

【问题讨论】:

  • 您不需要拨打pygame.init() 两次。太空侵略者也是一个完美的例子,当你想使用 pygame.display.update(change_list) 而不是 pygame.display.flip()

标签: python-3.x pygame


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多