“嗖!嗖嗖!”

寒光闪过,邪恶的吸血蝙蝠灰飞烟灭,不过卡卡的双臂也逐渐沉重起来,他咬牙坚持着,直到消灭最一只蝙蝠。

卡卡擦了擦额头的汗珠,收到AI助手的信息:你刚才消灭了368只蝙蝠,消耗235卡路里——大约相当于一小罐可乐的热量。

战斗这么久才消耗一小罐可乐?卡卡吐了吐舌头,跑出了这片黑暗的森林。

远远地看见一座古堡,有点像中世纪的建筑,目标一定就在那里!卡卡兴奋地加快脚步要冲过去,忽然感觉脚下一软,好像踩到了一团烂泥。而且这团“烂泥”似乎还会动,死死地粘住卡卡的脚不放。

这是什么怪东西?卡卡大吃一惊,AI助手的提示——

“这是注意力吞噬者,又称注意力陷阱。它们的唯一目标就是尽可能地抓住你的注意力,让你把宝贵的时间浪费在它们身上。比如无聊的文章、满足好奇心的短视频、让人上瘾的游戏等……你必须尽快挣脱它们,否则无法及时到达前方的幽灵古堡”。

好吧,真是一波未平一波又起,卡卡花了好大力气才把自己从这个吞噬者身上挣脱。定睛一看,通往古堡的道路上,大大小小的全是这种“注意力陷阱”。

看来这关不好过啊,卡卡心中暗暗叫苦。

学习目标

  1. 掌握背景图的修改方式;
  2. 使用键盘控制角色的方法;
  3. 颜色触碰侦测指令;
  4. 自制积木的用法。

编程实战

本节我们实现一个使用键盘控制小猫自由行走的程序,如果行走中碰到了陷阱,就退回原位。

第一步:设置背景与角色

新建 Scratch 项目,将背景修改为 Scratch 自带的 Castle 2(城堡):

在这个场景中,小猫站在一条通往古堡的道路上。我们需要在背景上加入一些“陷阱”,所以在“舞台”下方的背景缩略图上点击“背景2”,你会发现项目编辑区的标签页从“代码”、“造型”、“声音” 变成了“代码”、“背景”、“声音” ,点击“背景”标签页就可以进入修改界面:

这个背景标签页和角色造型的界面很相似,左边列出了你曾经选择过的背景,右侧是当前所选背景图的编辑器(与角色的编辑器一样)。你会看到编辑器中所能使用的工具和角色绘图时不同,这是因为这张背景图是“位图”,它的修改方式不是通过添加线条、形状来完成的,而是就像我们平时绘画一样,使用画笔、橡皮等工具进行涂抹擦除。当然,你也可以点击画布下方的“转换为矢量图”对它进行转换。不过对这张像照片的背景来说,用位图的编辑方式还是更合适一些。

选中绘图工具中的“圆形”绘制工具,在通往古堡的道路上画几个深色的实心圆,代表陷阱。如下图所示,因为我们是为了演示,而不是真的要绘制一个很难通过的“迷宫”,所以不用太复杂。如果你完成了本节内容,想提高难度,可以在这个图上自由发挥。

第二步:编写小猫指令

接下来为小猫编写指令。在编写指令之前,务必注意先在角色列表中选中小猫角色,因为刚才在修改背景时,我们切换到了背景的代码页,如果不切换到小猫角色,编写的就是背景的代码。这是初学者易犯的错误之一——怎么我写的代码找不到啦?

要实现小猫接收键盘命令,有两种方式,一种是上节内容我们学习到事件类指令(当按下…键),这里的键位你可以从下拉的列表中选择;另一种是把条件判断指令与侦测指令结合起来使用,如果条件成立则执行里面的代码,同样,判断条件里面的键位也是可以选择的。你可以根据具体场景来使用,本节内容我们采用后面这种方式。

现在把小猫移动到舞台的左下角,注意不要碰到你画的陷阱,然后为它编写下面的代码:

