按键让月亮移动
本课属于 Coddy Pygame 学习旅程的“游戏窗口中的 Python”单元。第 12 课,共 33 课。
pygame.key.get_pressed() 会告诉你这一帧有哪些按键正被按住。每一帧只保存一次它返回的结果,然后查询某个按键:
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
moon_x = moon_x - 4
if keys[pygame.K_RIGHT]:
moon_x = moon_x + 4按住左键时,keys[pygame.K_LEFT] 的值是 True,否则是 False,所以只要按键处于按下状态,它下面的 if 就会在每一帧运行。按住右键一秒,月亮就会移动 240 像素。
每个按键都有一个名称:K_UP、K_DOWN、K_SPACE,以及表示 A 的 K_a 和表示 D 的 K_d。
使用两个单独的 if,每个按键各用一个,这样就能分别检查每个按键。这些 if 要放在变更部分,也就是事件循环之后。
挑战
简单用方向键移动月亮。
- 在更改部分,使用
keys = pygame.key.get_pressed()读取按键。 - 按住左方向键时,从
moon_x中减去 4。 - 按住右方向键时,给
moon_x加上 4。
按“开始”并按住方向键:月亮会左右滑动。然后按“检查”。
亲手试试
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# 在这里设置所需内容,放在游戏循环之前。
moon_x = 320
moon_y = 240
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 在这里修改内容,每帧执行一次。
screen.fill((20, 24, 48))
# 填充背景后,在这里绘制。
pygame.draw.circle(screen, (240, 230, 160), (moon_x, moon_y), 50)
pygame.display.flip()
clock.tick(60)
pygame.quit()
游戏窗口中的 Python中的所有课
自己练习: Pygame 在线编辑器