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应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python利用前序和中序遍历结果重建二叉树的方法
Apr 27 Python
Python中pillow知识点学习
Apr 30 Python
Sanic框架基于类的视图用法示例
Jul 18 Python
Django 实现购物车功能的示例代码
Oct 08 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
Python3 webservice接口测试代码详解
Jun 23 Python
详解python模块pychartdir安装及导入问题
Oct 22 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 Python
python识别围棋定位棋盘位置
Jul 26 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 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
python脚本内运行linux命令的方法
2015/07/02 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
Python爬虫与反爬虫大战
2020/07/30 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
python脚本第一行如何写
2020/08/30 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
护理自荐信
2013/10/22 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
八一建军节主持词
2015/07/01 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
个人售房合同协议书
2016/03/21 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript