我一直在用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()
谢谢你的帮助。在
你可以尝试在while循环之前加载你的枪的图像并保存对它们的引用,这样你就不必每次都在动态加载图像。在
不要从事件处理程序调用
pygame.image.load
。在取而代之的是,在启动时调用你所有的资源,然后切换出你使用的资源。在
这可能是您在
Pygame
中可以学到的最重要的东西。在多年来,我在
Pygame
中遇到了滞后问题。我很沮丧,几乎换成了Pyglet
。我的游戏只有9帧/秒。在然后我在我的电脑上找到了一些
Pygame
文档。它从davidclark那里得到了一些建议,他建议您在所有的Pygame
的末尾添加.convert_alpha()
。这使我的帧率提高到32!在网站如下:
https://www.pygame.org/docs/tut/newbieguide.html
我总是为自己创建一个函数,这样我就不必反复键入“.convert_alpha()”多次:
使用此函数时,只需将
pygame.image.load(
替换为loadify(
。在玩游戏玩得开心!在
相关问题 更多 >
编程相关推荐