我在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
答案 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)