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的发展史
Sep 26 Python
零基础写python爬虫之神器正则表达式
Nov 06 Python
python实现将元祖转换成数组的方法
May 04 Python
详解Python中time()方法的使用的教程
May 22 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
python微信公众号之关键词自动回复
Jun 15 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
Python装饰器基础概念与用法详解
Dec 22 Python
Python 中的 import 机制之实现远程导入模块
Oct 29 Python
python中的itertools的使用详解
Jan 13 Python
opencv+python实现均值滤波
Feb 19 Python
如何提高python 中for循环的效率
Apr 15 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 地址栏信息的获取代码
2009/01/07 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
PHP二维数组去重算法
2016/12/17 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
Python常用模块用法分析
2014/09/08 Python
python实现读取命令行参数的方法
2015/05/22 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
python多线程并发及测试框架案例
2019/10/15 Python
德国帽子专家:Hutshopping
2019/11/03 全球购物
本科生自荐信
2014/06/18 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
关于python中模块和重载的问题
2021/11/02 Python
R9700摩机记
2022/04/05 无线电
代码复现python目标检测yolo3详解预测
2022/05/06 Python