少儿编程

系列

和 Vicky 一起学习 Scratch 系列之十二 | 随机

前言

上一期,我们学习了在 Scratch 中声音效果和背景音乐的添加和使用,并创作了一个关于玉兔二号月球车的小作品。

今天我们学习一下随机算法及其在 Scratch 中的使用,同时会介绍一下 Scratch 中计时器的用法。最后创作一个使用了随机和计时器的小游戏,好啦,开始吧~

随机

随机(Random)是一个在数学和统计学上很重要的概念,在计算机科学中也有大量的使用场景。

什么意思呢?我们都玩过骰子:

骰子 | Pixabay

而且我们也都知道,一颗骰子掷出去,结果是多少点,我们是无法事先确定的,正如一枚硬币扔出去,落地后是正面还是反面,我们预先也无法确定。所以,简单的说,随机表示了一种不确定性。

在各种游戏中,有大量使用随机的情景,现实中,我们打扑克牌,抓的每张牌都是随机的,电脑游戏中,随机的情况就更多了。

Scratch 中的随机

Scratch 中也引入了随机相关的内容,让我们看两个例子:

运算模块中的随机数生成器

在 Scratch 中的运算代码组中,有一个代码块 “在 x 和 y 之间取随机数 pick random x to y”,把这个模块拖到代码区,每次点击都会出现一个新的数,范围由 x 和 y 确定,新的数是随机产生的,范围越大,重复的可能性就越小。

再来看一个例子:

运动模块中的随机位置

在运动模块中,有一个代码块 “移到 随机位置 go to random position”,它的作用是每次运行时,都将角色移动到一个舞台中随机的位置上。

根据我们以前学习的坐标系,我们不难分析出,随机位置的本质也就是随机数 —— x 坐标和 y 坐标值都是随机的,并且范围在舞台横轴和纵轴的范围之内。

Scratch 中的计时器

了解了随机的概念后,我们来简单的聊一下计时器(Timer)。

计时器是一种测量时间间隔的特殊类型时钟

什么是计时器?每天叫我们起床的闹钟就是一种计时器,比赛时用的秒表也是计时器,家用电器定时关闭也是计时器。

计时器的作用就是测量一个时间的间隔,在 Scratch 中也有计时器相关的代码块:

计时器的使用

计时器位于 “侦测 Sensing” 代码块组中,一个是 “计时器归零 reset timer”,另一个是 “计时器 timer” 本身。

我们在脚本区编写了一个图示的代码,点击开始,小猫就开始不断的读秒数。看箭头示意,很清晰的代码,娃爸就不再啰嗦了。

游戏的规则

好啦,学习了随机和计时后,我们来做今天的作品吧!

今天我们做一个大家都玩过的游戏:打地鼠,不过变了一下形式,我们来 “打蝙蝠”,当然,打什么是我们自己来确定的,什么都可以啦。

根据我们以往的游戏经验来分析,这个游戏的规则是这样的:

  1. 角色会 随机 出现在舞台上
  2. 角色出现 一段时间 后会消失,同时换个位置出现新的角色
  3. 角色没消失的时候,我们用鼠标点到了它,它就会马上消失,表示被我们打中了

不难发现,这个游戏的关键在于两处:一是随机,二是计时。

正是我们今天学习的内容,分析清楚了,我们来实现吧!

游戏的实现

舞台和角色我们就不多说了,经 Vicky 提示,蝙蝠不会在白天出现,我们选择了一个夜景:

舞台背景和角色

游戏开始时,我们把蝙蝠隐藏起来,在一个 10 次的循环中,每次把蝙蝠移到随机的位置再显示出来:

随机位置的实现

这样我们就实现了随机的位置,然后我们让蝙蝠在 3 秒内自动消失:

计时器的实现

这样我们就实现了计时功能。

当然游戏的核心是在蝙蝠消失前打中它,我们修改了一下条件。最后靠切换造型的方式,让蝙蝠挥动起翅膀。最终的脚本是这样的,注意改动的两个红色方框区:

最终的脚本

这样,我们的 “打蝙蝠” 游戏就完成啦~

今天我们还知道了 4 个单词的含义:

  • random 随机
  • pick 选取
  • sensing 侦测
  • timer 计时器