【Scratch案例实操】Scratch萌宠运动会

举报
小兔子编程 发表于 2021/11/12 23:05:00 2021/11/12
【摘要】 案例名称:Scratch萌宠运动会 学习目标: 了解如何绘制背景熟练掌握Scratch坐标系,理解X坐标、Y坐标掌握如何在Scratch中创建变量,以及如何使用变量熟练掌握侦测模块碰到什么来实现检测机制充分理解随机数的概念和使用方法掌握如何连接字符和变量理解停止当前脚本的具体含义PS:具体的单个指令模块详解可以查看《Scratch...

案例名称:Scratch萌宠运动会


学习目标:

  • 了解如何绘制背景
  • 熟练掌握Scratch坐标系,理解X坐标、Y坐标
  • 掌握如何在Scratch中创建变量,以及如何使用变量
  • 熟练掌握侦测模块碰到什么来实现检测机制
  • 充分理解随机数的概念和使用方法
  • 掌握如何连接字符和变量
  • 理解停止当前脚本的具体含义
  • PS:具体的单个指令模块详解可以查看《Scratch3.0入门教学》专栏

场景介绍:

  • 萌宠乐园的熊老师正是决定在今年举行第一届运动会比赛,今天这一场将是一个跑步比赛,看谁能得到第一名;每个小伙伴们(小动物)都可以踊跃报名参加哦。

案例分析:

  • 程序启动或重新开始的时候,名次重新归零,裁判员熊老师宣布运动会开始
  • 小伙伴们在起始点准备就绪,熊老师哨声响了之后,小伙伴开始角逐跑步比赛名次
  • 为了实现模拟较为真实的跑步,每个小伙伴需要实现在跑步姿势的切换
  • 第一个到达终点的显示第一名,第二个到的第二名,以此类推,角逐出每个名次
  • 角色分析:熊老师、其他小动物(猫咪、兔子、狗狗、小马等等多种不同的动物)
  • 背景分析:通过绘制背景,画出跑到(有几个参赛选手就绘制几个跑到)、起始位置、终点位置

流程分析:

熊老师在程序启动后宣布比赛开始,让运动员准备就绪,然后吹口哨开始比赛;其他的参赛小伙伴要一边进行跑步比赛的名次角逐,同时还要模拟真实的跑步姿势所以,其他的参赛小伙伴都应该会有两个并列的程序,一个实现跑步比赛,一个实现跑步姿势切换。

  • 熊老师:开始→显示→初始位置→说运动会开始→询问是否准备就绪→吹口哨→变量初始化→隐藏
  • 猫咪1:开始→朝向→初始位置→等待→准备好了→跑步【移动步数→时间间隔→是否碰到终点线(名次+1→说出名次→停止当前脚本)】
  • 猫咪2:开始→等待→初始造型→切换造型【时间间隔→下一个造型】
  • 狗狗1:开始→朝向→初始位置→等待→准备好了→跑步【移动步数→时间间隔→是否碰到终点线(名次+1→说出名次→停止当前脚本)】
  • 狗狗2:开始→等待→初始造型→切换造型【时间间隔→下一个造型】
  • 兔子1:开始→朝向→初始位置→等待→准备好了→跑步【移动步数→时间间隔→是否碰到终点线(名次+1→说出名次→停止当前脚本)】
  • 兔子2:开始→等待→初始造型→切换造型【时间间隔→下一个造型】
  • 小马1:开始→朝向→初始位置→等待→准备好了→跑步【移动步数→时间间隔→是否碰到终点线(名次+1→说出名次→停止当前脚本)】
  • 小马2:开始→等待→初始造型→切换造型【时间间隔→下一个造型】
  • PS:流程分析里面的【】代表无限循环结构,()代表前面的条件判断为真的情况下需要执行的内容

用到的指令模块

运动模块

  • :角色移动指定的步数
  • :将角色移动到舞台中央制定的X/Y坐标位置