这里的指令都是你熟悉的,当按下向上键的时候,面向0度方向(也就是垂直向上)移动十步,切换造型,使用外观类指令将角色大小增加-5(也就是减少5,这样可以让小猫有近大远小的效果,向远处走的时候变小)——运行一下,怎么小猫一动不动呢?出什么问题了?

这就是初学者容易出错的场景之一——侦测指令是单次运行的,也就是说每运行一次指令检测一次。现在我们只是在绿旗启动的时候检测,它只运行一次就结束了,你还没来得及按键呢!必须是在程序运行后不断地检测是不是按下这个键才可以,所以我们需要在条件判断指令前面加上一个重复执行:

现在你按上箭头的时候,小猫可以向上走动了。掌握了这种方法,要实现向下、向左、向右就很容易了,在重复执行指令内部再加上相应的判断条件即可:

小猫如果在移动中碰到了“陷阱”,就要回到起始点,也就是原来的坐标,所以我们在重复执行中再加一个条件判断:

这里我们使用了一个新的侦测指令——碰到颜色,它和碰到角色的判断是一样的,只不过碰到的对象从某个角色变成了颜色而已,这个颜色从哪里来呢?点击这个颜色的时候,会出现一个设置颜色窗口,你可以把它设置成和你画陷阱的时候选择的颜色一样。不过更简便的方法是,使用这个窗口下面的“吸管”按钮,再把鼠标移动到舞台区你已经画好的陷阱上,这时鼠标会变成一个放大镜,把鼠标放到陷阱的位置点击,就能取到陷阱的颜色。

现在可以运行检验一下效果了,你的小猫可以灵活地四处走动,碰到“陷阱”就回到起始位置。

第三步:指令精简

到这里程序的功能是基本上实现了,可是你有没有觉得什么地方不对劲?小猫的代码是不是有点太长了?长也不算什么大问题,功能复杂的程序都会比较长——可是你发现这一长串代码中,有不少是简单重复的呀,下面图中处理四个方向的代码,除了移动的方向之外,是不是其它都一样?

切记,当你发现自己的代码中出现这种“有规律的重复”时,表明你需要精简你的程序了。在 Scratch 中,处理的方法,是把重复的代码做成自制积木。

什么是自制积木?简单地说,其实就是把具有通用性的一段代码放到一起,给它们起一个名字保存起来。当你在其它代码中要用到这段通用代码时,可以直接把这个保存好的积木放过去,就能起到和写一段代码一样的效果!比如在这段代码中,我们可以自制一个“走路”积木,把调整方向、移动、下一个造型这三块积木放到这个走路积木中,那么你只需把走路积木放到条件判断指令内部,就能实现现有程序的功能——这样代码量不仅减少了,如果走路功能发生了变化,你只用修改这块自制积木,所有用到这块积木的地方不用做任何修改——是不是很方便?这就是编程的一个重要原则:重复的事件只做一次就好

你可能会问,不对呀,这四段代码也不是完全一样的,它们面向的方向不同!的确,完全重复的代码不多,这里就存在一个方向变化的问题。Scratch 考虑到了这种情况,所以你可以在自制积木的时候,定义一个或多个“输入项”——就像你在用移动10步这个指令的时候,可以把步数设置为10,也可以设置为20一样,这个步数就是输入项——你可以给你的“走路”积木定义一个“方向”输入项,在使用这块积木的时候告诉它向哪个方向去,在积木内部就可以用这个输入项来决定小猫面向哪个方向。

这么说很抽象,有点难以理解,我们来实际操作一下——

在项目编辑区找到最后一个指令分类——“自制积木”,这类积木目前里面只有一个按钮“制作新的积木”。

点击“制作新的积木”按钮,会弹出一个窗口,要求你输入这个积木的名字,我们输入“走路”:

先不要急着点完成,由于走路的方向不同,我们再点击“添加输入项(数字或文本)”,在积木名称后面就多出一个椭圆的空白区域,你可以在这里输入“方向”(这是输入项的名字)——

点击窗口右下方的“完成”按钮,一个新的积木会同时出现在指令区和代码区:

代码区的“定义走路(方向)”和其它的积木有很明显的不同,我们可以在它下面加入代码,让它实现“走路”的功能,你可以在已经写好的走路代码上点击鼠标右键,在弹出的快捷菜单中选择“复制”,Scratch 就会复制一份代码,把它拖过来放到定义积木下面就可以:

