内容正文:
少儿编程课
1
飞机大战2
本节我们来使用另一种方式绘制小方块,并使其能够在屏幕中左右移动
3
Pygame中的精灵
4
除了绘制飞机,还可以通过创建精灵的方式来生成飞机
1
精灵是游戏开发中的术语。简单来说,游戏中会动的东西都叫精灵
飞机
陨石
子弹
飞机大战中的精灵
2
对于本游戏来说,目前有以下几种精灵
使用精灵类来制作角色,会更加有利于对角色的管理以及功能的添加
Pygame中提供了精灵类,继承它就可以定义自己的精灵,下面我们定义飞机精灵
1
2
定义飞机精灵类Player,定义初始化方法
为了方便确定创建出的正方形的位置,设置一下它的中心和底的值,
class Player(pygame.sprite.Sprite):
def __init__(self):
# 完成精灵的初始化
pygame.sprite.Sprite.__init__(self)
# 初始化飞机精灵的图像,也就是长什么样
self.image = pygame.Surface((50, 50))
# 初始化飞机精灵图像的颜色
self.image.fill((0, 255, 0))
这里的get_rect能够获取飞机的图像的长方形,也就是我们定义的长方形本身。
# 角色的长方形
self.rect = self.image.get_rect()
# 设置长方形中心的x的值
self.rect.centerx = WIDTH / 2
# 设置长方形底的值
self.rect.bottom = HEIGHT - 10
通过设置rect的centerx值和bottom值,就能确定长方形所在的位置了。
这里将image属性设置为方块,那么飞机的表现形式就是一个方块。
飞机精灵类定义完成之后,画到屏幕中
1
2
添加黄色部分代码—创建player对象,并绘制到屏幕
# 定义玩家飞机对象
player = Player()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
# 结束游戏
running = False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
# 结束游戏
running = False
# 将玩家飞机绘制到屏幕上
screen.blit(player.image, player.rect)
# 重绘游戏界面,相当于刷新一次
pygame.display.flip()
pygame.quit
运行程序,可以看到屏幕中同样出现了绿色小方块
绘制到屏幕时,不需要指定位置,直接传入player.rect即可
只需要添加黄色部分代码
飞机左右移动
8
接下来我们让飞机能够移动,首先来分析
(0,0)
600
480
(0,600)
(480,0)
(480,600)
X轴
Y轴
左右移动,改变的是角色的X坐标
当按下左移键
240
200
160
120
280
320
360
X坐标减少
当按下右移键
X坐标增加
然后设置角色的X轴坐标为当前坐标加上这个变量,在死循环中不断的更新位置就可以了
所以我们可以创建一个初始值为0,按下左键时设为负值、按下右键时设为正值的变量
在player类中增加update方法,更新飞机的位置
1
在首先初始化X轴速度并获得按键状态
2
根据不同按键,将X轴速度设为不同值
def update(self):
self.speedx = 0
# 获取按键状态
keys = pygame.key.get_pressed()
# 如果左移键被按下
if keys[pygame.K_LEFT]:
# x轴上的速度设置为‐8
self.speedx = -8
# 如果右键被按下
if keys[pygame.K_RIGHT]:
# x轴上的速度设置为8
self.speedx = 8
# 设置角色的x轴坐标
self.rect.x += self.speedx