Scratch第八讲:海底世界(三)

网友投稿 2018-08-29 19:57

编程任务

《今天的任务是增加一个小海星,我们要操作小鱼去吃小海星,一旦吃到,小海星就会随机出现在新的位置,同时你就得了1分》

程序脚本

1:添加一个小海星,这个我们学过了,从角色库里选就好了。

https://cdn.china-scratch.com/timg/180831/195F33143-0.jpg

2:检测小鱼是否碰撞到海星,一旦碰撞到,海星出现在屏幕的随机位置。碰撞测试我们上一讲学过了,用条件语句:如果...那么...。小海星出现在新的位置就需要用到一条新语句了(随机数)

https://cdn.china-scratch.com/timg/180831/195F33L7-1.jpg

随机数指令块在《运算》这个目录里,我们可以指定任意一个范围来选取随机数。在这个程序里,我们是希望用随机数来选取海星在屏幕上的坐标。那这个数字范围该如何填呢?

坐标的用法

为了在舞台上精准定位,Scratch使用一些叫做‘坐标’的数字。他们的使用方法和图中的坐标一样,水平方向用x表示,垂直方向用Y来表示,要确定舞台上的一个点的坐标,只需要从舞台中心横向和纵向计算步数就好,在舞台右上区域,坐标为正,在舞台右下区域为负,舞台上每一个点都有唯一坐标,借助坐标就可以把角色移动到某个位置。

https://cdn.china-scratch.com/timg/180831/195F31J1-2.jpg

提问

大家注意到没有,屏幕的坐标的最大值是X轴为正负240,Y轴为正负180,那为什么我们用的海星的坐标为正负200和正负150呢?这个留给小朋友们自己去思考。

3:记录分数(设置变量

分数是一个在游戏里面最常用的值了,比如获得多少积分,多少金币,多少生命值,体力值,等等等等。这些数字在程序里有一个重要的名称:变量。

变量

可以把它理解成一个小盒子,我们可以把信息放在里面,还可以随时修改。在数学课上我们也会学到变量,比如解方程的时候x,y就是变量,用字母代替。在程序的里面我们就需要给变量起名字,比如“得分”,我们不仅可以用它来存放数字,也可以存放其他的信息。变量取名字的时候一定要清楚的说明其用途的名字。因为一个大的程序里面的变量成百上千个,如果名字不能清楚的表达用途,不要说别人会看不懂你的程序,恐怕连自己都会搞糊涂的。

先创建一个变量:得分

https://cdn.china-scratch.com/timg/180831/195F310E-3.jpg

(选择适用于所有角色)

创建好后,我们在数据这个分类里就看到好多新的围绕着这个变量的指令。

https://cdn.china-scratch.com/timg/180831/195F42Q0-4.jpg

第一个是给变量一个初始值,比如得分就从0开始。在编程中,当我们需要去用变量的时候,很关键的一步就是要给变量一个初始值,否则在后面操作的时候,电脑就不知道变量的初始值是什么,那么围绕着变量的运算也就会发生错误。

第二个指令是给变量增加一个数值。

第三第四条指令是决定是否在屏幕上显示这个变量。

创建好变量后,在舞台屏幕上有一个显示得分的变量,变量的位置可以用鼠标拖动。可以显示也可以不显示。

https://cdn.china-scratch.com/timg/180831/195F43146-5.jpg

设置好了变量,那我们可以开始继续遍程啦。程序很简单,就是在碰撞检测的判断语句里加一条给变量加1的指令。

https://cdn.china-scratch.com/timg/180831/195F412W-6.jpg

好了,现在点击一下绿旗,看看执行的效果如何?

https://cdn.china-scratch.com/timg/180831/195F4EG-7.gif

CC哥操作的不好,才得了4分就挂掉了,然后再执行的时候发现一个问题,重新开局时,变量没有归零,而是继续增加。这明显不对,说明我们少了一条语句,应该在每次程序开始之前就把变量归零(这就是我们刚才说的错误,我们忘记了在程序开始的时候给变量赋值)。让我们把它加上。

https://cdn.china-scratch.com/timg/180831/195F41192-8.jpg

这个程序基本就设计完了,今天主要讲了变量的应用,以后我们在编程中还会大量用到变量,大家可以好好掌握一下。

下一讲我们会进行对整个程序进行优化,程序的好坏很大程度都在细节上,下一讲我们会专门来讲,用什么思路去进行程序的修正和微调,找出程序中不令人满意的地方来进行调整。细细打磨,做程序也是需要工匠精神的,不追求完美的程序员不是好程序员。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com