Конечно, это возможно. Pygame имеет довольно низкий уровень: наличие и исчезновение объекта означает, что вы должны нарисовать его на экране, удалить его с экрана, перерисовать, удалить и т. Д.
На самом деле Pygame не имеет функции для "удалять". Чтобы удалить, вы должны нарисовать что-то еще поверх фигуры: пиксели меняют цвет для представления новой фигуры, а предыдущая «удаляется». Поэтому для удаления вы обычно рисуете прямоугольник, окрашенный в цвет фона.
В вашем случае мерцающий прямоугольник можно получить, рисуя прямоугольники в чередующихся цветах в одной и той же позиции на каждой итерации. В следующем примере показано, как это сделать:
import sys
import pygame
#some definitions
YELLOW = (255, 255, 0)
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
#initial set up
pygame.init()
screen = pygame.display.set_mode((600, 600))
#making the screen white
screen.fill(WHITE)
#drawing a circle
pygame.draw.circle(screen, YELLOW, (120, 120), 100)
counter = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
#select color for rectange, each iteration alternate color to make flickering
if counter % 2 == 0:
fl_color = YELLOW
else:
fl_color = BLACK
#drawing the rectangle
pygame.draw.rect(screen, fl_color, (10, 300, 400, 250))
pygame.display.flip()
counter += 1
pygame.time.wait(1000) #in milliseconds
Как видите, круг остается желтым, так как поверх него мы никогда не рисуем что-то новое. Прямоугольник мигает с частотой 1 секунда.