Спрайты при движении лагают, 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)