当前位置: 首页 > news >正文

Python-项目实战--飞机大战-碰撞检测(8)

目标

  • 了解碰撞检测方法

  • 碰撞实现

1.了解碰撞检测方法

  • pygame提供了两个非常方便的方法可以实现碰撞检测:

pygame.sprite.groupcollide()

  • 两个精灵组所有的精灵的碰撞检测

groupcollide(group1, group2, dokill1, dokill2, collided = None) -> Sprite_dict
  • 如果将dokill(布尔类型)设置为True,则发生碰撞的精灵将被自动移除

  • collided参数是用于计算碰撞的回调函数

  • 如果没有指定,则每个精灵必须有一个rect属性

代码演练

  • plane_main.pyPlaneGame类中修改__check_collide方法

def __check_collide(self):# 1.子弹摧毁敌机pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group, True, True)

pygame.sprite.spritecollide()

  • 判断某个精灵指定精灵组中的精灵的碰撞

spritecollide(sprite, group, dokill, collided = None) -> Sprite_list
  • 如果将dokill设置为True,则指定精灵组发生碰撞的精灵将自动移除

  • collided参数是用于计算碰撞的回调函数

  • 如果没有指定,则每个精灵必须有一个rect属性

  • 返回精灵组中跟精灵发生碰撞的精灵列表

代码演练

  • plane_main.pyPlaneGame类中修改__check_collide方法

def __check_collide(self):# 1.子弹摧毁敌机pygame.sprite.groupcollide(self.hero.bullets, self.enemy_group, True, True)# 2.敌机撞毁英雄,此时英雄是无敌的,只有敌机会被销毁,英雄不会被销毁pygame.sprite.spritecollide(self.hero, self.enemy_group, True)
  • 要想英雄也被销毁,需要用到pygame.sprite.spritecollide()返回值,是一个精灵列表,利用if判断列表的长度,如果列表里有内容,说明英雄和敌机发生了碰撞,则结束游戏

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)# 3.判断列表是否有内容if len(enemies) > 0:# 让英雄牺牲self.hero.kill()# 结束游戏PlaneGame.__game_over()

2.碰撞实现

  • plane_main.pyPlaneGame类中修改__check_collide方法

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)# 3.判断列表是否有内容if len(enemies) > 0:# 让英雄牺牲self.hero.kill()# 结束游戏PlaneGame.__game_over()

内容总结于:https://space.bilibili.com/37974444

代码见:https://github.com/x45w/python_feijidazhan1.git或者https://github.com/x45w/python_feijidazhan.git

相关文章:

Python-项目实战--飞机大战-碰撞检测(8)

目标了解碰撞检测方法碰撞实现1.了解碰撞检测方法pygame提供了两个非常方便的方法可以实现碰撞检测:pygame.sprite.groupcollide()两个精灵组中所有的精灵的碰撞检测groupcollide(group1, group2, dokill1, dokill2, collided None) -> Sprite_dict如果将dokill…...

T06 成绩排序

查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。 示例: jack 70 peter 96 Tom 70 smith 67 从高到低 成…...

【机器学习】Linear and Nonlinear Regression 线性/非线性回归讲解

文章目录一、回归问题概述二、误差项定义三、独立同分布的假设四、似然函数的作用五、参数求解六、梯度下降算法七、参数更新方法八、优化参数设置一、回归问题概述 回归:根据工资和年龄,预测额度为多少 其中,工资和年龄被称为特征&#xff0…...

PyQt5数据库开发1 4.1 SQL Server 2008 R2如何开启数据库的远程连接

文章目录 前言 步骤/方法 1 使用windows身份登录 2 启用混合登录模式 3 允许远程连接服务器 4 设置sa用户属性 5 配置服务器 6 重新登录 7 配置SSCM 8 确认防火墙设置 注意事项 前言 SQL Server 2008 R2如何开启数据库的远程连接 SQL Server 2008默认是不允许远程连…...

javassm高校学生评教系统的设计与实现idea msyql

伴随着社会以及科学技术的发展,互联网已经渗透在人们的身边,网络慢慢的变成了人们的生活必不可少的一部分,紧接着网络飞速的发展,管理系统这一名词已不陌生,越来越多的学校、公司等机构都会定制一款属于自己个性化的管…...

为什么神经网络做不了2次函数拟合,网上的都是骗人的吗?

环境:tensorflow2 kaggle 这几天突发奇想,用深度学习训练2次函数。先在网上找找相同的资料这方面资料太少了。大多数如下: 。 给我的感觉就是,用深度学习来做,真的很容易。 网上写出代码分析的比较少。但是也找到了…...

【Java】Help notes about JAVA