外观模块

  • :说一句话并在舞台上显示指定的时长,然后消失
  • :说一句话并在舞台上一直显示,为了最后显示各个名次
  • :将角色的造型换成指定的造型
  • :切换角色造型为下一个造型,如果是最后一个造型就会从新回到第一个造型
  • :将角色显示在舞台上
  • :将角色隐藏,在舞台上不显示

声音模块:

  • :播放指定的声效,熊老师哨声一响比赛开始

事件模块

  • :程序启动之后,点击小绿旗,执行后续的程序脚本

控制模块:

  • :时间间隔,等待指定的时间后执行后面的指令
  • :一直重复直行模块里面的指令
  • :条件判断模块,如果条件返回值为真(bool值),执行那么模块里面的程序,如果条件不成立,返回值为假,执行条件判断模块后面的程序指令
  • :停止正在运行的当前这个脚本,其它脚本以及其它角色的脚本不受影响

侦测模块:

  • :检测是否碰到指定的颜色,如果是返回bool值(真),否则返回bool值(假),小伙伴们到达终点线通过颜色侦测来识别。

运算模块:

  • :在指定的数值区间(前一个数较小后一个较大,比如在1到10之间)产生一个随机数,1到10可以是1,也可以是2,3。。。10等等,我们并不能确定具体的数值,但是我们知道产生的这个数值在我们指定的区间内。
  • :连接两个指定的字符或者变量或者其它数值,比如连接apple和banana 显示结果就是:applebanana,再比如我们这个案例中需要用到的连接“第“和名次,显示结果就是第1或者第二名,等等

变量模块

  • :建立一个变量,输入变量名称,然后选择适用于所有角色还是适用于当前角色
  • 本题目当中有一个得分环节,所以我们需要建立一个得分变量(可以选择适用于所有角色,也可以选择只适用于当前角色,如果选择适用于当期角色,则计分环节需要在蝙蝠的程序里面进行实现)
  • :将指定的变量设定指定的数值
  • :将指定的变量值增加指定的数值

角色和背景设置

角色设置:

  • 打开Scratch软件,默认会有一个猫咪角色,我们保留,然后我们从角色库中添加其它的角色

  • 我们这个案例中有一个裁判员(熊老师、然后四个运动员(猫咪、兔子、狗狗、小马)):所以我们要分别将这些运动员添加进来。如下图所示。

  • 依次把其它角色添加进来,并调整好相应大小,添加好后如下图所示

背景设置

  • 默认的是空白的舞台背景,我们可以自己在这个背景上或者新建一个背景绘制我们的跑到、起点和终点
  • 通过自带的绘制工具进行绘制,如下图所示
  • 最终绘制好的效果如下图所示
  • 背景添加好了之后我们还需要添加一个声音音效,来模拟实现裁判员吹口哨的声音。操作方法:点击背景的声音标签,点击左下角从声音库中选择一个音效,我这边选的音效是(Referee Whistle),如下图所示

编写程序指令

  • 开始编写程序之前我们可以将案例中需要用到的变量先定义好,从之前的案例分析中,我们可以看到,我们本次案例需要定义一个名次的变量,而且这个变量应该是所有角色公用的。

熊老师:

  1. 点击小绿旗程序启动,执行后续程序模块

  2. 将熊老师在舞台上显示出来,主要是配合后面的隐藏角色使用

  3.  将熊老师的初始位置设定在舞台的中心点上X-0,Y-0

  4. 宣布运动会跑步比赛马上要开始

  5. 让所有运动员准备就绪

  6. 播放口哨声音,模拟比赛开始的哨声

  7. 将名次变量进行初始化,归零将熊熊老师隐藏,运动员开始跑步比赛

