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 os模块介绍
Nov 30 Python
Python进程间通信Queue实例解析
Jan 25 Python
用python3教你任意Html主内容提取功能
Nov 05 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 Python
python十进制转二进制的详解
Feb 07 Python
django的autoreload机制实现
Jun 03 Python
python 获取计算机的网卡信息
Feb 18 Python
python使用pygame创建精灵Sprite
Apr 06 Python
Python利用folium实现地图可视化
May 23 Python
Python借助with语句实现代码段只执行有限次
Mar 23 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
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
php bootstrap实现简单登录
2016/03/08 PHP
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
vue2过滤器模糊查询方法
2018/09/16 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
Python自动扫雷实现方法
2015/07/25 Python
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
python批量下载抖音视频
2019/06/17 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
中间件分为哪几类
2012/03/14 面试题
幼儿园教学随笔感言
2014/02/23 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
人民检察院起诉书
2015/05/20 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
《我是什么》教学反思
2016/02/16 职场文书
Python中相见恨晚的技巧
2021/04/13 Python
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏
python+opencv实现目标跟踪过程
2022/06/21 Python