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 相关文章推荐
在Linux下调试Python代码的各种方法
Apr 17 Python
wxpython中自定义事件的实现与使用方法分析
Jul 21 Python
Python冒泡排序注意要点实例详解
Sep 09 Python
Python3学习urllib的使用方法示例
Nov 29 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
Python内置模块logging用法实例分析
Feb 12 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
python celery分布式任务队列的使用详解
Jul 08 Python
python设置随机种子实例讲解
Sep 12 Python
python保存log日志,实现用log日志画图
Dec 24 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 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下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
Django logging配置及使用详解
2019/07/23 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
python写一个随机点名软件的实例
2019/11/28 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
Python 发送邮件方法总结
2020/08/10 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
会计电算化专业求职信
2014/06/10 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
招标保密承诺书
2015/01/20 职场文书
工程部主管岗位职责
2015/02/12 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
科技馆观后感
2015/06/08 职场文书
护士医德医风心得体会
2016/01/25 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
python本地文件服务器实例教程
2021/05/02 Python