Python少儿编程课程体系Python进阶13-飞机大战4+14-飞机大战5+15-飞机大战6.pptxVIP

Python少儿编程课程体系Python进阶13-飞机大战4+14-飞机大战5+15-飞机大战6.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Loremipsumdolorsitamet,consectetueradipiscingelit.Aeneancommodoligulaegetdolor.Cumsociisnatoquepenatibusetmagnisdisparturientmontes,nasceturridiculusmus.

飞机大战4

本节我们来增加子弹和陨石、飞机和陨石之间的碰撞效果,并使用图片素材替换方块

碰撞检测

分别在产生陨石和子弹的地方,加入相应的精灵组12创建子弹与陨石精灵组#定义陨石精灵组#定义8个陨石并加入到精灵组all_spritesforiinrange(8):…all_meteorite=pygame.sprite.Group()#定义子弹精灵组all_bullets=pygame.sprite.Group()#在循环产生陨石时,加入陨石精灵组all_meteorite.add(met)defshoot(self):…#在飞机的shoot方法中产生子弹时,加入子弹精灵组all_bullets.add(bullet)

接着来看碰撞,pygame提供了处理精灵组之间碰撞的函数精灵组的碰撞—groupcollide函数原型groupcollide(,,)group1:精灵组1group2:精灵组2dokill1:发生碰撞时,是否销毁精灵组1中的发生碰撞的精灵。dokill2:发生碰撞时,是否销毁精灵组2中的发生碰撞的精灵。collided:自定义的回调函数,你可以自己编写碰撞检测函数。碰撞检测函数的参数是两个精灵,返回值是True/False返回值是一个字典,键是精灵组1中发生碰撞的精灵,值是精灵组2中与该精灵发生碰撞的精灵的列表。

现在来添加子弹与陨石的碰撞检测由于碰撞后销毁了陨石,所以需要在碰撞后添加一个新的陨石出来12精灵组碰撞处理#检测子弹组和陨石组是否碰撞hits=pygame.sprite.groupcollide(all_meteorite,all_bullets,True,True)#如果碰撞了,则重新生成一个陨石,并加入到all_sprites和all_meteorite精灵组forhitinhits:meteorite=Meteorite()all_sprites.add(meteorite)all_meteorite.add(meteorite)

运行程序,体验一下效果

飞机和陨石的碰撞效果1增加飞机与陨石的碰撞检测2运行程序,体验效果#检测飞机和陨石之间的碰撞hits=pygame.sprite.spritecollide(player,all_meteorite,True)#如果碰撞,则游戏结束ifhits:running=False不同与子弹和陨石,飞机与陨石是精灵和精灵组之间的碰撞。单个精灵和某个精灵组之间的碰撞检测,使用spritecollide方法

改头换面

在前面的课程中,无论是飞机、陨石还是子弹,我们都是使用方块代替的,现在我们就把他们换成真正的图片素材在工程目录新建img文件夹,然后将素材拷贝到文件夹中12首先替换陨石图片在Meteorite类的__init__方法中,我们将#定义陨石的图形self.image=pygame.Surface((30,40))#定义陨石的颜色为红色self.image.fill((255,0,0))更换为:self.image=pygame.image.load(img/img_meteorite.png)

练习Exercises将飞机的图片、子弹的图片都更改

更改游戏的背景,效果演示1在原先设置背景颜色的地方,修改成如下代码#绘制屏幕的背景颜色#screen.fill(COLOR_BLACK)background=pygame.image.load(img/img_bg.jpg).convert()screen.blit(background,background.get_rect())2运行程序,效果如下:

总结Summary√Pygame中的碰撞效果√Pygame素材导入

Thanks!

Loremipsumdolorsitamet,consectetueradipiscingelit.Aeneancommodoligulaegetdolor.Cumsociisnatoquepenatibusetmagnisdisparturientmontes,nasceturridiculusmus.

飞机大战5

本节我们优化碰撞检测,并添加计分机制,完善飞机大战游戏

您可能关注的文档

文档评论(0)

zhixingtianxia + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档