- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Python少儿编程 进阶篇公开课 优质课 适用如遇课件中视频、音频无法正常播放,请在网站联系上传者索取完整版本。如需与课件配套的教学设计、随堂练习,请与上传者联系索取。
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. 少儿编程课
飞机大战5
本节我们优化碰撞检测,并添加计分机制,完善飞机大战游戏效果
碰撞检测的优化
如果仔细观察游戏效果,你会发现陨石还没有碰到飞机,就发生了碰撞检测,游戏结束这是因为虽然陨石和飞机是不规则的形状,但是碰撞检测还是以图片的长方形来判断的。以下图为例:明白了原因之后,接下来我们想办法优化一下碰撞检测陨石图片陨石本身飞机图片飞机本身图片边缘已经碰撞飞机和陨石本身并没有碰到
优化碰撞检测的方法:将飞机和陨石当做圆来处理23为spritecollide添加第四个参数pygame.sprite.collide_circle之前说过,这个参数可以指定一个回调函数,能够定制一些特殊的检测方法,pygame.sprite.collide_circle就是pygame提供的用来检测两个圆是否碰撞的函数将陨石当作圆来处理,指定半径hits = pygame.sprite.spritecollide(player, all_meteorite, True, pygame.sprite.collide_circle)# 把陨石当做圆处理,设定陨石的半径self.radius = int(self.rect.width * 0.85 / 2)# pygame.draw.circle(self.image, COLOR_GREEN, self.rect.center, self.radius)# 把飞机当圆处理,设置飞机圆的半径self.radius = 20# pygame.draw.circle(self.image, COLOR_GREEN, self.rect.center, self.radius)因为陨石外面有透明部分,可以先乘以0.85去掉透明部分然后再除以2作为半径。两个设定半径后跟的一行代码表示绘制指定半径的一个圆,这样可以更直观的看到把飞机和陨石当成圆的样子。1将飞机当作圆来处理,指定半径
运行程序,效果如下:
素材丰富与记分机制
接下来,我们丰富掉落的陨石类型1首先把所有陨石的图片效果列出来存到列表中3最后在陨石的初始化方法中,随机选定一个图片即可4运行程序,效果如下:2然后循环获取所有图片meteor_list = [img_meteorite_01.png, img_meteorite_02.png, img_meteorite_03.png,img_meteorite_04.png, img_meteorite_05.png,img_meteorite_06.png, img_meteorite_07.png, img_meteorite_08.png]# 循环获取所有图片meteor_images = []for img in meteor_list: meteor_images.append(pygame.image.load(img/ + img))# 随机获取列表中的某一项self.image = random.choice(meteor_images)
飞机打陨石的过程已经做好了,下面我们给游戏添加计分机制1定义绘制计分的方法,首先设置字体和大小# 定义绘制计分的方法def draw_text(surf, text, size, x, y): # 设置画笔的字体 font_name = pygame.font.match_font(arial) # 设置画笔的字体和大小 font = pygame.font.Font(font_name, size)3 # 将字体绘制到屏幕上 surf.blit(text_surface, text_rect)2创建字体的矩形区域并设置位置 # 绘制内容:text为内容,True为是否抗锯齿,字体颜色为白色 text_surface = font.render(text, True, (255, 255, 255)) # 设置字体的矩形 text_rect = text_su
您可能关注的文档
- python编程 一阶第07课 7课 while循环 课件 .pptx
- python编程 一阶第11课 排列小星星 课件 .pptx
- python编程教学 二阶第02课 神奇的“圆” 课件 .pptx
- python编程教学 二阶第05课 春联 课件 .pptx
- python编程教学 二阶第06课 新年贺卡 课件 .pptx
- python编程教学 二阶第08课 奥运五环 课件 .pptx
- python编程教学 二阶第10课 多彩同心圆 课件 .pptx
- python编程教学 二阶第11课 花蟒蛇 课件 .pptx
- python编程教学 二阶第20课 案例考题(三)课件 .pptx
- python编程教学 三阶第05课 高阶函数 课件.pptx
文档评论(0)