一、响应按键
每当用户按键时,都将在Pyagame中注册一个事件,而事件都是通过方法pygame.event.get()获取。每次按键都被注册为一个KEYDOWN事件,我们可以通过相关属性检查是否是特定的键,并对飞船做出相应移动。
在game_fuctions.py的check_events()函数中中新增判断语句,当按右箭头时,飞船向右移动1像素:
def check_events(ship):
# 响应按键和鼠标事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
# 向右移动飞船
ship.rect.centerx += 1
需要注意的是在函数check_events()中包含了形参,相应的,在alien_invasion.py中需要更新相关调用代码。
二、左右移动及速度调整
至此我们拥有了一个良好的开端,然而却还不能高效地移动飞船,因为当我们按住箭头键不放时,我们是希望飞船能够持续移动,直到按键松开。
因而我们接下来,将让游戏检测pygame.KEYUP事件,以关注玩家是否松开按键。同时添加一个初始值为False的布尔属性,当玩家按下箭头键时,将该值重置为True,从而能构造一个循环来持续移动飞船,而当玩家松开时,就将该值再次设为Fa