当前课程知识点:Python 交互式程序设计导论 >  第4周 >  A 课程视频(列表) >  键盘输入

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

键盘输入在线视频

键盘输入

下一节:列表及变化可视化跟踪执行

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

键盘输入课程教案、知识点、字幕

Hi,大家好,欢迎回到Python课堂!

今天我将给大家介绍键盘事件

大家将看到如何使用键盘来改变屏幕上的显示内容。

显然,这是我们设计出好玩游戏的第一步。

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

好,下面我们来看一下我们这段程序,我们第一个键盘响应程序。

我们先不看他怎么去完成的功能

我们先来看一看运行以后它实现了哪些功能。

好,当我们按下键盘上的字符a

那么在我们的画布上显示A

在我们的状态区,会显示Down a,也就是我们按下a

我们松开,那么在我们的状态区显的是Up a,也就是松开了a

那么在我们的画布上是不显示任何字符的。

好,我们在按一下b

在我们的画布上显示的B

那么在我们的状态区显示的是Down b,也就是按下b。

我们松开,那么这时候显示的是Up b,也就是松开b。

画布上不显示任何字符。

我们在多试几个键,

按下c ,松开c; 按下d ,松开d; 按下e ,松开e。

好,那我们看一下,具体代码实现是怎么完成的。

那么,在这里呢,我们声明了一个全局变量,

current key,也就是当前键值,

那我们初始化为空。

不显示任何字符

那么下面呢我们定义了三个事件函数,

第一个也就是键盘按下函数

当我们按下键盘的时候

我们传入了以个参数,也就是我们传入的是我们按下的这个键key。

那我们希望的是把我们按下的这个键呢

传递给我们的current key,

也就是我们的这个全局变量

那么这时候我们要对它进行一个全局变量声明 global current key

好,我只需要把按下的这个键

传递给我的这个current key 就可以了

那么有什么用呢

那么我后面定义的一个draw函数里面会去调用这个

就会去会去在画布里面绘制这个current key

它以每秒6每秒钟60次的频率去绘制这个current key。

那么在这里呢,我们使用一个chr函数

也就是在Python当中,它将按下的键key值呢用chr返回我们键盘上所代表的这个字符。

当我松开键的时候呢

我们也定义了一个函数,就是放开键盘那个事件函数

当我一松开,好啦,我们再次对这个current key 进行全局变量声明,也就是说我一松开不进行任何绘制。

那我们把它current key 再次赋值为空。

好,那么这个draw 函数呢,就是我们每秒钟调用60次,

在这个30 70[77] 的这个位置去绘制我们的current key。

好,它的字体大小是40,它的颜色是红色

这是我们创建的一个框架

我们称之为键盘响应程序

那么它的窗口大小是100 100,然后我们注册者三个事件响应函数。

最后我们去启动

好,那我们再次运行一下,看看它到底是怎么样个机制。

当我按下键盘上的一个字符的时候,

比如说A,那么程序会询问我,说有没有这样一个函数去响应我按下键盘的这个事件呢

我们说有

也就是我们的key down 事件

它把我们按下的这个键A,传递给我们的current key,然后通过draw函数也就是我们的绘制函数将它显示在画布上

以每秒60次的这种频率去更新这个画布,去显示。

好,当我松开键盘A的时候,

注意在我们的状态区,当我松开键盘A的时候,程序又会问我说,有没有这样一个函数去响应我这个事件呢

松开键盘事件,说有

key up函数,那么我们通过设置current key 等于空,那么draw函数就发现,

我们去调用这个current key 的时候,那么它是空的,没有任何字符。

那么画布更新就显示没有字符。

好,按下B,那么这时候键盘响应说有这样一个字符B被按下了

然后传递给current key,就是当前的键值,好我们在画布上去绘制,不断的去更新这个画布

然后这个地方,状态区显示的是按下B

好我们松开B,Up b ,空。

C ,按下C,绘制C,松开,那么这是Up c。

D ,按下D,松开。那么这就是我们的一个键盘响应事件。

我们通过key down 和 key up 这两个事件函数去响应我们的键盘。

好,下面我们看我们的第二个例子。

好,我们来看一个更有趣的例子。

我们先来运行一下我们的程序

