为什么按下按钮后屏幕颜色不变?
我用了一行代码 import pygame
来引入一个叫做pygame的库。
pygame.init()
screen = pygame.display.set_mode((700, 700))
pygame.display.set_caption('Checkers')
while True:
screen.fill((114,157,224))
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
screen.fill((70,44,133))
pygame.display.update()
我试着把 pygame.KEYDOWN
改成 pygame.key.get_pressed()
,但是没有任何变化。
1 个回答
0
你应该在每一帧都更新显示内容,但当按钮被按下时,你需要改变用于填充显示屏的颜色:
clock = pygame.time.Clock()
fillColor = pygame.Color(114,157,224)
run = True
while run:
clock.tick(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
fillColor = pygame.Color(70,44,133)
screen.fill(fillColor)
# draw scene
# [...]
pygame.display.update()
pygame.quit()
一个典型的PyGame应用程序循环需要:
- 限制每秒的帧数,以减少CPU的使用,这可以通过
pygame.time.Clock.tick
来实现。 - 处理事件,可以通过调用
pygame.event.pump()
或pygame.event.get()
来完成。 - 根据输入事件和时间(也就是每帧)更新游戏状态和物体的位置。
- 清空整个显示屏或绘制背景。
- 绘制整个场景(把所有物体都画上去)。
- 通过调用
pygame.display.update()
或pygame.display.flip()
来更新显示。