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 相关文章推荐
Python 面向对象 成员的访问约束
Dec 23 Python
Python time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
centos系统升级python 2.7.3
Jul 03 Python
Python实现的最近最少使用算法
Jul 10 Python
Python编码类型转换方法详解
Jul 01 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 Python
python3+PyQt5泛型委托详解
Apr 24 Python
如何实现删除numpy.array中的行或列
May 08 Python
Flask框架Jinjia模板常用语法总结
Jul 19 Python
python能做什么 python的含义
Oct 12 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
php文件上传的例子及参数详解
2013/12/12 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
Python Socket编程详细介绍
2017/03/23 Python
Python实现的快速排序算法详解
2017/08/01 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
打架检讨书100字
2014/01/19 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
个人整改措施书面材料
2014/10/24 职场文书
2015国庆节感想
2015/08/04 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
Python编解码问题及文本文件处理方法详解
2021/06/20 Python
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
Java存储没有重复元素的数组
2022/04/29 Java/Android
服务器nginx权限被拒绝解决案例
2022/09/23 Servers