当前课程知识点:Python 交互式程序设计导论 >  第5周 >  B 课程视频(字典和图片) >  Video

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

Video在线视频

Video

下一节:Video

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

Video课程教案、知识点、字幕

Hi 大家好,欢迎大家回到python课堂

大家已经有了一些列表的知识

今天,我将给大家讲解,如何使用列表来控制画布上的多个内容和对象

好,下面开始我们今天的内容

我们仍然使用我们上节课的例子,我们先来回顾一下

我们先点击运行

我们的鼠标改变位置点击 我们的小球也会改变

当鼠标点击到小球内部,小球变成绿色

这个程序没有问题

好,现在我们的想法是

我们希望在画布上,产生非常多的小球而不是只有一个

我们来看一下怎么去实现,那么在鼠标点击响应函数当中

我们对小球的中心位置有一个改变

那么注意我们的ball_center,也就是我们的中心位置

每次只能接收一个坐标,那么我想的是,如何在画布上,

绘制多个,那就是说我要能够接收多个小球的中心坐标

那么这时候我们要在全局变量声明里,进行一个细微的改动

也就是,我们把ball_center那,改成一个列表,ball_list库列表

那么这个里面是不包含任何数据的

那么在click事件里面,我们说每点击一次,我就把得到的这个坐标

添加到ball_list里面,那么这样的话我的ball_list里面就有很多小球的 中心坐标,对于列表来说,我们有一个方法

ball_list.append就是将得到的这个坐标,添加到我的这个列表里

好,因为pos呢是一个二元组,为了我使用起来方便

我把它强制类型转换 好,那么这样做了以后呢

也就说我的ball_list里面不只有一个中心坐标

也许会有多个小球的中心坐标,好,那么在绘制过程中

因为ball_list可能有多个,那么我们就要对这个ball_list进行逐一访问,

那么对列表的逐一访问我们可以用for ball in ball_list,

注意这个地方我们说的ball呢

你可以写成,只有一个的,只有一个字母b也可以,那么我们

只是说这个地方是小球,所以我们就写了英文单词ball

好啦,有一个代码缩进,我们对这个ball呢,进行绘制

进行绘制,其它地方都没有变化,好,我们来运行下

很容易,我们就得到了我们想要的结果,在屏幕上绘制很多的小球

好,这是我们第一步的改造,那么第二步的改造,我希望的是

当我点击到,屏幕上已有的小球的时候,那么已有的小球,应该是变成绿色

而不是让我产生新的小球,好,我们来看一下怎么去实现

好,那么在click事件中,当我们每点击一次,它会增加一个pos,

增加一个坐标,好,那么在这呢,我们肯定是要经行一个判断

for ball in ball_list,好,那么我们说for ball in ball_list里面也许

我们改变的这个小球不是只有一个,可能会有多个,那么这里呢,小球可能

这里呢,这个ball可能会带的是双重属性的这种一个列表, 什么呢,

第一是包含它的中心点坐标,第二呢它还会要包含一个颜色,如果不在

这个画布上,呢我就应该产生一个新的小球的中心坐标和它的颜色,

如果在里面,那么我就应该,把它的颜色变成绿色,好,根据我们这个想法

那么下面我们说,判断如果distance,什么呢,

这个鼠标点击下去的这个坐标和我们已有的这个ball_list里面,注意,

我们这个地方,

我们这个地方假设的是这个ball呢,是具有的是,

这种格式,

ball_pos and ball_color这种结构

也就是它,对于ball来说,它里面的第一元素是一个坐标,而第二元素呢是它的颜色

如果小球的半径,小于BALL_RADIUS,

那么,我希望的是,它的第二元素,也就是ball_color

等于什么呢,

是绿色的,

那么我每点击一次,它也只能判断一次,那么这个地方到底是 执行了还是没有执行,

我得给它一个标志,所以在这个地方,我们给一个changded等于Flase

如果它改变了,就是如果我们这个地方改变了, 我们把changed,这个地方拼错了

changed等于True,好,

下面

如果要是没有改变呢,没有改变是不是说明我们的这个鼠标点击下去 是不是不在我们的已有列表当中,

所以我们说,如果,没有改变,那我们希望的是把这个小球,

这个坐标,追加到我们的ball_list里面ball_list.append,

注意,我们追加的是这样一个,这样一个列表,什么呢,

首先是我们鼠标点击下去的坐标,然后是它的颜色,

首先是她的坐标,然后是它的颜色,

好,那么,这里完成判断和添加以后,那么就要在绘制里面去了 for ball in ball_list,

然后我们注意,这个既然是坐标的话我们就应该是0, 这里既然是颜色的话,我们就应该是1,

因为我们的ball_list,因为我们的ball_list是,它包含的元素是类似于这样的,

好,我们看对不对,

好,我们来运行下,

产生小圆没问题,

好,嗯,没有问题

(鼠标的点击声音),

也没有问题,

(鼠标的点击声音),

很好,那么这是我们第二个改进,

我们的第三个改进是,

当我的鼠标点击屏幕的时候,那么会产生很多小球, 当我遇到小球的内部的时候,已有小球内部的时候,

我不在改变颜色,而是把这个小球呢从屏幕上删除掉,

那么我们看看这种又怎么去实现,好,那么在我们的这个click事件里面,

也就是说,我们要对这已有的这个ball_list进行删除操作, 我们不能对它,边访问,边删除,那么这样的话,会引起错误的结果,

那么,在代码当中,我们首先建一个准备要删除的这样的一个空列表, 好,怎么去做呢,好,我们把这个去掉,

我们先去遍历这个列表,小球列表,for ball in ball_list,这个删掉,

如果,如果我们鼠标点击的位置和这个小球的位置,小于小球的半径, 我们的操作就是,

我们将这个,小球,追加到我们的这个remove列表当中,

我们将这个小球追加到remove列表当中, 好,下面就是对这个remove进行判断,

如果,用列表的长度去判断,我们用len去表示,

如果列表长度等于0说明没有小球被删除,那么这个时候,我们就把这个,

添加到我们的列表当中,

也就是说当我们这个remove等于空,没有元素的时候, 那也就是我得到的这个点坐标是一个新的小球, 我们把它添加到这个ball_list里面,

否则,怎么办呢,也就说,长度如果等于0,那就是说没有被删除的小球, 如果要长度不等于0,那就应该有删除的小球,那么获取它有多个, 我们就要进行一个逐一访问,

remove,那么这个时候,我们知道的其实是,小球列表当中的这个元素, 那我们怎样去删除它呢,

对列表操作是这样的,ball_list我们知道这个地方, 我们是需要知道该小球所在的索引,

那么怎么样获得小球所在的索引呢,我们可以用ball_list.index,然后是ball,

这样的话,我们就可以把这个小球,从ball_list里面删除了,

好啦,最后,我们在绘制,绘制函数当中,我们这个地方就不需要0了,

我们这个地方就直接使用我们的ball_color就可以了,

因为我们这个地方定义的ball_color等于red,好,我们来运行一下,

我们点一下已有的小球,看看有没有按照我们设想的这样去完成,

嗯,很好,

非常的棒,

大家是不是感觉到,其实编程是一件非常快乐的事情,

好这就是我们今天的内容,我们下次课再见。

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

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

Video笔记与讨论

也许你还感兴趣的课程:

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