当前课程知识点:Python 交互式程序设计导论 >  第8周 >  A、课程视屏(精灵集合) >  精灵类

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

精灵类在线视频

精灵类

下一节:战士类

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

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

欢迎来到python交互式程序设计导论mooc课堂

这一讲呢,给大家介绍我们最后一个游戏项目

“守卫家园”当中的一个重要的类-就是精灵类,也叫sprite类

之所以说它重要呢,是因为我们这个游戏当中的一些重要的

对象、角色都是通过它来创建的

包括从右边出现的敌人,还有战士射出去的箭

还有呢,就是四个城堡

好,下面咱们来看这个类它有哪些属性,有哪些方法

仔细观察我们给大家提供的项目模板

在我们的项目模板当中呢,已经给大家提供了这个类的基本框架

好,类的名称叫Sprite,精灵类

但这是类的定义,首先我们看一下它有哪些具体的属性

第一个是image,那就说由它创建的这个对象

由这个精灵创建的对象它是由哪一个图片对象来绘制它的

这是第一个属性,首先我们要一个对应的图片来绘制它

然后是这个图片的中心点

就是在我们原始图片当中以什么为中心点来绘制我们这个精灵,我们这个对象

紧接着是原始图片,我们要裁剪的大小,就是长和宽

然后是我们要把它绘制在画板上的什么位置

当然绘制多大呢,也是由上面这个image_size来决定的

因此我们现在设计的精灵类呢,不能够对原始图片进行缩放

大小是一样的,这个大家要注意一下

紧接着是,这个对象它的运动速度

就是在我们游戏开始运转的时候它的运动速度

注意这两个属性它分别有X轴和Y轴上的分量

因为我们是在二维的平面上来做这个游戏的

好,下面一个参数angle是当我们绘制这个图片的时候

它是以什么样的角度来绘制的

就是这个图片要不要做旋转

再下面这个参数,是从名字上看,它叫半径

这个半径的作用是什么呢

就是当我们检测两个对象是不是发生碰撞的时候要用到半径

大家可以想象一下,两个的半径加起来就是两个之间的距离

如果我们中心点,通过两个对象的中心点计算也可以算出来一个距离

比较这两个值来判断是否发生了碰撞

下面一个参数age,是我们这个对象创建好以后

经过画布一次一次的刷新,它的年龄

每刷新一次它的年龄增长一岁,每刷新一次年龄增长一岁

好,下面一个是它的寿命

很显然这个寿命会决定了

当它的年龄超过了寿命以后,我们这个精灵的对象

就会消失,就会从我们的程序当中删除掉

好,下面两个参数呢,是决定动画效果的

首先这个animated是不是有动画的效果

要不要实现动画的效果,如果要,那你要给我提供平铺的图片

至少两帧以上才能实现动画,一帧是永远是个静止的画面

只能发生位置的移动,但是不能说,从这个位置移到下个位置

用不同的图片才能产生动画效果

好,最后,我们注意一下这里还有一个传进来的参数

叫sound,也是声音对象,是我们的资源对象

如果传进来有声音对象

那意味着我创建的这个精灵一开始它就要播放声音

要让它播放声音呢,先设置声音的大小

然后回到这个声音文件的头部,然后让它播放

好了,这些属性对我们理解这个精灵类是非常重要的

下面有四个重要的方法

一个是判断当前这个对象和另外一个对象是否发生碰撞

当然都是由我们这个精灵类创建的

如果发生了碰撞,我们要做相应的处理

好,下一个update,这是用来更新当前我这个对象它的位置

以实现在画板上移动

最后一个方法是draw,那就是把自己绘制在画板上,把它显示出来

好,下面我们看一看这三个方法它的核心算法

第一个,碰撞,collide,collide有一个参数是other_object

那就是自己和另外一个对象,判断是否发生了碰撞

怎么来判断是否发生碰撞呢

也就是说,如果发生这个碰撞,如果发生碰撞这个条件为真

是一个表达式,这个表达式我们怎么来构造呢

注意看一下,每一个对象都有一个position,就是它的位置

就是在画板上的坐标,X轴和Y轴

那么自己和另外一个对象都有它自己的中心点的位置

这两个点之间我们可以用初等的数学

几何里的数学概念就可以计算出两个点之间的距离

如果这两个点之间的距离小于这两个对象的半径之和

这表明它们发生了碰撞,就是这个条件成真了

真,那就返回true,如果没发生碰撞

意味着两个中心点的距离大于它的半径之和,它就返回false

好,把它转换成python代码实际上并不难,是吧

好,下面看看第二个方法update

这个方法是没有参数的

它用来做什么事情呢,就是用来更新自己的一些状态

就是当前这个对象的状态

主要要做的工作,第一个是,用速度来更新位置

我们看这个,有速度,有位置,用速度加到位置上去

从而实现这个对象的下次刷新,移动,下次刷新,移动

这是第一件事要做的

第二件事情是,年龄增长一岁

就是让这个age,每调用一次,我们update增加1

每调用一次,update增加1

下面还要判断,如果年龄小于寿命

那意味着这个对象还是有效的

继续要在我们的屏幕上显示,所以返回true

但如果年龄大于它的寿命呢,我们返回false

那上面调用它的程序就会根据返回的值

如果是false,可能就要把这个对象销毁掉

最后,我们看这个draw,这个方法呢,要做什么事情

首先要判断,是不是一个动画的精灵,一个动画的对象

那怎么去判断是不是动画呢,要看这里animated这个属性

如果是true,说明我现在要创建的这个对象是有动画效果的

仅仅有这个参数我们是实现不了动画的

还要看你给我提供的原始图片里有多少帧

如果这个帧,只有一帧我也是没法实现动画效果的

如果你给的平铺图片大于一帧,就是两帧、三帧、四帧 更多的帧

那我可以实现动画的效果

就是在不同的年龄阶段我调用不同的帧,从而实现动画效果

所以判断的条件,如果有动画并且你给我提供的帧数大于1

这时候就要计算我的原始图片它的中心点的位置

因为我要取不同图片来实现动画帧

怎么来计算呢,通常是用年龄和帧取模运算

就是除一下,取它的余数,这样它返回来的余数总是小于帧数的

是一个小于帧数的一个数字

比如说四帧,那我除出来是0、1、2、3这四个数字

对应的,我就可以乘上原始图像当中每一个图片的宽度

就可以取到下一个图片,取到下一个图片

这当然是水平平铺的情况

如果是垂直平铺,那我可能取的是image_size[1]

就是垂直位置上向下移动

然后用这个东西计算出来新的原始图片的中心点来绘制我们的图片

把它绘制到屏幕上去

如果没有动画效果,那直接绘制这个图片就可以了

好,这就是这个精灵类它主要的属性和

三个主要的方法我们给大家讲解的它核心算法

我相信通过大家仔细阅读我们的文档

还有我们提供的项目模板,通过思考

能够把这里我们用文字描述算法转变成相应的python程序代码

好,谢谢大家观看,咱们下次再见!

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周--小测验

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

精灵类笔记与讨论

也许你还感兴趣的课程:

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