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系列之新版本导入httplib模块报ImportError解决方案
May 23 Python
Python创建xml的方法
Mar 10 Python
python通过smpt发送邮件的方法
Apr 30 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
Oct 18 Python
python logging通过json文件配置的步骤
Apr 27 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 Python
Python读取JSON数据操作实例解析
May 18 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
python安装mysql的依赖包mysql-python操作
Jan 01 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数组实例详解
2016/06/26 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
利用jQuery 实现GridView异步排序、分页的代码
2010/02/06 Javascript
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
Python实现数字的格式化输出
2020/08/01 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
总经理岗位职责
2013/11/09 职场文书
外贸学院会计专业应届生求职信
2013/11/14 职场文书
中专生自我鉴定
2013/12/17 职场文书
分家协议书
2014/04/21 职场文书
郭明义观后感
2015/06/08 职场文书
迎国庆主题班会
2015/08/17 职场文书
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL