как сделать так, чтобы изображение / изображения исчезали в Pygame? - PullRequest
1 голос
/ 28 апреля 2020

Привет, я хочу задать вопрос, на который много раз отвечали на этом сайте, но я так и не нашел заметного ответа. Как удалить изображения в Pygame, если в окне игры уже есть фоновое изображение. В большинстве ответов они говорят, что используют screen.fill (цвет), но он делает область черной. Она работает нормально, если нет фонового изображения, но с фоновым изображением, это выглядит странно, когда только определенная область окрашена в черный цвет. Могу ли я избавиться от этого? Есть ли альтернативный способ удаления изображения в данной конкретной ситуации. Кстати, я не добавляю здесь какой-либо конкретный код c, потому что я много времени занимаюсь этой проблемой при создании игр.

1 Ответ

1 голос
/ 28 апреля 2020

Вы не можете удалить изображение. Вы должны перерисовать всю сцену (включая фон) в приложении l oop. Обратите внимание, что изображения - это просто пиксель, нарисованный поверх фона. Фон "под" изображениями перезаписывается, и информация теряется:

Основное приложение l oop должно:

  • обрабатывать события либо pygame.event.pump() или pygame.event.get().
  • обновить игровые состояния и позиции объектов в зависимости от входных событий и времени (соответственно фреймов)
  • очистить весь экран или нарисуйте фон
  • нарисуйте всю сцену (blit все объекты)
  • обновите отображение с помощью pygame.display.update() или pygame.display.flip()

Минимальная заявка

import pygame

pygame.init()

window = pygame.display.set_mode((500, 500))
clock = pygame.time.Clock()

# main application loop
run = True
while run:
    clock.tick(60)

    # event loop
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    # update game states and move objects
    # [...]

    # clear the display
    window.fill(0) # or `blit` the back ground image instead

    # draw the scene - draw all the objects
    # [...]

    # update the display
    pygame.display.flip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...