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中的继承和多态的概念
Apr 27 Python
设计模式中的原型模式在Python程序中的应用示例
Mar 02 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
python 全文检索引擎详解
Apr 25 Python
python遍历文件夹下所有excel文件
Jan 03 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
python 实现对文件夹中的图像连续重命名方法
Oct 25 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
Aug 21 Python
Pygame框架实现飞机大战
Aug 07 Python
python中random.randint和random.randrange的区别详解
Sep 20 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
PHP setTime 设置当前时间的代码
2012/08/27 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
Python正则表达式匹配HTML页面编码
2015/04/08 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python实现定时精度可调节的定时器
2018/04/15 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
华三通信H3C面试题
2015/05/15 面试题
个人简历自我评价八例
2013/10/31 职场文书
中学生英语演讲稿
2014/04/26 职场文书
建筑工地大门标语
2014/06/18 职场文书
电力培训心得体会
2014/09/02 职场文书
2014年电工工作总结
2014/11/20 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang
python中tkinter复选框使用操作
2021/11/11 Python