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 变量类型及命名规则介绍
Jun 08 Python
详解Python使用simplejson模块解析JSON的方法
Mar 24 Python
Python定时器实例代码
Nov 01 Python
Python基于高斯消元法计算线性方程组示例
Jan 17 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
详解Python中的测试工具
Jun 09 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
pytorch 计算ConvTranspose1d输出特征大小方式
Jun 23 Python
简单谈谈Python面向对象的相关知识
Jun 28 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
php入门小知识
2008/03/24 PHP
php读取javascript设置的cookies的代码
2010/04/12 PHP
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
js获取上传文件大小示例代码
2014/04/10 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
Python八皇后问题解答过程详解
2019/07/29 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
Python进度条的制作代码实例
2019/08/31 Python
python匿名函数的使用方法解析
2019/10/10 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
python实现高斯投影正反算方式
2020/01/17 Python
python操作链表的示例代码
2020/09/27 Python
Python入门基础之数字字符串与列表
2021/02/01 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
外贸公司实习自我鉴定
2013/09/24 职场文书
机电工程学生自荐信范文
2013/12/07 职场文书
《去年的树》教学反思
2014/04/11 职场文书
会计演讲稿范文
2014/05/23 职场文书
单位工作证明格式模板
2014/10/04 职场文书
投资合作意向书范本
2015/05/08 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers