小学课后服务 Python少儿编程 进阶篇:13-飞机大战4 课件 (15张PPT)

资源下载
  1. 二一教育资源

小学课后服务 Python少儿编程 进阶篇:13-飞机大战4 课件 (15张PPT)

资源简介

(共15张PPT)
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
少儿编程课
飞机大战4
本节我们来增加子弹和陨石、飞机和陨石之间的碰撞效果,并使用图片素材替换方块
碰撞检测
1
创建子弹与陨石精灵组
2
分别在产生陨石和子弹的地方,加入相应的精灵组
# 定义陨石精灵组
all_meteorite = pygame.sprite.Group()
# 定义子弹精灵组
all_bullets = pygame.sprite.Group()
# 定义8个陨石并加入到精灵组all_sprites
for i in range(8):

# 在循环产生陨石时,加入陨石精灵组
all_meteorite.add(met)
def shoot(self):

# 在飞机的shoot方法中产生子弹时,加入子弹精灵组
all_bullets.add(bullet)
接着来看碰撞,pygame提供了处理精灵组之间碰撞的函数
精灵组的碰撞—groupcollide函数原型
groupcollide(group1, group2, dokill1, dokill2, collided = None) ‐>Sprite_dict
group1 : 精灵组1
group2 : 精灵组2
dokill1 : 发生碰撞时,是否销毁精灵组1中的发生碰撞的精灵。
dokill2 : 发生碰撞时,是否销毁精灵组2中的发生碰撞的精灵。
collided :自定义的回调函数,你可以自己编写碰撞检测函数。碰撞检测函数的参数是两个精灵,返回值是True/False
返回值是一个字典,键是精灵组1中发生碰撞的精灵,值是精灵组2中与该精灵发生碰撞的精灵的列表。
现在来添加子弹与陨石的碰撞检测
1
精灵组碰撞处理
2
由于碰撞后销毁了陨石,所以需要在碰撞后添加一个新的陨石出来
# 检测子弹组和陨石组是否碰撞
hits = pygame.sprite.groupcollide(all_meteorite, all_bullets, True, True)
# 如果碰撞了,则重新生成一个陨石,并加入到all_sprites和all_meteorite精灵组
for hit in hits:
meteorite = Meteorite()
all_sprites.add(meteorite)
all_meteorite.add(meteorite)
运行程序,体验一下效果
飞机和陨石的碰撞效果
1
增加飞机与陨石的碰撞检测
2
运行程序,体验效果
不同与子弹和陨石,飞机与陨石是精灵和精灵组之间的碰撞。单个精灵和某个精灵组之间的碰撞检测,使用spritecollide方法
# 检测飞机和陨石之间的碰撞
hits = pygame.sprite.spritecollide(player, all_meteorite, True)
# 如果碰撞,则游戏结束
if hits:
running = False
改头换面
在前面的课程中,无论是飞机、陨石还是子弹,我们都是使用方块代替的,现在我们就把他们换成真正的图片素材
1
在工程目录新建img文件夹,然后将素材拷贝到文件夹中
2
首先替换陨石图片
# 定义陨石的图形
self.image = pygame.Surface((30, 40))
# 定义陨石的颜色为红色
self.image.fill((255, 0, 0))
在Meteorite类的__init__方法中,我们将
更换为:
self.image = pygame.image.load("img/img_meteorite.png")
练习
Exercises


线





将飞机的图片、子弹的图片都更改
在原先设置背景颜色的地方,修改成如下代码
更改游戏的背景,效果演示
# 绘制屏幕的背景颜色
# screen.fill(COLOR_BLACK)
background=pygame.image.load("img/img_bg.jpg").convert()
screen.blit(background,background.get_rect())
1
运行程序,效果如下:
2
总结
Summary
Pygame中的碰撞效果

Pygame素材导入

Thanks!

展开更多......

收起↑

资源预览