JAVA语言帮助笔记Java的安装与JDKJava命名规范JAVA的数据类型自动类型转换强制类型转换JAVA的运算符取余运算结果的符号逻辑运算的短路运算三元运算符运算符优先级JAVA的流程控制分支结构JAVA类Scanner类Java的安装与JDK JDK安装网站:https://www.oracle.com/java/…...

2023北京老博会,北京养老展,第十届中国国际老年产业博览会

2023第十届(北京)国际老年产业博览会,将于08月28-30日盛大举办; 2023北京老博会:2023第十届中国(北京)国际老年产业博览会The 2023 tenth China (Beijing) International Aged industry Expo&a…...

C++展开模板参数包、函数参数包-(lambda+折叠表达式)

开门见山 以下代码可展开模板参数包和展开函数参数包。 // lambda折叠表达式(需C17) #include <iostream> using namespace std;// 1.展开模板参数包 template<typename ...T> void Func1() {([]() {cout << typeid(T).name() << endl;}(), ...);// …...

【Spark分布式内存计算框架——Spark Core】7. RDD Checkpoint、外部数据源

第五章 RDD Checkpoint RDD 数据可以持久化&#xff0c;但是持久化/缓存可以把数据放在内存中&#xff0c;虽然是快速的&#xff0c;但是也是最不可靠的&#xff1b;也可以把数据放在磁盘上&#xff0c;也不是完全可靠的&#xff01;例如磁盘会损坏等。 Checkpoint的产生就是…...

Connext DDSQoS参考

1 QoS策略列表 ConnextDDS 6.1.1版中所有QoS策略的高级视图。 1. QoS策略描述...

【正则表达式】获取html代码文本内所有<script>标签内容

文章目录一. 背景二. 思路与过程1. 正则表达式中需要限定<script>开头与结尾2. 增加标签格式的限定3. 不限制<script>首尾的内部内容4. 中间的内容不能出现闭合的情况三. 结果与代码四. 正则辅助工具一. 背景 之前要对学生提交的html代码进行检查&#xff0c;在获…...

有 9 种springMVC常用注解高频使用,来了解下?

文章目录1、Controller2、RequestMapping2.1 RequestMapping注解有六个属性2.1.1 value2.1.2 method2.1.3 consumes2.1.4 produces2.1.5 params2.1.6 headers2.2 Request Mapping&#xff08;"/helloword/?/aa"&#xff09;的Ant路径&#xff0c;匹配符2.3 Request …...

【ES6】掌握Promise和利用Promise封装ajax

&#x1f4bb; 【ES6】掌握Promise和利用Promise封装ajax &#x1f3e0;专栏&#xff1a;JavaScript &#x1f440;个人主页&#xff1a;繁星学编程&#x1f341; &#x1f9d1;个人简介&#xff1a;一个不断提高自我的平凡人&#x1f680; &#x1f50a;分享方向&#xff1a;目…...

REDIS-持久化方案

我们知道redis是内存数据库&#xff0c;它的数据是存储在内存中的&#xff0c;我们知道内存的一个特点是断电数据就丢失&#xff0c;所以redis提供了持久化功能&#xff0c;可以将内存中的数据状态存储到磁盘里面&#xff0c;避免数据丢失。 Redis持久化有三种方案&#xff0c;…...

五、Java框架之Maven进阶

黑马课程 文章目录1. 分模块开发1.1 分模块开发入门案例示例&#xff1a;抽取domain层示例&#xff1a;抽取dao层1.2 依赖管理2. 聚合和继承2.1 聚合概述聚合实现步骤2.2 继承 dependencyManagement3. 属性管理3.1 依赖版本属性管理3.2 配置文件属性管理&#xff08;了解&#…...

1.前言【Java面试第三季】

1.前言【Java面试第三季】前言推荐1.前言00_前言闲聊和课程说明本课程介绍目前考核的变化趋势vcr集数和坚持学长谷粉面试题复盘反馈最后前言 2023-2-1 12:30:05 以下内容源自 【尚硅谷Java大厂面试题第3季&#xff0c;跳槽必刷题目必扫技术盲点&#xff08;周阳主讲&#xff0…...

06分支限界法

文章目录八数码难题普通BFS算法全局择优算法&#xff08;A算法&#xff0c;启发式搜索算法&#xff09;单源最短路径问题装载问题算法思想&#xff1a;队列式分支限界法优先队列式分支限界法布线问题最大团问题批处理作业调度问题分支限界法与回溯法的区别&#xff1a; &#x…...

Docker Compose编排