在我们的画布中间,会有一个圆

我们通过键盘上的上下左右

来改变小球的半径大小和它的左右位置。

当我按下向上键的时候,我的小球半径会增加,

我再按下,又增加

即使我始终按着不放

那么小球的半径也只增加一下

为了让小球的半径不断增加

我只有.......

大家可能已经听到了我拼命敲击键盘的声音

那我也可以通过按向下,减小小球的半径

点一次,只执行一次

我用向左按钮

改变小球的左右位置

点一下,改变一下

好,下面我来看一下,代码的具体实现。

好,那么在这里呢,我们定义了画布的宽和高,

都为400像素

然后定义小球的中心坐标,也就是他的原点,

是画布的正中间

小球的半径100像素

我们定义了一个key down 事件响应函数

也就是说键盘按下的响应函数

那么这个里面呢因为我们要改变小球的半径

我们定义的小球半径是一个全局变量

所以我们要在这里进行一个申明

那么在这里定义了一个delta

就是它的一个改变量

它的单位是一个像素

好,下面恩这里有四行判断

那么第一行呢是

这四行判断我们都适用simpleguitk的.key map将我们的字符串

up,down,left,right。那么对应到我们键盘的上下左右。

也就是我按下上的时候

那么当我按下上的时候他所做的就是使我的小球半径增加2个像素

那么上面这句代码呢主要是检测我的小球的位置

也就是说只要我的小球没有出界

我的小球半径就可以增加

当我按下向下这个按钮的时候

我的小球半径就去减少

只要我的小球半径大于0,我就去减少

那么当我按下向左按钮的时候

那么我的小球的水平位置,也就是我的x分量,将向左移,也就是要减少,

只要我的小球没有出界

我就一直去减少

就向...向左移,

那么当我按下向右按钮的时候

我的小球的水平分量

也就是我的

位置呢一直向右移,也就是加一个delta分量

那么他的条件是只要我的小球没有出右边的边界,就可以。

那么draw函数很简单,

我们就用了一个canvas . draw circle 就是画圆的这样一个语句。

那么第一个参数,就是小圆的圆心坐标,

那么第二个参数,是小球的半径

第三个呢是半径的宽度,??? 小球的半径是第二个参数,第三个参数是,我们画出来这个圆的圆周的这个线宽。

然后第四,第四个参数呢是边界的颜色,我们设置成白色。

那么第五个参数是圆的内部填充色,我们设置成红色。

大家注意,在这里呢我们只有一个key down事件,key down 函数,

那么没有key up 这样一个响应函数

也就是说,当我们松开按键的时候,

它不做任何操作,

那么在key down里也只是说我按下键一次或者始终按着,

它也只执行一次。

然后,我们创建框架,

注册了两个事件,启动框架。

好,我们在次看一下执行效果。

好,那我按下向上,

小球半径增加

按下向下

小球半径减少

即使我始终按着向下,小球半径也只增加一次。

好,我按下向左,小球向左移动一次,

按下向右,小球向右移动一次,

即使我始终按着向左,它也只移动一次,

为了是让小球是始终向左移动

我拼命的敲击向左按钮

好,为了让小球的半径不断增加,

我拼命的点击向上按钮,

大家发现,即使我始终点击向上按钮,或者不断的点击向上按钮,我的小球半径也不会增加。

因为当时我在程序里有一个判断,

对小球的半径。只要他不出界,它的小球半径才会增加。

如果一旦出界,就停止操作。

那么我举得这两个例子,

那么在不同的操作系统,就是在windows和mac系统下,那么他的执行效果可能会有所不一样,

希望大家对键盘上的键,更多的去试验,

那么这两个例子,

主要采用的就是按下键,产生一个事件,

松开键,产生另一个事件。

那么这两个机制,

足以让我们用键盘,可以完成

几乎所有的事情。

那么希望大家对这两个例子,回去,仔细的琢磨一下。

这对我们将来编出非常有趣的项目是非常有帮助的。

好,那我们的课程就到这儿,我们下次再见。

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

-本周项目:守卫家园

--游戏说明

--程序说明

--编程步骤

--评分标准

--项目模板

键盘输入笔记与讨论

也许你还感兴趣的课程:

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