前言
通过前面九篇文章的编写,「跳跳兔」游戏基本已经被编写出来了,本节在此基础上进一步完善它,并添加上云彩背景。
添加云彩背景
添加云彩背景的大致步骤如下。
- 1. 编写云彩类
- 2. 载入云彩图片
- 3. 随机生成云彩
- 4. 云彩同步移动
一步步来编写,首先是创建云彩类,代码如下。
# sprites.py
class
Cloud(pg.sprite.Sprite):
def __init__(self, game):
self._layer = CLOUD_LAYER
self.groups = game.all_sprites, game.clouds
pg.sprite.Sprite.__init__(self, self.groups)
self.game = game
self.image = random.choice(self.game.cloud_images)
self.image.set_colorkey(BLACK)
self.rect = self.image.get_rect()
# 随机出现位置
scale = random.randrange(50,
101)
/
100
self.image = pg.transform.scale(self.image,
(int(self.rect.width * scale),
int(self.rect.height * scale)))
self.rect.x = random.randrange(WIDTH - self.rect.width)
self.rect.y = random.randrange(-500,
-50)
def update(self):
# 云朵大于2倍高度,就被消除
if self.rect.top > HEIGHT *
2:
self.kill()
代码内容与此前内容非常类似,不再详细分析。
但你仔细观察,你会发现,Cloud 类的__init__() 方法中创建了 self._layer,并通过如下形式将其加入到相应的 groups 中。
self.groups = game.all_sprites, game.clouds
pg.sprite.Sprite.__init__(self, self.groups)
这是一个优化点,后文再讨论。
构建了 Cloud 类后,接着要做的就是载入图片、随机生成以及同步移动了,轻车熟路。
# main.py/Game
def load_data(self):
# 加载数据
# ... 省略无关代码
# 加载云彩图片
self.cloud_images =
[]
for i in ran