一、概念1、Docker Compose是什么Docker Compose的前身是Fig&#xff0c;它是一个定义及运行多个Docker容器的工具通过 Compose&#xff0c;不需要使用shell脚本来启动容器&#xff0c;而使用 YAML 文件来配置应用程序需要的所有服务然后使用一个命令&#xff0c;根据 YAML 的文…...

Docker进阶 - 11. Docker Compose 编排服务

注&#xff1a;本文只对一些重要步骤和yml文件进行一些讲解&#xff0c;其他的具体程序没有记录。 目录 1. 原始的微服务工程编排(不使用Compose) 2. 使用Compose编排微服务 2.1 编写 docker-compose.yml 文件 2.2 修改并构建微服务工程镜像 2.3 启动 docker-compose 服务…...

本地部署AI代码解释器:基于大模型的对话式编程实践指南

1. 项目概述&#xff1a;当本地代码解释器遇上大模型最近在折腾一个挺有意思的项目&#xff0c;叫local-code-interpreter。这名字听起来有点学术&#xff0c;但说白了&#xff0c;它就是一个能让你在自己电脑上&#xff0c;通过自然语言对话来编写、执行和调试代码的“智能助手…...

千问 LeetCode 2281.巫师的总力量和 public int totalStrength(int[] strength)

LeetCode 2281. 巫师的总力量和 是一道经典的 贡献法 + 单调栈 + 前缀和的前缀和 题目。题目要求对数组的所有非空连续子数组,计算: min(subarray) * sum(subarray) 的总和,并对 10^9 + 7 取模。 ✅ 解题思路(核心思想) 我们 不枚举所有子数组(那样是 O(n)),而是 枚…...

CMOS闩锁效应原理与防护设计实践

1. 闩锁效应基础原理剖析闩锁效应(Latch-up)是CMOS集成电路设计中最为棘手的可靠性问题之一。这种现象本质上是由芯片内部寄生形成的PNP-NPN晶体管对构成的晶闸管结构(SCR)被意外触发导致的。当特定条件满足时&#xff0c;这些寄生元件会形成正反馈回路&#xff0c;导致电源与地…...

QFN测试插座技术解析与应用实践

1. QFN测试插座的技术挑战与解决方案在半导体测试领域&#xff0c;QFN封装器件的测试一直是个棘手问题。这种无引线四方扁平封装虽然节省空间、散热优异&#xff0c;但恰恰因为缺少传统引脚&#xff0c;使得测试接触变得异常困难。我经手过不少QFN测试项目&#xff0c;最头疼的…...

最小扩张三角剖分:算法优化与计算几何实践

1. 最小扩张三角剖分问题概述在计算几何领域&#xff0c;最小扩张三角剖分&#xff08;Minimum Dilation Triangulation, MDT&#xff09;是一个经典的优化问题。给定平面上的n个点集P&#xff0c;MDT的目标是找到一个三角剖分T&#xff0c;使得对于P中的任意两点s和t&#xff…...

用PLC控制Labview自动运行

博图软件设置注意数据位正确下图为Labview读取CSV文件的位置测试数据如下图所示实现方法&#xff1a;在1分支内创建好条件&#xff0c;当PLC心跳为True那么就去跑True里面的流程&#xff08;CSM框架&#xff09;...

大模型压缩实战:量化、剪枝与知识蒸馏技术解析与应用

1. 项目概述&#xff1a;当大模型遇见“瘦身”革命最近在跟几个做AI应用落地的朋友聊天&#xff0c;大家普遍都在吐槽一个事儿&#xff1a;现在的大语言模型&#xff08;LLM&#xff09;能力是强&#xff0c;但动辄几十亿、上百亿的参数规模&#xff0c;部署成本高得吓人&#…...

如何解决Funannotate数据库安装失败:从403错误到完整部署的实战指南

如何解决Funannotate数据库安装失败&#xff1a;从403错误到完整部署的实战指南 【免费下载链接】funannotate Eukaryotic Genome Annotation Pipeline 项目地址: https://gitcode.com/gh_mirrors/fu/funannotate Funannotate是真核基因组注释的强大工具&#xff0c;但在…...

抖音下载器终极指南:3分钟实现无水印批量下载的高效解决方案

抖音下载器终极指南&#xff1a;3分钟实现无水印批量下载的高效解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback…...

CanFestival回调函数避坑指南:为什么你的RPDO参数修改了却没生效?

CanFestival回调函数深度解析&#xff1a;RPDO参数修改失效的五大隐蔽原因与实战解决方案 在工业自动化领域&#xff0c;CanFestival作为开源的CANopen协议栈&#xff0c;被广泛应用于各类嵌入式设备中。然而&#xff0c;许多开发者在配置RPDO&#xff08;接收过程数据对象&…...