Python第十三课-飞机大战4(课件)

2024-03-01
| 15页
| 117人阅读
| 83人下载
普通

内容正文:

少儿编程课 1 飞机大战4 本节我们来增加子弹和陨石、飞机和陨石之间的碰撞效果,并使用图片素材替换方块 3 碰撞检测 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 改头换面 10 在前面的课程中,无论是飞机、陨石还是子弹,我们都是使用方块代替的,现在我们就把他们换成真正的图片素材 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! 15 $$

资源预览图

Python第十三课-飞机大战4(课件)
1
Python第十三课-飞机大战4(课件)
2
Python第十三课-飞机大战4(课件)
3
Python第十三课-飞机大战4(课件)
4
Python第十三课-飞机大战4(课件)
5
Python第十三课-飞机大战4(课件)
6
所属专辑
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。