注意!!关键的一步来了。这里的代码是让小猫面向0度方向的!我们怎么才能让把自制积木定义好的输入项“方向”放到第一条指令“面向…方向”的空白区域,让它根据输入项改变方向呢?你可能会想,把现在的“0”修改成“方向”两个字就可以了吧?这是错误的。这和我们在前面内容中讲的变量一样,输入项传递过来的实际上是一个变量,而不是“方向”这两个汉字!“方向”这两个字是输入项的名称,而我们需要的是保存在这个输入项当中的值——可能是0,也可能是90等。怎么办?很简单,用鼠标拖动最上面“定义积木”中的“方向”这个稍微浅一点的区域,你会发现一件神奇的事情——它居然可以被“克隆”出来一份,随着你的鼠标移动——把它放到第一行指令的方向值里面即可:

这样,我们就完成了自制积木的功能,下面就可以把原来条件判断中的指令全部替换成“走路”指令了(从指令区拖过去,并且修改输入的方向),代码就变成了下面这样:

怎么样?代码是不是简洁了很多?这里走路这个积木的代码不多,所以还显不出它的优越性,但你可以想象如果代码很多,择取重复代码的操作就显得区别很大了——关键是你精简了代码,并没有影响程序的功能!好的程序员,一定是用最少的代码做最多的事情。象这样“在不改变代码功能的情况下对代码进行调整优化”的过程,在软件行业有一个专门的术语,叫做——重构。

指令小贴示

  • 将大小设为【数值】:角色大小默认为100,相当于100%,原始大小,通过设置大小值,能改观角色外观;
  • 将大小增加【数值】:如果想角色变大,就增加正数,想让角色变大可以增加一个负值,如-5;
  • 按下【按键】键?:侦测是否按下键盘上的某个键,一般与如果…那么配合监视程序的键盘输入,注意搭配重复执行,否则只会执行一次;
  • 碰到颜色【颜色】?:侦测角色是否碰到某个颜色,它比以前用过的“碰到角色”更灵活,即使是背景中的颜色也会生效,但要注意,侦测的目标区域最好是纯色,如果是渐变色可能会失灵;
  • 自制积木:将重复性的代码放到自制积木里,就能像使用内置指令一样使用它。

课后思考

本节进一步复习了绘图编辑器的用法,Scratch 中的背景也是可以自定义的。除此之外,陌生的指令较少,但要重点掌握的是“重构”。使用自制积木的方式,将程序中重复出现的代码提取到“自制积木”中,能大大精简程序,让程序的结构更加清晰。

实际上,掌握重构,是一个程序员水平高低的标志之一哦!恭喜你今天已经接触到这一“秘技”!

