Python根据按键移动飞机
Python有两种方式判断按键输入:
01.event.type == pygame.KEYDOWN
# 01. 首先使用pygame.key.get_pressed()返回所有按键元组
elif event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
print("向右移动")
02.pygame.get_pressed()
#02. 通过按键常量,判断元组中的某一个键是否被按下,如果被按下,对应数值为1
keys_pressed = pygame.get_pressed()
if keys_pressed (pygame.K_RIGHT):
print("向右移动")
案例演练
在plane_main.py文件中
在 事件监听方法__event_handle(self)中加入
keys_pressed = pygame.key.get_pressed()
# 判断元组对应的按键索引
if keys_pressed[pygame.K_RIGHT]:
# print("向右移动")
self.hero.speed = 5
elif keys_pressed[pygame.K_LEFT]:
self.hero.speed = -5
else:
self.hero.speed = 0
实现飞机的水平移动
编写英雄飞机的类,完成初始位置和移动范围的定义,在plane_sprites.py加入类Hero(GameSprites)
class Hero(GameSprite):
def __init__(self):
# 01.调用父类方法设置游戏图像和速度
super().__init__("./素材/images/me1.png", 0)
# 02.设置英雄战机的位置,置于游戏下方的正中间
# 设置英雄战机的水平居中位置
self.rect.centerx = SCREEN_RECT.centerx
# 距离屏幕底部120像素
self.rect.bottom = SCREEN_RECT.bottom -120
# 03. 创建子弹的精灵组
self.bullets = pygame.sprite.Group()
def update(self):
# 在水平方向移动
self.rect.x += self.speed
# 控制英雄不能移出屏幕
if self.rect.x < 0:
self.rect.x = 0
elif self.rect.right > SCREEN_RECT.right:
self.rect.right = SCREEN_RECT.right