我们在训练场遇见了,十分刻苦并且懂礼貌的雷电猴,我们决定帮他练成瞬间移动的绝技。今天又会遇到什么样的挑战呢?我们拭目以待。
课前回顾
通过上个训练任务,聪明的训练师应该可以掌握如下内容了。
- 使用外观盒子里的“询问,并等待”积木,可以提示玩家,并且让玩家输入内容。
- 玩家输入的内容会保存在外观盒子中,“获得 答复”这个变量积木里。
- 运算盒子里的“放在一起”积木,可以让我们通过填空的方式,拼接句子。
- 使用外观盒子里的“新建对话框”积木,可以用来创建一个对话框,并把需要提示玩家的内容展示出来。
课前准备
1、点击下方按钮,下载“神行雷电猴2.bcm”源码文件。
2、在谷歌浏览器地址栏输入 https://vipcode.fun/kitten编辑器 网址进入源码编辑器,或者直接点击前面的链接进入。
3、导入“神行雷电猴2.bcm”源码文件。
课程目标
舞台上有魔法师和雷电猴两个角色,点击开始按钮。程序开始,魔法师消失了,同时播放背景音乐还有雷电猴通过对话框向我们打招呼,并询问我们的名字,我们输入名字后,雷电猴继续跟我们问好,并说出我们的名字。过了一会儿,魔法师出现了。并通过对话框给我们说“快来我这里,我有一本瞬移秘籍,可以让你一瞬间去到任何地方”。然后魔法师就每隔一会儿,就瞬间移动到舞台的随机位置。当我们点击魔法师时,魔法师还会说,我的坐标是X=一串数字,Y=一窜数字。
我们来用流程图,规划一下编程任务,用来实现程序效果。
训练师按照这个流程图,把积木拼接完成,应该不成问题。不过这里出现了一个新知识
——-“坐标”
我们来举个例子,“小明”有个非常要好的朋友,他们两在一个班,他们高矮胖瘦,都差不多,而且又是同桌,最关键的是,那个朋友的的名字也叫“晓明”,因为名字同音,所以经常叫错。有一天,数学老师上课提问,想让“小明”而不是“晓明”来回答,请你帮助数学老师想个办法,叫到“小明”。
聪明的训练师,估计会想到很多办法,不过这里我来提供一个办法,不知道和你想的是不是一样。我们可以通过座位排序来叫到小明,比如让第三小组,第二排的“小明”来回答问题。这样就不会叫到另外一个“晓明”,从而避免误会了。这种通过第几组,第几排的方式可以快速而准确的确定某个位置。在实际生活中,有非常广泛的运用。比如我们的Kitten舞台。要确定角色在舞台上的某个位置就可以通过这种方式。请看下图。
这个法师现在处于舞台的什么位置呢?训练师你能精确的描述一下吗?目前的训练师想必会说中间偏右一点。但是中间偏右也是一个大范围,到底在哪里呢?如果可以给他安排一个座位那就方便了。
按照上图所示,我们就可以快速确定法师在第一组,第三排的位置。训练师我们来总结一下这种定位方式。组别就是横向方向,排数就是纵向方向,只要横向和纵向有交汇点,我们就可以快速确定某个位置了,比如第一组,第六排;第三组,第五排;第五组,第六排等等。这种,通过横向和纵向确定位置的方式,我们就叫做坐标定位。其中横向第几组的数值,纵向第几排的数值我们就称之为坐标值。坐标值就是目标的具体位置,比如法师所在位置(第一组,第四排)。不过Kitten不是按照数座位的方式来确定坐标值的。而是用一种叫做直角坐标系的东西来确定位置的。如下图
在直角坐标系中,横向我们就不再叫做组了,叫做X方向。纵向我们就不再叫做排了,而叫做Y方向,所以法师所在位置,在直角坐标系中我们可以X=1,Y=3这个位置。那么我们怎么确定下图中,法师所在的位置呢?
还记的我们之前说的相反数吗?只要在一个数字前加上减号也就是负号,就表示相反。直角坐标系,也运用了相反数的概念,这样就可以把坐标铺满整个舞台了。我们点击Kitten舞台区下方的网格按钮,如下左图,就会打开坐标网格,如下右图。
横向方向上以0为界,向右有100,200,300,那么向左就是相反,就有-100,-200,-300。纵向方向上,以0为界,向上有100,200,300,400。向下就是相反,就有-100,-200,-300,-400。刚才的魔法师,就在X=-200,Y=-300的位置上。
好了,坐标的概念,训练师想必已经知道了,那在程序运行过程中,如何用积木获取坐标信息呢?还记得我们可以从什么积木盒子里获取程序运行过程中的各种信息吗?就是侦测盒子。我们可以用这个盒子中“角色的”积木来获取角色各种不同的信息,如下图。
这个积木左侧的下拉箭头用来选择,需要获取哪个角色的信息。右边的下拉箭头用来选择获取角色的什么信息。比如这里因为我们当前是给魔法师编程,所以左边选自己,就可以了,我们要获取魔法师的X坐标信息,所有右边就选择X坐标。如果我们要获取魔法师的Y坐标信息,如下图操作就好了。
再配合我们上个训练任务中的“放在一起”积木就可以拼接一句话,如下图
我们可以通过对话框的形式,让魔法师说出这句话
关键的程序代码已经完成。请按照流程图,编程吧!
样例程序
课后回顾
1、加深“新建对话框”积木的使用。
2、加深“放到一起”积木的使用。
3、可以通过坐标快速确定位置。
作品代码文件下载
点击下方按钮,可以下载老师完成的代码,导入之后,可以对比一下,咱们互相进步。编程没有绝对的标准答案,只有更加优化的方案!
加油哦,训练师!
举一反三
请思考,坐标除了可以用来表示具体位置以外,还可以用来表示什么?