python飞机大战pygame碰撞检测实现方法分析


Posted in Python onDecember 17, 2019

本文实例讲述了python飞机大战pygame碰撞检测实现方法。分享给大家供大家参考,具体如下:

目标

  • 了解碰撞检测方法
  • 碰撞实现

01. 了解碰撞检测方法

  • pygame 提供了 两个非常方便 的方法可以实现碰撞检测:

pygame.sprite.groupcollide()

  • 两个精灵组 中 所有的精灵 的碰撞检测
groupcollide(group1, group2, dokill1, dokill2, collided = None) -> Sprite_dict
  • 如果将 dokill 设置为 True,则 发生碰撞的精灵将被自动移除
  • collided 参数是用于 计算碰撞的回调函数
    • 如果没有指定,则每个精灵必须有一个 rect 属性

pygame.sprite.spritecollide()

  • 判断 某个精灵 和 指定精灵组 中的精灵的碰撞
spritecollide(sprite, group, dokill, collided = None) -> Sprite_list
  • 如果将 dokill 设置为 True,则 指定精灵组 中 发生碰撞的精灵将被自动移除
  • collided 参数是用于 计算碰撞的回调函数
    • 如果没有指定,则每个精灵必须有一个 rect 属性
  • 返回 精灵组 中跟 精灵 发生碰撞的 精灵列表

02. 碰撞实现

def __check_collide(self):

  # 1. 子弹摧毁敌机
  pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group, True, True)
  
  # 2. 敌机撞毁英雄
  enemies = pygame.sprite.spritecollide(self.hero, self.enemy_group, True)
  
  # 判断列表时候有内容
  if len(enemies) > 0:
  
    # 让英雄牺牲
    self.hero.kill()
    
    # 结束游戏
    PlaneGame.__game_over()

更多关于Python相关内容可查看本站专题:《Python游戏开发技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Pyramid添加Middleware的方法实例
Nov 27 Python
python使用scrapy解析js示例
Jan 23 Python
使用Python的Scrapy框架编写web爬虫的简单示例
Apr 17 Python
Python设计模式之代理模式简单示例
Jan 09 Python
深入浅析python 中的匿名函数
May 21 Python
在unittest中使用 logging 模块记录测试数据的方法
Nov 30 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
Pytorch 多维数组运算过程的索引处理方式
Dec 27 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
Python通过getattr函数获取对象的属性值
Oct 16 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
我对PyTorch dataloader里的shuffle=True的理解
May 20 Python
python wxpython 实现界面跳转功能
Dec 17 #Python
python飞机大战pygame游戏背景设计详解
Dec 17 #Python
python实现名片管理器的示例代码
Dec 17 #Python
python飞机大战pygame游戏框架搭建操作详解
Dec 17 #Python
使用Python测试Ping主机IP和某端口是否开放的实例
Dec 17 #Python
基于Django实现日志记录报错信息
Dec 17 #Python
python实现12306登录并保存cookie的方法示例
Dec 17 #Python
You might like
PHP4实际应用经验篇(7)
2006/10/09 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
交通安全教育制度
2014/02/02 职场文书
门店业绩提升方案
2014/06/08 职场文书
节约用水的口号
2014/06/20 职场文书
大四学生个人总结
2015/02/15 职场文书
大学生逃课检讨书
2015/05/04 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
PO模式在selenium自动化测试框架的优势
2022/03/20 Python
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技