首页 文章

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

提问于
浏览
-1

我搜索了其他类似的线程但没有出现 . 我想要的是将一个精灵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

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

    这是一个非常基本的程序,每隔一秒显示一个红色圆圈,每隔两秒显示一个蓝色圆圈,每隔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()
    

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

相关问题