猫咪1:

  1. 点击小绿旗程序启动,执行后续程序模块
  2. 设置猫咪的朝向 90度方向
  3. 将猫咪移到跑到的起始位置X-200,Y-50;注意其它三个运动员的起始位置,他们在各自跑到的起点应该一样,也就是我们看到的X坐标值应该都是一样-200,不一样的是他们的Y坐标值
  4. 等待我们裁判员熊老师宣布比赛开始
  5. 回应裁判员熊老师,我们准备好了
  6. 开始跑步,重复执行7-9的模块指令,可能有些小朋友会问,为什么不是执行7-12的模块呢,因为9号模块是条件判断模块,如果条件为真就会执行10-12模块,所以我们这边只要写重复执行7-9模块就可以了
  7. 每次向前移动3、4、5、6、7、8中的其中一个步数,我们这边是设置的3-8的随机数,这样使我们的比赛更有趣味,因为我们并不知道每个运动员具体每次会走多少步,所以我们就不会知道谁会是第一个到达,这样使我们的比赛更加精彩
  8. 时间戳,让我们在跑步的时候有一个短暂的间隔,更加真实
  9. 判断是否到达终点,通过侦测模块的颜色检测来判断,如果碰到了我们的终点线那么执行10-12号模块指令
  10. 将变量名次增加1
  11. 说出我是第几名,由于这个几是不确定的,是我们的变量,所以我们要说出这样完整的一句,就需要通过连接指令将我们的文字和变量再将文字连接起来,形成完整的一句,比如我是第一名
  12. 停止当前正在执行的这个脚本,并且不会影响到其它脚本的执行。

猫咪2:

  1. 点击小绿旗程序启动,执行后续程序模块
  2. 时间间隔,等裁判员宣布开始之后,运动员开始比赛
  3. 换成初始造型第一个造型(注意所有的运动员都只保留两个运动姿势造型,其它造型都删除)
  4. 造型切换(重复执行5-6模块指令)
  5. 时间间隔,两个造型之间需要有个短暂的等待
  6. 切换到下一个造型

狗狗1:

  1. 点击小绿旗程序启动,执行后续程序模块
  2. 设置狗狗的朝向 90度方向
  3. 将狗狗移到跑到的起始位置X-200,Y40
  4. 等待我们裁判员熊老师宣布比赛开始
  5. 回应裁判员熊老师,我们准备好了
  6. 开始跑步,重复执行7-9的模块指令,可能有些小朋友会问,为什么不是执行7-12的模块呢,因为9号模块是条件判断模块,如果条件为真就会执行10-12模块,所以我们这边只要写重复执行7-9模块就可以了
  7. 每次向前移动3、4、5、6、7、8中的其中一个步数,我们这边是设置的3-8的随机数,这样使我们的比赛更有趣味,因为我们并不知道每个运动员具体每次会走多少步,所以我们就不会知道谁会是第一个到达,这样使我们的比赛更加精彩
  8. 时间戳,让我们在跑步的时候有一个短暂的间隔,更加真实
  9. 判断是否到达终点,通过侦测模块的颜色检测来判断,如果碰到了我们的终点线那么执行10-12号模块指令
  10. 将变量名次增加1
  11. 说出我是第几名,由于这个几是不确定的,是我们的变量,所以我们要说出这样完整的一句,就需要通过连接指令将我们的文字和变量再将文字连接起来,形成完整的一句,比如我是第一名
  12. 停止当前正在执行的这个脚本,并且不会影响到其它脚本的执行。

狗狗2:

  1. 点击小绿旗程序启动,执行后续程序模块
  2. 时间间隔,等裁判员宣布开始之后,运动员开始比赛
  3. 换成初始造型第一个造型(注意所有的运动员都只保留两个运动姿势造型,其它造型都删除)
  4. 造型切换(重复执行5-6模块指令)
  5. 时间间隔,两个造型之间需要有个短暂的等待
  6. 切换到下一个造型