好课堂Scratch编程09 趣学篇(五)目标!幽灵古堡相关推荐

  1. 好课堂Scratch编程11 趣学篇(七) 一场真正的终极对决

    "小明的BMI指数是28.73,属于肥胖范围"卡卡自信地说. Griffin也不废话,将钥匙交给卡卡就消失了,卡卡走进了古堡. 空荡荡的大厅里放着一扇闪闪发光的传送门.卡卡把钥匙插 ...

  2. 好课堂Scratch编程10 趣学篇(六)听题!格里芬的挑战

    卡卡逐渐摸出了规律--只要保持专注,还是能挣脱这些"注意力陷阱"的.他回忆起自己平时的情形--本来是打算用手机搜一道作业题,不知道怎么的就点开了一段视频,然后又下载了一个小游戏-- ...

  3. 好课堂用Scratch编程06 趣学篇(二)热身中的卡卡

    卡卡在工作人员的引导下穿上游戏特制的装备. "游戏中,您注意一下画外音,AI助手会给您提供一些提示信息". "好的,谢谢啦!" 卡卡进入虚拟世界,眼前飘过一连串 ...

  4. 教孩子学编程 python 下载_趣学python pdf 中文下载

    趣学python教孩子学编程pdf是一本专为想要学习python不错的朋友准备的入门教程,可以轻松的帮之你由浅入深,由难到易的学习python编程,感兴趣欢迎下载学习! 趣学python教孩子学编程p ...

  5. python3入门到精通 pdf_解析《Python3标准库》PDF中英文代码+《算法之美指导工作与生活的算法》PDF中英文+《Scratch编程从入门到精通PDF》趣学...

    我想Python之所以流行,原因在于:1. 语言本身优美,表达力强.适合做快速原型开发.且学习曲线平坦,上手快. 2. Python标准库正是应对了这第二点.丰富的库实现得以让python程序员迅速完 ...

  6. 儿童编程微课堂-Scratch准备篇:一、Scratch简介

    作者:程序媛妈妈 Scratch简介: Scratch 是由麻省理工学院(MIT)媒体实验室设计开发的一款面向中小学生的可视化简易编程语言. 适合7~16岁学龄儿童学习,至今已有十年之久. Scrat ...

  7. 少儿编程之旅 趣学Python,小学生python趣味编程PPT

    中小学生如何学习Python编程? 一.中小学生接触电脑的时间很少,所以要经常操作电脑,熟悉电脑的操作,查资料,环境变量,命令行等等.二.编程需要一些英语基础,不用很厉害,但是至少要能看懂一些简单的互 ...

  8. 【趣学算法】Day2-数据结构入门篇

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法! 上一篇我们提到为什么要学算法? [趣学算法]Day1-为什么要学算法?_跟着飞哥学编程的博客-CSD ...

  9. scratch编程如何学?

    scratch归属于普遍的编程专用工具,具备功能丰富,使用方便.应用普遍等特性.孩子学习编程,关键就是说根据scratch开展制做.比如,要想写作一张生日卡,就必须在scratch数据可视化对话框中, ...

  10. scratch学习_学习scratch编程能学到什么?对孩子有帮助吗?

    scratch编程让孩子在学习制作的时候,就好像打游戏一样,充满了趣味,充满了兴趣.但孩子学习少儿编程,在制作编程的过程当中,已经形成了一种认真专注的习惯,养成主动思考的习惯,善于发现问题解决问题,给 ...

最新文章

  1. SVN centos6.3
  2. 建站之前做好规划方案会为网站带来意外之喜
  3. 一周安全事件点评:***黑手正伸向商业数据
  4. 关闭或开启memory_target
  5. Cloud for Customer Mashup debug in IFrame
  6. apache下IE6对js的bug处理
  7. LeetCode 562. 矩阵中最长的连续1线段(DP)
  8. flink sql设置并行度_Flink集成Hivestream模式用例
  9. 初学者注意:你需要明白编程的意义所在,否则是学不好编程的!
  10. 为Visual Studio 2010增加ExtJs智能提示
  11. 2019.1.23 01迷宫
  12. 【报告分享】2021年中国互联网保险消费者洞察报告.pdf(附下载链接)
  13. power of love
  14. 记录一次通过抓包解决Zabbix no active checks on server
  15. kernel 3.2.0 上加入自己的板级文件
  16. java mysql存储图片_Java存储图片到Mysql
  17. 导出java applet_Java Applet基础——输出HelloWorld
  18. xposed+justtrustme
  19. Java实现用户输入自己的会员卡号,程序取出会员卡号的各个位数,并打印结果
  20. android+农历月份大小压缩表,部分日期农历新历转换会崩溃

热门文章

  1. 影子卫士中文注册版+系统保护的尚方宝剑、、
  2. AMiner发布2022 AI 2000人工智能最具影响力学者名单
  3. 产品读书《Facebook效应:看Facebook如何打造无与伦比的社交帝国》
  4. 彻底理解connection timeout
  5. python曲线拟合预测_python曲线拟合
  6. 初级第五旬07— 初级课程第五旬试题
  7. java加密文件夹_怎样用JAVA给文件夹加密,拜求各位大侠!
  8. 手写笔记软件android,有笔没笔一样写 五款安卓手写笔记APP
  9. 缺少netcfg.hlp无法上网的解决
  10. Python新手入门第一步:什么是 IDE?IDE 有什么用?