Python Pygame运行缓慢

Python Pygame运行缓慢,python,python-3.x,pygame,pygame-surface,Python,Python 3.x,Pygame,Pygame Surface,我正在创建一个名为“生存岛”的游戏,刚刚创建了开始屏幕。 pygame在完成一个事件后滞后太多(需要时间进行响应) 以下是我的源代码: #packages import pygame import sys from sys import exit #initialization pygame.init() #display surf width = 600 height = 400 surface = pygame.display.set_mode((width,height)) clock

我正在创建一个名为“生存岛”的游戏,刚刚创建了开始屏幕。 pygame在完成一个事件后滞后太多(需要时间进行响应)

以下是我的源代码:

#packages
import pygame
import sys
from sys import exit
#initialization
pygame.init()
#display surf
width = 600
height = 400
surface  = pygame.display.set_mode((width,height))
clock = pygame.time.Clock()#for fps
#caption
pygame.display.set_caption('Survival Island')

#variables
mousex = 0
mousey = 0
#booleans
play = True #entered playmode
canQuitOnStart = True     #game can be quitted on start
drawStartScreen = True #start screen drawed
running = True # game is running
#definitions
def quitOnStart():     #quitting the game
    #can be seen if rect is drawn [pygame.draw.rect(surface,(0,0,255),(550,350,40,40))]
    global mousex,mousey,running
    for event in pygame.event.get():
       if event.type == pygame.MOUSEBUTTONDOWN: #quit on pressing x on start screen
            if mousex > 550 and mousey > 350 and mousex <590 and mousey <390:
                print('Exit1')
                running = False

def drawStart():      #drawing start menu
    START_Image = pygame.image.load('START_Image.png').convert()
    surface.blit(START_Image,(0,0))
    pygame.display.update()

def playGame():
    #play on clicking on "play"
    global mousex,mousey,canQuitOnStart,drawStartScreen
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
           if mousex > 415 and mousey >190 and mousex <70 and mousey <30: # can be seen if rect is drawn [pygame.draw.rect(surface,(0,0,255),(415,190,70,30))]
                canQuitOnStart = False
                drawStartScreen = False
                screen.fill((0,0,0))
                pygame.display.update()
if drawStartScreen == True:
        drawStart()

def main():
    if play == True:
        playGame()
    if canQuitOnStart == True:
        quitOnStart()

#main loop
while running:
    #get mouse position
    mousex,mousey = pygame.mouse.get_pos()
    # fps is 60
    clock.tick(120)
    # quit button event
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    # main function
    if __name__ == '__main__':
        main()

pygame.quit()#quits after event

#包
导入pygame
导入系统
从系统导入退出
#初始化
pygame.init()
#显示冲浪
宽度=600
高度=400
surface=pygame.display.set_模式((宽度、高度))
时钟=pygame.time.clock()#用于fps
#标题
pygame.display.set_标题('生存岛')
#变数
mousex=0
mousey=0
#布尔人
播放=真#进入播放模式
canQuitOnStart=True#游戏可以在开始时退出
drawStartScreen=True#开始绘制屏幕
跑步=正确#游戏正在进行
#定义
def quitOnStart():#退出游戏
#如果绘制了rect,则可以看到[pygame.draw.rect(surface,(0,0255),(550350,40,40))]
全局mousex,mousey,running
对于pygame.event.get()中的事件:
如果event.type==pygame.MOUSEBUTTONDOWN:#在开始屏幕上按x退出

如果mousex>550,mousey>350,mousex 190和mousex游戏运行缓慢,因为您在每一帧中加载
START\u图像。这是一个非常昂贵的操作,因为它必须从数据存储中读取图像。启动时加载
START\u映像一次

surface=pygame.display.set_模式((宽度、高度))
时钟=pygame.time.clock()#用于fps
#标题
pygame.display.set_标题('生存岛')
START\u Image=pygame.Image.load('START\u Image.png').convert()
不要在主应用程序循环中多次调用
pygame.display.update()
从队列中删除事件,因此每个事件只会得到一次。获取一次事件列表(
events=pygame.event.Get()
)并将事件列表传递给函数:

运行时:
# [...]
events=pygame.event.get()
对于事件中的事件:
# [...]
如果play==True:
游戏(活动)
如果canQuitOnStart==True:
quitOnStart(事件)
此外,在应用程序循环中绘制场景,而不是在事件循环中。绘制整个场景后,只需执行一次
pygame.display.update()

按钮点击条件错误。它必须是:


如果mousex>550和mousey>350以及mousex 350和mousex,我会首先尝试找出哪一个具体步骤需要这么长时间。是否立即获得点击事件?是不是
屏幕。填充((0,0,0))
行花了这么长时间?或者
pygame.display.update()