当前课程知识点:Python 交互式程序设计导论 >  第8周 >  B、课程视屏(动画) >  精灵碰撞

返回《Python 交互式程序设计导论》慕课在线视频课程列表

精灵碰撞在线视频

精灵碰撞

下一节:精灵动画

返回《Python 交互式程序设计导论》慕课在线视频列表

精灵碰撞课程教案、知识点、字幕

欢迎大家回到python课堂

今天,我将给大家介绍我们第八个小项目

守卫家园当中的——精灵碰撞

首先,我们来看一看什么是精灵碰撞

精灵碰撞是怎么一回事

为了使碰撞检测变得简单,我们假设,我们在项目当中

看到的每个事物或者每个对象,都是一个圆

因为对于圆来说,检测碰撞会变得简单

但又不会使我们的游戏失去可玩儿性

假设这里有两个事物

第一个事物半径为r1,第二个事物半径是r2

两个圆之间,有一个圆心距,我们称之为d

我们去比较d和两个圆半径之和

当d大于r1加r2(d>r1+r2)

很显然两个事物或者对象没有发生碰撞

当两个对象,圆心距(d)小于r1加r2(d

也就是小于半径之和,很显然,它们是发生了碰撞

因为使用圆去检测碰撞,就会变得更加简单

圆心距这个是我们初高中数学已经有的知识

计算起来非常的简单

在第八个小项目当中,我们提供的模板

那么精灵类,在这里面有两个属性

首先是pos这个属性,也就是它的中心坐标

还有一个属性是radius也就是我们这个精灵的半径

有了中心坐标和半径,我们就可以去计算和其它对象之间的圆心距

在精灵类当中还提供了这样几个方法

首先是获取半径,通过get_radius()很容易就得到当前精灵的半径

通过get_pos(),pos就可以获得当前精灵的中心坐标

那么第三个方法,检测碰撞collide(),那么这个方法在我们 精灵类这个视频当中

已经有讲解,我在这里就不过多阐述

它可以检测两个对象之间是否发生碰撞

在我们本周的项目当中,我们来看一下,在这个游戏中

我们有哪几类对象

首先,是我们的城堡,我们的城堡有一个中心,它有一个半径

其次,是我们的敌人,我们的敌人也有一个中心,也有它自己的半径

第三类是我们战士射出去的剑,它有它的中心,也有它的半径

我们的战士不用去检测和敌人是否发生碰撞

所以,在我们的游戏当中,我们最主要要检测的是

城堡和敌人是否发生碰撞,战士射出去的剑,是否和敌人发生了碰撞

那么,在我们的游戏当中,我们有这四类对象:战士、城堡、箭和敌人

而我们城堡、箭和敌人,都是通过精灵类产生的

而我们的城堡游戏初始化

那么它是不止一个城堡,是具有四个城堡

而战士射出去的剑,是根据我们玩家鼠标点击的次数决定的

游戏中的敌人是随机产生的,所以它们都不只有一个

为了检测方便,我们都用集合去表示

我们会有一个城堡集合,有一个战士射出去的剑这样一个集合

有产生的敌人这样一个集合

我们的任务就是检测城堡这个集合和敌人这个集合之间碰撞的关系

再去检测战士射出去的剑与敌人之间这两个集合之间的碰撞关系

在我们的模板当中,提供的精灵类已经可以检测两个单独对象之间的碰撞

那怎么样去检测两个集合之间的碰撞呢

我们的模板首先提供了一个检测一组对象和另一个对象是否 发生碰撞的辅助函数

定义为group_colide,在这里提供了两个参数

第一个是一个组的参数group,第二个是一个对象other_object这个参数

我们的任务是检测group这个组中的每个对象

是否和我们后面传进的这个other_object发生了碰撞

如果发生了碰撞,那么我们就返回True,否则我们返回False

如果是Ture我们可能会执行相应的操作

例如,会有动画效果的展示

当我完成了一组对象和另一个对象的碰撞检测后

还不能够完成,城堡这个集合和敌人这个集合的碰撞检测

也无法完成战士射出去的剑这个集合和敌人这个集合之间的碰撞

我们还需要我们模板提供的另一个辅助函数

检测两组对象是否发生碰撞

那么在这里,我们只需要检测group2中每个对象

是否和group1中每个对象发生了碰撞

因为我们游戏的设置是,如果我们的消灭敌人数超过100

或者我们的城堡全部被破坏,或者逃逸的敌人超过10个

我们的游戏就发生结束,所以这时候我们检测碰撞

如果是真,我们将返回被消灭的敌人数或者是损失的城堡数量

那么这就是我们检测碰撞所要用到的三个方法或者说是函数

那么第一个检测单个对象是否发生碰撞

我们可以直接使用精灵类的一个碰撞检测方法

当我要检测两个集合之间是否发生碰撞

首先我先要利用检测一组对象和另一个对象是否发生碰撞

再使用检测两组对象是否发生碰撞,这样两个辅助函数

最终才能够完成我们一组对象和另一组对象之间的碰撞

希望大家理清自己的思路

将这三个碰撞检测合理的运用到自己的代码当中

相信大家一定能够完成本周的项目

好,今天的内容就到这,谢谢大家的收看

Python 交互式程序设计导论课程列表:

第0周

-课程简介

--课程简介

-A 课程视频(算数操作符及表达式)

--绪论

--Python交互式解释器使用方法

--PyCharm集成开发环境介绍

--算数操作符及表达式

-B 课程视频(变量及赋值)

--变量

--项目提交

--“我喜欢Python”热身小项目

-C 辅助视频(计算机结构、Python开发环境安装)

--Windows平台安装Python开发环境

--Mac平台安装Python开发环境

-D 辅助视频(如何提交项目)

--项目提交

-第0周--小测验

-本周项目:"我喜欢Python"

--项目发布、完成、提交及评分流程

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

--项目提交

第1周

-A 课程视频(函数)

--函数

--其它操作符

--随机函数

-B 课程视频(逻辑及表达式)

--逻辑值和比较

--条件

--编程技巧

--“老虎杠子鸡虫”游戏

-第1周--小测验

-本周项目:“老虎杠子鸡虫”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第2周

-A 课程视频(Python交互式应用)

--事件驱动编程

--事件可视化跟踪执行

--SimpleGUITk

--按钮

-B 课程视频(输入框、全局变量)

--输入框

--局部变量和全局变量

--编程技巧

--“猫咪藏在哪个房间”游戏

-第2周--小测验A

-第2周--小测验B

-本周项目:猫咪藏在哪个房间

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第3周

-A 课程视频(画布绘图)

--画布和图形绘制

--字符串处理

--绘图和计时器可视化跟踪执行

--图片和音效

-B 课程视频(计时器)

--计时器

--交互式绘图

--“神奇时钟”游戏

--编程技巧

-第3周--小测验A

-第3周--小测验B

-本周项目:“神奇时钟”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第4周

-A 课程视频(列表)

--列表

--键盘输入

--列表及变化可视化跟踪执行

--碰撞和反射

-B 课程视频(键盘控制)

--速度控制

--运动

--编程技巧

--“桌上冰球”游戏

-第4周--小测验A

-第4周--小测验B

-本周项目:“桌上冰球”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第5周

-A 课程视频(鼠标输入、列表进阶)

--鼠标输入

--Video

--Video

--Video

-B 课程视频(字典和图片)

--Video

--Video

--Video

--Video

-第5周--小测验A

-第5周--小测验B

-本周项目:“世界杯八强连连看”

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第6周

-A 课程视频(类)

--面向对象编程(类和对象入门)

--面向对象编程(类和对象进阶)

--对象可视化跟踪执行

--华容道中的类

-B 课程视频(平铺图片)

--平铺图片

--理解对象

--编程技巧

--“华容道”游戏

-第6周--小测验A

-第6周--小测验B

-本周项目:“华容道”游戏

--游戏说明

--程序说明

--编码步骤

--评分标准

--项目模板

第7周

-A 课程视频(类进阶及文件操作)

--集合

--文件操作

--文字块类

--处理停止的文字块

-B 课程视频(游戏状态控制)

--游戏记分规则

--游戏结束的条件及处理

--编程技巧

--“决战三字经”游戏

-第7周--小测验A

-第7周--小测验B

-本周项目:决战三字经

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

第8周

-A、课程视屏(精灵集合)

--Video

--精灵类

--战士类

--编程技巧

-B、课程视屏(动画)

--精灵碰撞

--精灵动画

--编程技巧

--保卫家园游戏

-第8周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

精灵碰撞笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。