如何' blit'精灵到窗口一段时间

时间:2016-10-24 03:44:27

标签: python pygame sprite blit

我搜索了其他类似的线程但没有出现。我想要的是将一个精灵blit放到窗口上让我们说5秒(5000毫秒),当时间到了,它就会解开它。谢谢。

class Flag():

    def Flagrun(self):
        flaggen = str(randint(1,4))
        global milliseconds
        global flagactive
        if flaggen == '1':
            flag_x = 58
            flag_y = 89

        elif flaggen == '2':
            flag_x = 464
            flag_y = 82            

        elif flaggen == '3':
            flag_x = 343
            flag_y = 215

        elif flaggen == '4':
            flag_x = 66
            flag_y = 535

        window.blit(flag, (flag_x,flag_y))
        collisiondet()
        milliseconds += clock.tick_busy_loop(60)
        print(milliseconds)
        flagactive = 'No'

1 个答案:

答案 0 :(得分:0)

有很多方法可以完成你想要完成的任务。你不能只是" unblit"一个图像,你必须通过擦除屏幕或重绘其背后的任何内容来绘制它。

这是一个非常基本的程序,每隔一秒显示一个红色圆圈,每隔两秒显示一个蓝色圆圈,每隔3秒显示一个绿色圆圈,每隔三秒显示一个黄色圆圈。这使用模数来跟踪何时应该显示的内容。

import pygame, sys
pygame.init()
screen = pygame.display.set_mode([400,100])
clock = pygame.time.Clock()

timer = 0
fps = 60
while 1:
    clock.tick(fps)
    timer += 1
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    screen.fill([255,255,255])
    if int(timer/fps)%2==0:
        pygame.draw.circle(screen, [255,0,0], [0,0], 50)
    if int(timer/(fps*2))%2==0:
        pygame.draw.circle(screen, [0,0,255], [100,0], 50)
    if int(timer/(fps*3))%2==0:
        pygame.draw.circle(screen, [0,255,0], [200,0], 50)
    if int(timer/fps)%3==0:
        pygame.draw.circle(screen, [255,255,0], [300,0], 50)
    pygame.display.flip()

您应该能够在程序中包含类似的内容。如果您对如何执行此操作感到困惑,请提供您的编码,以便我可以将其置于上下文中。我还没有能够测试这个代码(使用学校计算机),但它应该可以工作。如果您有任何其他问题,请将其留在下面的评论中,我会尽快回答。