Как правильно загрузить изображение в Pygame? - PullRequest
3 голосов
/ 01 апреля 2019

Всякий раз, когда я пытаюсь загрузить изображение какого-то картофеля фри (враг в игре), он загружает спрайт. Я думаю, изображение пустое. Как правильно загрузить изображение, чтобы оно появилось?

Я пытался изменить метод загрузки изображения, выбрав загрузку изображения снаружи класса, а не изнутри.

import pygame
pygame.init()
# how big the game window is
wind = pygame.display.set_mode((600,700))

pygame.display.set_caption("Heart Attack")

x = 50
y = 50
width = 40
height = 60
vel = 0.8

fries = pygame.image.load('enemy.png').convert_alpha()

class Enemy(pygame.sprite.Sprite):
    def __init__(self, pos):
        super().__init__()
        self.image = fries
        self.rect = self.image.get_rect(center = pos)

move = True
Enemy((100, 300))

while move:
    pygame.time.delay(1)
#kill switch
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            move = False
    keys = pygame.key.get_pressed()
#moves character
    if keys[pygame.K_LEFT]:
        x -= vel
    if keys[pygame.K_RIGHT]:
        x += vel
    if keys[pygame.K_UP]:
        y -= vel
    if keys[pygame.K_DOWN]:
        y += vel
 # makes the character not clone itself
    wind.fill((0,0,0))      
 # draws and displays character with the color red
    pygame.draw.rect(wind, (255, 0, 0), (x, y, width, height))
    pygame.display.update()

pygame.quit()

Мне нужен спрайт, но он отображается пустым. Я хочу, чтобы он появлялся посередине экрана, поэтому center = pos.

1 Ответ

1 голос
/ 01 апреля 2019

Изображение, вероятно, загружено просто отлично;но на самом деле вы никогда его не прикроете к поверхности экрана.

Вы можете изменить свой код следующим образом:

...
sprites = pygame.sprite.Group(Enemy((100, 300)))

move = True
while move:
...
    sprites.draw(wind)
    pygame.display.update()

, используя Group, что по умолчанию в Pygameспособ рисования спрайтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...