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使用PIL模块生成随机验证码
Nov 21 Python
python构建深度神经网络(续)
Mar 10 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
May 21 Python
python跳出双层for循环的解决方法
Jun 24 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
在python shell中运行python文件的实现
Dec 21 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
python 5个实用的技巧
Sep 27 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
python中出现invalid syntax报错的几种原因分析
Feb 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
php实现获取文件mime类型的方法
2015/02/11 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
读jQuery之五(取DOM元素)
2011/06/20 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
python使用Matplotlib画条形图
2020/03/25 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
new修饰符是起什么作用
2015/06/28 面试题
外贸主管求职简历的自我评价
2013/10/23 职场文书
学校万圣节活动方案
2014/02/13 职场文书
希特勒的演讲稿
2014/05/23 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
业务员年终工作总结2015
2015/05/28 职场文书
小学六年级毕业感言
2015/07/30 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
Python使用pyecharts控件绘制图表
2022/06/05 Python