兔子1:

  1. 点击小绿旗程序启动,执行后续程序模块
  2. 设置兔子的朝向 90度方向
  3. 将兔子移到跑到的起始位置X-200,Y130
  4. 等待我们裁判员熊老师宣布比赛开始
  5. 回应裁判员熊老师,我们准备好了
  6. 开始跑步,重复执行7-9的模块指令,可能有些小朋友会问,为什么不是执行7-12的模块呢,因为9号模块是条件判断模块,如果条件为真就会执行10-12模块,所以我们这边只要写重复执行7-9模块就可以了
  7. 每次向前移动3、4、5、6、7、8中的其中一个步数,我们这边是设置的3-8的随机数,这样使我们的比赛更有趣味,因为我们并不知道每个运动员具体每次会走多少步,所以我们就不会知道谁会是第一个到达,这样使我们的比赛更加精彩
  8. 时间戳,让我们在跑步的时候有一个短暂的间隔,更加真实
  9. 判断是否到达终点,通过侦测模块的颜色检测来判断,如果碰到了我们的终点线那么执行10-12号模块指令
  10. 将变量名次增加1
  11. 说出我是第几名,由于这个几是不确定的,是我们的变量,所以我们要说出这样完整的一句,就需要通过连接指令将我们的文字和变量再将文字连接起来,形成完整的一句,比如我是第一名
  12. 停止当前正在执行的这个脚本,并且不会影响到其它脚本的执行。

兔子2:

  1. 点击小绿旗程序启动,执行后续程序模块
  2. 时间间隔,等裁判员宣布开始之后,运动员开始比赛
  3. 换成初始造型第一个造型(注意所有的运动员都只保留两个运动姿势造型,其它造型都删除)
  4. 造型切换(重复执行5-6模块指令)
  5. 时间间隔,两个造型之间需要有个短暂的等待
  6. 切换到下一个造型

小马1:

  1. 点击小绿旗程序启动,执行后续程序模块
  2. 设置小马的朝向 90度方向
  3. 将小马移到跑到的起始位置X-200,Y130
  4. 等待我们裁判员熊老师宣布比赛开始
  5. 回应裁判员熊老师,我们准备好了
  6. 开始跑步,重复执行7-9的模块指令,可能有些小朋友会问,为什么不是执行7-12的模块呢,因为9号模块是条件判断模块,如果条件为真就会执行10-12模块,所以我们这边只要写重复执行7-9模块就可以了
  7. 每次向前移动3、4、5、6、7、8中的其中一个步数,我们这边是设置的3-8的随机数,这样使我们的比赛更有趣味,因为我们并不知道每个运动员具体每次会走多少步,所以我们就不会知道谁会是第一个到达,这样使我们的比赛更加精彩
  8. 时间戳,让我们在跑步的时候有一个短暂的间隔,更加真实
  9. 判断是否到达终点,通过侦测模块的颜色检测来判断,如果碰到了我们的终点线那么执行10-12号模块指令
  10. 将变量名次增加1
  11. 说出我是第几名,由于这个几是不确定的,是我们的变量,所以我们要说出这样完整的一句,就需要通过连接指令将我们的文字和变量再将文字连接起来,形成完整的一句,比如我是第一名
  12. 停止当前正在执行的这个脚本,并且不会影响到其它脚本的执行。

小马2:

  1. 点击小绿旗程序启动,执行后续程序模块
  2. 时间间隔,等裁判员宣布开始之后,运动员开始比赛
  3. 换成初始造型第一个造型(注意所有的运动员都只保留两个运动姿势造型,其它造型都删除)
  4. 造型切换(重复执行5-6模块指令)
  5. 时间间隔,两个造型之间需要有个短暂的等待
  6. 切换到下一个造型

案例效果

案例演示

【Scratch案例演示】萌宠乐园运动会跑步

文章来源: scratch.blog.csdn.net,作者:CSDN专家-小兔子编程,版权归原作者所有,如需转载,请联系作者。

原文链接:scratch.blog.csdn.net/article/details/107619176

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。