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

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

编程技巧在线视频

编程技巧

下一节:精灵碰撞

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

编程技巧课程教案、知识点、字幕

在上个礼拜的学习中,我们已经接触到了

集合这个概念,也了解了一些集合的基本操作

在本周的项目,守卫家园这个游戏中,集合扮演这很重要的角色

我们今天课程的主要内容,是带领大家一起看一下

在这个游戏中集合的使用方法,下面开始今天的内容

好,我们来看一下我们的守卫家园这个游戏中的集合

在学习之前,我们先看一下之前我们学过的几种数据类型

首先第一个是列表,它是一个有序的序列,列表中的数据都是按照

你存储的顺序依次排列的,第二个呢它是字典

大家知道字典里面的数据是键和值配对存在的

就是说它是以键值对的形式,我们在查询的时候是通过

键的值可以找到它对应的那个值的数值

第三个是我们的元组,元组它跟列表是很像的,它也是一个有序的序列

但是他不支持变异,就说你不能通过下标的方式来修改元组里面的数据

这个是很好的保护了我们的数据,第四个就是我们今天要说的集合

那集合中的数据是无序的,而且集合中的元素是不能重复的

这是我们之前学的几种数据类型,那在我们守卫家园这个游戏中呢

就有四个对象是用集合来表示的,首先第一个是我们的所有敌人对象的集合

第二个呢是我们所有城堡对象的集合,第三个是我们所有箭对象的集合,

当然第四个呢是我们所有爆炸对象的集合,那我们今天主要是看一下

在这个游戏中,这几个集合因该在什么时候初始化,什么时候添加元素

什么时候删除元素,这张图呢是我们游戏在运行过程中的一个截图

当然这几个箭呢在我们游戏中箭不是这个样子的,我在这里画出来

是为了表示一下我们的战士是会发射箭的,那在游戏中呢

我们首先在游戏界面左侧这是我们的城堡集合,游戏一开始的时候

城堡集合就会出现在我们的游戏界面上,而且它的数量呢只有四个

其次呢是从我们右边进入游戏界面的敌人集合,那敌人它说是游戏刚开始没有

但是它是在我们的游戏集合中按照一定的时间来产生的,就是我们有一个

定时器来控制它的产生,这是敌人的集合,然后第三个呢就是我们建的集合

每次我们鼠标点击的时候它就会发射一个箭去射击敌人,箭呢也组成了一个集合

其次呢还有就是一个爆炸集合,就当我们的箭射中敌人的时候它会发生爆炸

其次呢就是当它的敌人越过的边界,撞上我们城堡的时候,以后发生爆炸

这是四个集合,下面来挨个来看一下,首先第一个城堡集合

刚才我们已经知道我们游戏刚开始城堡呢就会出现在游戏的左侧

而且它的数目是四个,所以说我们在程序初始化函数中呢就要开始给它

创建四个城堡了,也就是说我们这个集合中的元素一次性通过for循环

就要必须给它创建好,那在游戏运行的过程之中是不需要给它添加元素了

因为只要我们的城堡没有被销毁,这个城堡集合就有四个元素,它的数目就是四

不需要在额外添加,那什么时候给它删除呢,就是说敌人越过这个边界

和我们的城堡撞到了,撞上之后呢城堡就要消失,那么在这个集合中的元素呢

就要减小一个,这是我们的城堡集合,第二个我们看一下敌人的集合

刚才我们也知道敌人集合呢它是从游戏界面的右侧出现的,而且它是定时出现的

那它在游戏刚开始的时候是没有敌人出现,敌人的集合在程序的初始化函数中呢

就把它初始化空的集合就可以了,那是在我们在定时器的触发事件中

我们就要来产生敌人,按照一定的时间间隔,当然我们的游戏中是1秒

产生一个敌人,这个集合中的元素删除,就是在两种情况下

第一个就是越过了边界,被我战士的箭给射中了,所以这个时候

就要从集合中删除元素,第三个是我们箭的集合,当然游戏刚开始

只要你不点击鼠标的话,战士是不会发射箭的,所以在初始化

