当前位置: 首页 > 知识库问答 >
问题:

我的PyGame游戏运行得很慢?

林威
2023-03-14

好吧,首先,我想让你们知道,我已经一年多没有使用python了,所以如果答案很明显,我只是愚蠢,那么请原谅我的无知哈哈。

接下来,我正在创建一个太空入侵者类型的游戏,除了从主屏幕切换到游戏屏幕外,一切都进行得很顺利。这可能只是我用来改变屏幕的方法,但我以前在其他程序中使用过这种方法,从来没有出现过任何问题。或者可能只是试图同时运行太多进程。不管怎样,我找不到任何类似的问题,所以我求助于寻求帮助。

(当我们在pyplay中改变屏幕的方法的主题,如果有人知道更好的方法,请让我知道)。

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

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()

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

请并感谢您在这个问题上给予我的帮助。如果您想查看导入文件,请再次通知我,我会尽快回复您。另外,如果你想下载这些文件,这样你就可以自己查看它们,那么我会在本文末尾留下一个指向它们的链接。

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

谷歌驱动器链接对于那些想要下载文件:https://drive.google.com/drive/folders/0B69VPNkZEzsmTjhaYzRQRVEwdTA?usp=sharing

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

我还意识到外星人和射手对象没有被渲染。这是因为我还没有调整尺寸。他们仍然太大,不适合比赛。

共有1个答案

薄烨
2023-03-14

答案很简单,我有时间。睡眠(2)在while循环中,我想你不能在无限循环中等待。有点违背目的了,哈哈。

 类似资料:
  • 您好,我正在中制作一个游戏,我想知道如何以及最好的方式是在屏幕上添加游戏。以下是玩家健康状况小于或等于0的代码: 我不确定该怎么做,因为我试图使用另一个py呼叫游戏,但玩家死亡的时间被重置为0并返回,所以玩家死亡的地方可能发生任何事情吗?

  • 所以我对Python、PyGame和任何编程都是全新的。我遵循了在PyGame中制作蛇游戏的教程。现在一切都结束了,但为了给自己一个挑战,我正试图改变一下比赛。首先我想添加边界,但我真的迷路了。我试过看其他教程,但它们的图像似乎有所不同。这是我的代码(因为我不知道什么可以帮助你帮助我,所以我把它全部发送了): 基本上,我希望当我的蛇撞到边界时发生的事情和它撞到自己时发生的事情是一样的。如果你能帮助

  • 本文向大家介绍pygame实现打字游戏,包括了pygame实现打字游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了pygame实现打字游戏的具体代码,供大家参考,具体内容如下 1.基本代码 下面的代码完成了每一秒在界面的顶部随机生成一个新的字母 2.移动字母 先增加一个定时器,设定字母20毫秒移动一格 在主循环中加入移动的代码 3.消除字母 在事件的处理代码中加入对键盘字母的判断

  • 本文向大家介绍python pygame实现2048游戏,包括了python pygame实现2048游戏的使用技巧和注意事项,需要的朋友参考一下 实现2048相对来说比较简单,用4*4的二维数组保存地图,pygame.key.get_pressed()获取键盘操作,详见代码。 效果图 代码 后续可以考虑实现动画和AI。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程

  • 所以我正在用Pygame制作一个游戏,我需要一个菜单,让玩家在不同的游戏类型之间进行选择。我试着让它在显示指令时,玩家可以使用键盘选择类型;然而,当我这样做的时候,游戏就会出错。指示将保留在屏幕上(有时会绘制平面精灵)。当按下时,我添加了一行代码来打印shell中的某些内容,但没有打印任何内容。 注释掉的部分是启动游戏的原始代码。

  • 基本上,我已经为我的游戏创建了一个pyplay菜单,当我点击它们时,它会加载所有其他pyplay窗口,但是对于一些方面,如添加用户等,我在Tkinter GUI中创建。当我点击加载他们在我的pyplay它不会加载Tkinter图形用户界面,有人知道我如何解决这个问题,或者如果有什么我需要添加到使其工作。 它的行为就像它要加载某个东西,但不加载。第一个名为“mathsvaders”的程序加载得很好,