经过时间后如何更新显示的元素?

时间:2019-06-06 02:44:29

标签: python list pygame display

我在Pygame中有一个程序,可以让我显示列表list中的元素。每3秒更新一次并显示list中的下一个元素。 我的问题是元素在屏幕上重叠,但是我想每过3秒就更新一次。我已经使用过:

pygame.display.update()

但是它不起作用。

list = ["x", "y", "z"]
if time > 3 and i < len(list):
    font = pygame.font.SysFont("comicsansms", 72)
    text2 = font.render(str(list[i]), True, (0, 128, 0))

    screen.blit(text2,
                (430 - text2.get_width() // 1, 220 - text2.get_height() // 2))

    pygame.display.update()
    pygame.display.flip()
    clock.tick(30)
    i = i + 1

1 个答案:

答案 0 :(得分:1)

以下是每三秒钟更新一次的内容:

import sys
import time
import pygame
from pygame.locals import *

pygame.init()

FPS = 30
WINDOWWIDTH = 640
WINDOWHEIGHT = 480
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
clock = pygame.time.Clock()
font = pygame.font.SysFont("comicsansms", 72)

screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
pygame.display.set_caption('Test')

my_list = ["x", "y", "z"]
bkgr = BLACK
i = len(my_list) - 1  # Index of last elememnt (so first is next displayed).
start_time = 0
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    if (time.time() - start_time) > 3:  # 3 seconds since last update?
        i = (i + 1) % len(my_list)
        start_time = time.time()

        screen.fill(bkgr)
        text2 = font.render(str(my_list[i]), True, (0, 128, 0))
        screen.blit(text2, (430 - text2.get_width() // 1,
                            220 - text2.get_height() // 2))
        pygame.display.update()

    clock.tick(FPS)