最新消息:

Scratch少儿编程入门 第十二讲(完结篇) 侦测指令集与运算符指令集

Scratch 少儿编程 9355浏览 0评论
Scratch少儿编程入门

友情提示:视频教程观看时请手动设置清晰度。

第十二讲 侦测指令集与运算符指令集

 

本讲中,我们将讲解Scratch的侦测指令集与运算符指令集,并完成两个小程序。程序运行效果请看视频。

 

第一个程序;

第二个程序;

 

 

 

一、侦测指令集

Scratch中提供了丰富的用于侦测角色或系统状态的指令,这部分指令在脚本的侦测指令集中可以找到。侦测的意思是,系统会对一些特定的情况时时监控,看他是否满足了指定的条件,这种功能在我们的复杂编程中会经常用到。

Scratch少儿编程入门 第十二讲(完结篇)

 

1、侦测角色碰到或相距距离的指令

Scratch少儿编程入门 第十二讲(完结篇)

 

这三个指令用于侦测角色是否碰到其他指定的角色,鼠标指针、或者边缘,都可以成为监测的对象。最后一个指令用于监测距离。这类指令如果条件成立则返回“真的”这个数值,指令需要嵌套在其他用于判断的指令中。

2、询问与回答指令

Scratch少儿编程入门 第十二讲(完结篇)

 

这两个指令在上一节中使用过,用于向用户询问问题并接受用户输入并记录输入的信息。

3、侦测键盘及鼠标状态的指令

Scratch少儿编程入门 第十二讲(完结篇)

 

第一个指令用于侦测键盘上指定的键是否被按下,第二个指令用于侦测鼠标是否被按下,三四指令用于侦测当前鼠标的xy坐标。

这几个指令也是需要嵌套在别的指令中使用。

4、侦测角色信息

Scratch少儿编程入门 第十二讲(完结篇)

 

通过这条指令,可以侦测到各个角色的丰富的当前信息,当需要根据不同信息做判断时,这个指令会起到非常大的作用。

 

5、其他侦测指令

Scratch还提供了诸如侦测摄像头、声音响度、计时器、系统时间等一系列其他侦测指令。因为应用较少,这里就不一一做介绍了。

 

二、运算符指令集

Scratch少儿编程入门 第十二讲(完结篇)

 

在运算符指令集中,Scratch提供了很多用于数值计算或文字操作的指令。

1、四则运算符及取余数、四舍五入指令

Scratch少儿编程入门 第十二讲(完结篇)

 

这几个指令分别实现加减乘除、取余数、四舍五入的操作。这些指令中的空白处,可以手工输入数字,也可以放入变量甚至是其他运算符。

需要特殊说明的是,运算符的优先级在Scratch中非常直观,将加法操作拖入乘法操作中,如图所示

Scratch少儿编程入门 第十二讲(完结篇)

 

这个运算系统自动识别为2*3+4)而不是2*3+4,因为这里3+4在里层,我们是将他拖入到乘法运算符中的,如果希望实现2*3+4,则需要将乘法运算符拖入加法运算符中。记住,谁在里面就先算谁,请小朋友重点体会这里的操作。

这几个运算得出的结果是一个数字,需要将运算符放入其他执行指令中才可以。

2、大于小于与等于运算

Scratch少儿编程入门 第十二讲(完结篇)

 

这三个运算符用于逻辑判断,分别比较两个数是否满足大于、等于、小于的关系,如果满足结果就为“真的”,否则结果为“假的”。这三个指令需要放入进行判断的语句中组合使用。

3、逻辑“与”“或”“非”指令

 

这三个指令用于实现对逻辑的与或非进行判断。

第一个指令是逻辑“与”,只有当前后两个指令都为真时,最终结果才为真,否则只要有一个假的,最终结果都是假的。逻辑与是并且的关系,设想一下学校四年级男生这个逻辑,就是必须同时满足四年级和男生这两个条件才能说他是四年级男生,否则就不可以。

第二个指令是逻辑“或”,他表示只要前后两个条件有一个满足,最终结果就是真的,只有当两个条件都不满足时,结果才是假的。这个逻辑大家可以做如下设想,老师安排大家做值日,或者去扫地,或者去擦黑板,只要做一样就算是参加劳动了,然后用这个来判断谁参加了劳动。

