@Vfor

Лаги при отрисовке спрайтов, как оптимизировать?

Спрайты при движении лагают, 5 фпс. Сам персонаж тоже движется медленно, из-за лагов. Вот код:
import pygame
from random import randint
import time
import sys
import os 
name = os.getlogin()
path = r'C:\\Users\\' + name + r'\\Desktop\\WHITE\\'

imhero = path + r'hero.png'
imobject = path + r'object_1.png'
imfloor = path + r'floor.png'
pygame.init()

x = randint(1,500)
y_start = 375

SCREEN = (600, 500)

BLACK = (0,0,0)
WHITE = (255,255,255)
BLUE = (0,255, 225)
Salmon = (255, 160, 122)

FPS = 50
play = True

motion = "STOP"
clock = pygame.time.Clock()
sc = pygame.display.set_mode((SCREEN))

y = y_start

y_object_1 = 0

class Object(pygame.sprite.Sprite):

    class box(pygame.sprite.Sprite):
        def __init__(self,filename,group,y_object_1):

            pygame.sprite.Sprite.__init__(self)
            self.image = pygame.image.load(filename)
            self.image.set_colorkey((WHITE))
            self.rect = self.image.get_rect(center = (randint(1,SCREEN[0]), y_object_1))
            self.add(group) 

        def update(self, *args):

            if y_object_1 < SCREEN[1]:
                self.rect[1]+=5
                time.sleep(0.1)

                if y_object_1> SCREEN[1]:
                    self.rect[1] = 0 
                    self.y_object_1 = 0
        
            
    class floor (pygame.sprite.Sprite):

        def __init__(self,filename,group,x_floor,y_floor):
            pygame.sprite.Sprite.__init__(self)
            self.image = pygame.image.load(filename)
            self.image.set_colorkey((WHITE))
            self.rect = self.image.get_rect(center = (x_floor, y_floor))
            self.add(group) 

class Hero(pygame.sprite.Sprite):
    
    def __init__(self,filename,group,x,y):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load(filename)
        self.image.set_colorkey((WHITE))
        self.rect =  self.image.get_rect(center =(x,y))
        self.add(group) 

    def update_hero(self, move):

        if move == "LEFT":
            self.rect[0] -= 10
        elif move == "RIGHT":
            self.rect[0] += 10

background = pygame.sprite.Group()
floor = Object.floor(imfloor,background,300,450)

hero_group = pygame.sprite.Group()
hero = Hero(imhero,hero_group,x,y)

object_group = pygame.sprite.Group()
p = randint(1,10)
a = 0
object1 = Object.box(imobject, object_group, y_object_1)
object2 = Object.box(imobject, object_group, y_object_1)
object3 = Object.box(imobject, object_group, y_object_1)
object4 = Object.box(imobject, object_group, y_object_1)

while play:

    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            play = False
 
  

    keys = pygame.key.get_pressed()

    if keys[pygame.K_RIGHT] and hero.rect[0]  < SCREEN[0]:

        hero.update_hero('RIGHT')

    if keys[pygame.K_LEFT] and hero.rect[0] > 0:

        hero.update_hero('LEFT')

    sc.fill(BLUE)

   
    background.draw(sc)
    hero_group.draw(sc)
    object_group.draw(sc)

    object_group.update()

    if pygame.sprite.spritecollideany(hero,object_group):

        play = False
        break

    if pygame.sprite.spritecollideany(floor,object_group):
        
        object1.kill()
        object2.kill()
        object3.kill()
        object4.kill()
        object1 = Object.box(imobject, object_group, y_object_1)
        object2 = Object.box(imobject, object_group, y_object_1)
        object3 = Object.box(imobject, object_group, y_object_1)
        object4 = Object.box(imobject, object_group, y_object_1)
        

    pygame.display.update()
    pygame.time.Clock().tick(FPS)
  • Вопрос задан
  • 409 просмотров
Пригласить эксперта
Ответы на вопрос 1
adugin
@adugin Куратор тега Python
Задачка из учебника "математика для чайников". Вася решил посчитать, сколько раз он может моргнуть за секунду. Каждый раз он зажмуривается на time.sleep(0.1) секунды. Какое максимальное количество раз в секунду сможет моргнуть Вася?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы