@pythono

Почему не меняются координаты спрайта в pygame?

ставлю координаты спрайта 100,300 а он отображается в верхнем левом углу 0,0
что не так с моим кодом?

import sys, os
import pygame
from pygame.locals import *
     
def init_window():
    pygame.init()
    window = pygame.display.set_mode((550, 480))
    pygame.display.set_caption('ПУТИН')
     
def input(events):
    for event in events:
        if (event.type == QUIT) or (event.type == KEYDOWN and event.key == K_ESCAPE):
            sys.exit(0)
        else:
            pass
     

def load_image(name, colorkey=None):
    fullname = os.path.join('data', name)
    try:
        image = pygame.image.load(fullname)
    except:
        pass
    image = image.convert()
    if colorkey is not None:
        if colorkey is -1:
            colorkey = image.get_at((0,0))
        image.set_colorkey(colorkey, RLEACCEL)
    return image, image.get_rect()
 
def draw_background():
    screen = pygame.display.get_surface() # Получаем поверхность, на которой будем рисовать
    background = pygame.Surface(screen.get_size()) # и ее размер
    background = background.convert()
    background.fill((0, 0, 0)) # заполняем цветом
    screen.blit(background, (0, 0)) # рисуем заполненный одним цветом бэкграунд
    back, back_rect = load_image("grass.jpg") # или загружаем картинку с травой
    screen.blit(back, (0, 0)) # и рисуем ее
    pygame.display.flip() # переключаем буфер экрана
    return back

class Animal(pygame.sprite.Sprite):
    def __init__(self, img, cX, cY):
        pygame.sprite.Sprite.__init__(self)
        self.image, self.rect = load_image(img, -1)
        screen = pygame.display.get_surface()
        self.area = screen.get_rect()
        self.cX = cX
        self.cY = cY
        self.coord = (cX, cY)
        print ("Animal spawned at", self.coord)
 
class Elephant(Animal):
    def __init__(self, cX, cY):
        Animal.__init__(self, "1.png", cX, cY)

def action(bk):
    creatures_list = [] # Список со всем животными. Пригодится, если будем добавлять новых
    screen = pygame.display.get_surface()
    elephant = Elephant(100,300) # Помещаем слона по координатам х=10, у=10
    creatures_list.append(elephant)
    animals = pygame.sprite.RenderPlain(creatures_list)
    while 1:
        input(pygame.event.get())
        screen.blit(bk, (0, 0))
        animals.update() # Стандартный метод проверки, вдруг что-то изменилось. Пригодится для описания движения
        animals.draw(screen)
        pygame.display.flip()
     
def main():
    init_window()
    bk = draw_background()
    action(bk)

    
     
if __name__ == '__main__': main()
  • Вопрос задан
  • 458 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы