我正在尝试在pygame中画一幅画。我将其保持打开状态一定的时间,并且没有用户的影响。我想知道如何在设定的时间后使一个对象出现,消失然后重新出现,而其他形状在设定的时间内保持原样。我试图在我设置整个代码的时间内使矩形在黄色和黑色之间连续闪烁。能做到吗?
ive尝试添加
pygame.draw.rect(screen, BLACK, (300, 200, 100, 125)
pygame.display.flip()
pygame.time.wait(1000)
但是有效,它将在此之前更改其余代码,以保持相同的时间
答案 0 :(得分:2)
当然可以。 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秒的速率闪烁。