函数中呢,这个集合就把它初始化一个空的集合就可以了

那它的添加元素当然就是在我们鼠标的点击事件中

当然在这个点击事件中不是说你直接在这个地方就可以直接添加

而是它调用的是我们战士的shoot方法,shoot方法中呢是创建一个精灵对象

来添加我们的一个箭,这时箭的集合,最后删除元素当然是射中敌人

之后就要把箭给删除掉了,这是第三个集合,第四个是爆炸集合

同样在初始化函数中,我们把它初始化为空的集合,那什么时候添加

大家想,每当碰撞发生的时候,就是说箭射到了敌人,或者敌人撞到了

城堡,此时呢游戏界面上就会有一个爆炸的现象发生

那我们在这个时候呢就会通过我们的精灵对象来创建一个爆炸对象

添加到这个爆炸集合中去,同样它的删除元素,首先呢

要保证我们的游戏任然在进行,就是说游戏没有结束你也没有取得胜利

然后呢你就要调用每个精灵的更新方法就是update方法了,当这个方法的值

返回真的时候,我们会删除这个集合中的元素,这是我们爆炸对象

那在我们程序中看一下,看一下,这是我们最后一个游戏的模板

这是我们的初始化函数,就是说在这个初始化函数中我们要

对四个集合进行初始化,那当然了这个里面要注意的一点

就是说我们的城堡集合在这个地方,就要把它创建好

四个元素都要添加,其他几个元素都是一个空的集合,刚才也说到

我们的敌人集合是在定时器触发事件中,我们的定时器,你看

是1秒中产生一次,这是它的触发事件,在这个事件中我们就要来

产生敌人就1秒钟来产生一个敌人,这是用来产生敌人的

那敌人什么时候销毁呢,当然就是在我们产生碰撞的函数里面了

当敌人越过了边界或者说当箭射中了敌人,敌人就要消失了

这是敌人的消失,敌人集合元素的删除,那我们知道

当我们鼠标在点击的时候就会,就是我们鼠标点击事件

就要发射箭,战士就要发射箭了,那它这是时候调用的是

战士的shoot方法,这是我们的战士类,在这个类里面有一个

shoot方法,我们在这个方法里面呢就是要给它箭的集合中

添加元素,这是第三个集合。当然还有一个就是爆炸集合

爆炸集合呢它那个添加集合也是在这个里面,也就是说

当发生碰撞的时候我们就会给爆炸这个集合中添加一个元素

当然了我们的draw函数中,我们就会一次把东西给它绘制出来

这是我们大概给大家讲一下这四个元素的创建,添加元素和删除

好我们继续,那我们最后给大家介绍怎么样去删除和添加元素

我们在往集合中添加元素的方法当然是add方法,这个没有什么给大家讲的

重点就是想说下删除集合的元素有两个方法

一个呢是discard方法,还有一个是remove方法

这两个方法都可以删除集合中的元素,但是它们是有点不同啊

不同点在那呢,同样也给大家讲一下,就是在这有一个例子

大家看,这个地方呢我写了一个简单的集合就是n,然后里面有

3个元素就是123,那我先把个注释掉,discard我先运行下

我的意思呢是删除1这个元素,大家看删除完了

这个集合中元素变成了2和3说明它删除成功了,那我在来删除一个

比如说删除一个8在运行,程序没有报错集合仍然是123

说明我们discard在删除集合中不存在的元素的时候

它是不会报错的也不会进行删除的操作这是discard

我们在看一下我们的remove方法买同样我们删除1看可不可以

好1确定删除了,跟discard的作用是这个作用是一样的

我们同样也删除8看一下,在运行大家发现在删除集合不存在

的元素的时候,它会给你报一个错误KeyError 8错了

那你这个集合中不存在这个元素,那大家在使用discard和

remove来删除集合中的元素的时候你要注意区分一下这个两点

在不同的应用场合使用不同的方法好那今天的课就个大家上到这里

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

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

编程技巧笔记与讨论

也许你还感兴趣的课程:

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