Pygame не может загрузить фоновое изображение? - PullRequest
2 голосов
/ 23 января 2020

Все, что я получаю, это черный экран. Не уверен, что я не могу найти изображение в каталоге или, если что-то, если я что-то не так называю ... Но это не дает мне ошибки, поэтому я не уверен, с чем работать.

import pygame
# Intialize the pygame
pygame.init()

# Create the screen 
screen = pygame.display.set_mode((300, 180))

#Title and Icon
pygame.display.set_caption("Fighting Game")

# Add's logo to the window 
# icon = pygame.image.load('')
# pygame.display.set_icon(icon)

#  Game Loop
running = True
while running:
    # screen.fill((0, 0, 0))
    # screen.blit(BackGround.image, BackGround.rect)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False


class Background(pygame.sprite.Sprite):
    def __init__(self, image_file, location):
        pygame.sprite.Sprite.__init__(self)  #call Sprite initializer
        self.image = pygame.image.load("images/image.png")
        self.rect = self.image.get_rect(300,180)
        self.rect.left, self.rect.top = location

BackGround = Background('image.png', [0,0])

screen.fill((0, 0, 0))
screen.blit(BackGround.image, BackGround.rect)

1 Ответ

4 голосов
/ 23 января 2020

Вы должны blit изображение в главном приложении l oop, и вам нужно обновить отображение на pygame.display.flip.

Кроме того, нет необходимости передавать какие-либо параметры в self.image.get_rect(). В любом случае аргументы get_rect() должны быть аргументами ключевых слов. Что вы можете сделать, это установить местоположение с помощью ключевого аргумента topleft.

class Background(pygame.sprite.Sprite):
    def __init__(self, image_file, location):
        pygame.sprite.Sprite.__init__(self)  #call Sprite initializer
        self.image = pygame.image.load("images/image.png")
        self.rect = self.image.get_rect(topleft = location)

BackGround = Background('image.png', [0,0])

#  Game Loop
running = True
while running:
    # screen.fill((0, 0, 0))
    # screen.blit(BackGround.image, BackGround.rect)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    #screen.fill((0, 0, 0)) # unnecessary because of the background image
    screen.blit(BackGround.image, BackGround.rect)
    pygame.display.flip()

Обратите внимание, что основное приложение l oop должно:

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