第三个指令是逻辑“非”,逻辑非表示否定,当“非”里面的条件是真的时最终结果就是假的,当条件是假的,最终结果就是真的,这个指令相当于把判断结果真假颠倒。

4、文字操作指令

Scratch少儿编程入门 第十二讲(完结篇)

 

这三个指令可以分别用来连接两端文字、找出一段文字中的第几个字以及计算一段文字的长度。

 

5、随机数生成指令

 

Scratch提供了随机数的生成指令,随机数的意思就是在指定的范围内,可以是任意的数字,这里的110就是用来表示范围的,通过这条指令可以产生一个数,这个数可能是123……10中的任意一个。

随机数生成指令经常用于游戏的制作当中,比如我们希望某个角色任意移动而不去做过多的限制,或者如扔骰子这种希望得到任意一个数的情况。

6、复杂运算指令

Scratch少儿编程入门 第十二讲(完结篇)

 

这个指令可以对数字进行各种复杂的函数计算,对于小学阶段的小朋友来说,可能这些运算大家还无法理解,因此不做过多要求。

 

最后总结一句,请注意本讲讲解的指令的外形,我们知道用于顺序执行的语句从外型上看,有凸起和凹槽,而这节的绝大多数指令都没有,这说明这些指令都是需要内嵌到别的指令中使用的。这类指令外形上看,左右两边可能是“弧”或“尖”的,有弧的说明这种指令执行的结果是一个数值或文字,而尖的表示它是用于判断对错的,他的执行结果是“真”或者“假”

 

三、骑士救公主的小程序

1、剧本介绍

下面我们制作一个程序,剧本如下:

三个角色,分别为骑士,公主与狮子,背景为古堡。公主被困在古堡,路上有狮子挡路,骑士去救公主。

首先骑士走向公主,当与狮子的距离是100的时候,骑士说“糟糕,有一只狮子在路上,好可怕”,然后等狮子说完“有我在这里,你别想过去!”,骑士退回到初始位置。

骑士回到初始位置后思考“不行,我要救公主,我要打败这只可恶的狮子”,然后继续面向公主前进,这次当骑士碰到狮子时,我们需要做一个小的特效来表示骑士正在战斗。

当战斗结束,骑士说“胜利了!”,然后狮子切换到一个被打败的造型说“我还是输了!”。并逐渐虚化消失。

骑士等狮子完全消失后继续前进,当碰到公主后骑士说“公主我来救你了”,公主说,“谢谢你,我勇敢的骑士”

2、导入角色和背景

新建程序,导入背景“castle3”,删除默认的小猫角色,导入“knight”并命名为骑士

Scratch少儿编程入门 第十二讲(完结篇)

 

请注意这里学习一个新的技巧,在角色面板的旋转模式中,可以看到红色标注的三个按钮,分别表示任意旋转,左右旋转和不旋转,在之前的程序中我们都是通过旋转指令在初始时对角色的旋转模式进行设定的,这次我们通过角色面板进行设置。程序中的所有程序都点中中间的左右旋转。

其次导入“Princess”并命名为公主,导入“Lion”并命名为狮子。

调整各个角色的大小,分别添加初始化指令,让骑士面向右边,狮子和公主面向左侧。

 

记录下此时骑士的初始坐标,因为需要让骑士返回一次。

3、完成骑士靠近狮子并返回的指令

让骑士面向公主,重复执行让骑士移动并侦测骑士到狮子的距离,当距离小于100时退出循环。骑士说话,广播消息“见到狮子快跑”(广播的目的是为了让狮子接收到消息后说话,这里采用了广播并等待指令以便等狮子说话后继续骑士后面的动作)。骑士转身跑,代码如下。

Scratch少儿编程入门 第十二讲(完结篇)

 

4、骑士重新出发并与战胜狮子

Scratch少儿编程入门 第十二讲(完结篇)

 

这段代码实现骑士思考,重新出发,随时监测是否碰到狮子,碰到后战斗。广播开始战斗是为了通知显示战斗特效,广播消灭狮子是为了让狮子说话后消失。

5、骑士继续前进直到结束

Scratch少儿编程入门 第十二讲(完结篇)

 

这段代码相对比较好理解,其中广播遇见公主是为了通知公主角色说话。此时把这几段骑士的代码按顺序组合起来,点击开始按钮查看骑士已经可以按计划执行指令了。

Scratch少儿编程入门 第十二讲(完结篇)

 

