为什么我的简单游戏滞后?

2024-05-19 01:48:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用pygame制作一个简单的python游戏,在我添加了切换枪的功能之后,游戏开始落后了。我不知道它为什么落后。我试过重启,但没用。代码真的很短,所以可能只是我的电脑,但如果有什么可以帮助运行它更快,请让我知道。代码如下:

import sys, pygame, pygame.mixer
from pygame.locals import *

pygame.init()

size = width, height = 600, 400

screen = pygame.display.set_mode(size)

pygame.display.set_caption('Blue Screen of Death')

#variables
x = 100
y = 200
gun_type = "gun1"
gun = pygame.image.load("gun1.png")
gun = pygame.transform.scale(gun,(500,250))
gun_sound = pygame.mixer.Sound("gun_sound.wav")
clock = pygame.time.Clock()

while 1:
  mx, my = pygame.mouse.get_pos()
  for event in pygame.event.get():
    if event.type == pygame.QUIT:sys.exit()

    elif event.type == KEYDOWN and event.key == K_ESCAPE:
      sys.exit()
    elif event.type == MOUSEBUTTONDOWN:
      gun_sound.play()
    elif event.type == KEYDOWN and event.key == K_1:
      gun = pygame.image.load("gun1.png")
      gun = pygame.transform.scale(gun,(500,250))
      gun_type = "gun2"
    elif event.type == KEYDOWN and event.key == K_2:
      gun = pygame.image.load("gun2.png")
      gun = pygame.transform.scale(gun,(500,250))
      gun_type = "gun2"
    elif event.type == KEYDOWN and event.key == K_TAB:
    if gun_type == "gun2":
      gun_type = "gun2_aimed"
    elif gun_type == "gun2_aimed":
      gun_type = "gun2"
    elif gun_type == "gun2_aimed":
      gun = pygame.image.load("gun2_aimed.png")
      gun = pygame.transform.scale(gun,(500,250))



  #frames per second
  clock.tick(60)

  hallway = pygame.image.load("hallway.png")
  hallway = pygame.transform.scale(hallway,(600,400))
  screen.blit(hallway,(0,0))

  screen.blit(gun,(mx-100,y))

  pygame.display.flip()

谢谢你的帮助。在


Tags: andkeyimageeventpngtypetransformload
3条回答

你可以尝试在while循环之前加载你的枪的图像并保存对它们的引用,这样你就不必每次都在动态加载图像。在

不要从事件处理程序调用pygame.image.load。在

取而代之的是,在启动时调用你所有的资源,然后切换出你使用的资源。在

这可能是您在Pygame中可以学到的最重要的东西。在

多年来,我在Pygame中遇到了滞后问题。我很沮丧,几乎换成了Pyglet。我的游戏只有9帧/秒。在

然后我在我的电脑上找到了一些Pygame文档。它从davidclark那里得到了一些建议,他建议您在所有的Pygame的末尾添加.convert_alpha()。这使我的帧率提高到32!在

网站如下:

https://www.pygame.org/docs/tut/newbieguide.html

我总是为自己创建一个函数,这样我就不必反复键入“.convert_alpha()”多次:

def loadify(imgname):
    return pygame.image.load(imgname).convert_alpha()

使用此函数时,只需将pygame.image.load(替换为loadify(。在

玩游戏玩得开心!在

相关问题 更多 >

    热门问题