6编写狮子指令

在狮子角色中有两个造型,我们将第一个造型命名为被打败,第二个命名为吃人,

Scratch少儿编程入门 第十二讲(完结篇)

 

编写狮子指令如下:

Scratch少儿编程入门 第十二讲(完结篇)

 

7、编写公主代码如下

Scratch少儿编程入门 第十二讲(完结篇)

 

到这里点击开始运行按钮,程序已经可以按照设想跑起来了,唯一差的一项是战斗特效还需要制作,用来响应“开始战斗”的广播消息。

8、战斗特效的制作

首先说明,在实际的游戏开发中,战斗特效往往需要重新绘制新的图片用来播放,这里为了简便,我们先制作一个有点傻的特效用来演示编程的过程。

点击新建角色的第二个按钮“绘制新角色”

Scratch少儿编程入门 第十二讲(完结篇)

 

使用绘图工具画一个圆(按住shift可以画正圆)并填充红色。使用缩放工具修改圆的大小并拖动使圆刚刚覆盖住狮子

Scratch少儿编程入门 第十二讲(完结篇)

 

在角色圆中编写如下代码,这段代码首先隐藏这个圆,当接收到开始战斗的消息后让圆显示出来,重复一组循环,让圆的亮度逐渐增加,表示正在战斗,当特效完成后将圆重新隐藏,现在这个程序已经编写完毕了。

Scratch少儿编程入门 第十二讲(完结篇)

 

 

 有没有觉得特效很酷呢?好吧,老师承认这个特效太傻了,我这里只是为了告诉你们其实角色也是可以通过画画的方式来自己建立的。下面正经教你们做一个特效。

 

首先将最丑陋的特效角色删除,就是那个咱们刚刚画的圆。然后选择狮子角色,并编写如下指令。

Scratch少儿编程入门 第十二讲(完结篇)

 

这段指令的特效是通过亮度来实现的,假设狮子不断的循环高亮显示,表示正在受到攻击(这个特效在很多实际的游戏中都是如此实现的)。指令完成5次循环,每次循环都是开始时设定角色的亮度为40,并通过一个三次的小循环逐渐将亮度提升到70(这里的数值小朋友也可以自己调整,总之就是让狮子亮起来表示正在攻击)。到此我们骑士救公主的小程序就正式完成了。

 

四、判断是否是质数的程序(未学过质数概念,特别是没学过乘除法的小朋友可以先不看这个程序)

1、质数知识。

高年级的小同学可以已经学习过,当一个数字除了1和它本身以外不再有其他因数,那么这个数称为质数。

2、程序制作。

这个程序我们采用循环的思想,对任意输入的数字n做若干次循环,比较从2n-1的所有数字,如果输入的数字可以被其中的一个整除,那么就说明在1n之间有其他的因数。输入的就不是质数,否则如果全部都不能整除的话,那么说明输入的是质数。

新建一个程序,这里我们用到要求输入和接收输入的这组指令

Scratch少儿编程入门 第十二讲(完结篇)

 

当执行询问指令后,回答自动记录下用户的输入数据n

此时开始执行循环,因为我们需要判断从2n-1,一共n-2次(因为1不用判断,n不用判断),因此这里做n-2的循环,为了记录循环的次数,我们还需要新建一个变量叫做除数。

Scratch少儿编程入门 第十二讲(完结篇)

 

编写如下代码

Scratch少儿编程入门 第十二讲(完结篇)

 

我们先将除数初始化为2,表示我们从2开始测试,循环n-2次,每次循环之后除数加1,这样我们就可以对回答的数做循环判断,如果任何一次回答的数字可以被循环整除,则表示回答的数是存在其他因子的,这个时候让小猫直接回答不是质数,然后不需要做进一步的判断,直接停止程序即可。

请注意我们在让小猫回答问题时使用了连接文字的指令,这样我们就可以在一段回答中即写入我们需要的文字,也写入变量。

如果程序在执行完所有循环都没有被终止的话,说明不存在其他因子,这个时候程序会继续执行到循环之后的指令,因此我们在这里加入新的说指令,说明输入的值是质数即可。

完整的运行程序如下,请小朋友仔细体会其中逻辑。

Scratch少儿编程入门 第十二讲(完结篇)

 

 

来源:微信公号“一人耕者”

您必须 登录 才能发表评论!