Scratch——第15课 克隆拓展——图形队列

在三级的考级中,很多时候很喜欢出现图形队列的问题,让图形进行克隆,从而完成图形的队列排布,同时在很多赛事中(蓝桥杯、信息素养)等,出现图形队列题目的频率也很高。虽然看上去,难度有点大,但是只要理解它的原理,还是可以满分拿下的。

一、图形队列的解题思路:

1.观察图形是几行几列,运用循环设置每一行和每一列的图形个数

2.运用内层循环绘制第一层

3.运用外层循环将所有图形进行排列

4.对x坐标进行初始化与本体隐藏

二、出现频率高的题型

1.绘制以下图形

题目要求:(1)选择角色Dog1,设置大小为50(2)初始位置为(-150,-120)

第①步:图形是5行5列, 每行的个数=每列的个数=5

第②步:每个角色都是一样的形状和大小,那么可以通过克隆技术进行实现,接着运用内层循环绘制第一层,,在每一层,狗与狗之间有间隔,那么需要让它每次克隆一个角色之后,移动一段距离,就完成最下一层的绘制。

第③步:运用外层循环将所有图形进行排列,那么发现,上一层的狗狗与下一层的狗狗之间存在距离,那么需要让它在竖直方向上移动一段距离

将外层循环和内层循环拼在一起,点击“运行”,会出现什么问题?

原本第二层(从下往上数)的狗狗应该跟第一层的狗狗x坐标相同。为了解决这个问题,那么在每次内层循环结束之后,要对x坐标进行初始化。

第④步:对x坐标进行初始化操作,接着要对本体进行隐藏的操作,否则看到的数量会比要求多一只。

整合代码:

2.绘制以下图形

题目要求:(1)选择角色Jar,设置大小为120(2)初始位置为(-150,-50)

第①步:图形是4行3列, 每行的个数=4,每列的个数=3

第②步:每个角色都是一样的形状和大小,那么可以通过克隆技术进行实现,接着运用内层循环绘制第一层,,在每一层,草莓酱与草莓酱之间有间隔,那么需要让它每次克隆一个角色之后,移动一段距离​​​​​​​,就完成最下一层的绘制。

第③步:运用外层循环将所有图形进行排列,那么发现,上一层的草莓酱与下一层的草莓酱之间存在距离,那么需要让它在竖直方向上移动一段距离​​​​​​​

将外层循环和内层循环拼在一起,点击“运行”,会出现什么问题?

原本第二层(从下往上数)的草莓酱应该跟第一层第二个的草莓酱距离一瓶草莓酱的距离。为了解决这个问题,那么在每次内层循环结束之后,要对x坐标进行初始化。

第④步:在每行绘制完之后,x坐标都比最初始的x坐标多了一个x坐标的量(即一瓶草莓酱的位置),那么不能通过对x坐标进行设置,而是需要运用变量,设置变量初始值,每次绘制一行之后,数量增加1,然后对x坐标进行设置(设置的原理是:本层第一瓶草莓酱离最下面一层的第一瓶草莓酱的距离),最后要对本体进行隐藏的操作,否则看到的数量会比要求多一只。

整合代码:

3.在造型页面绘制正方形作为本次角色,绘制以下图形

题目要求:(1)绘制正方形角色(2)初始位置为(-150,-89)

第①步: 每行的个数与每列随着层数的变化而减少,那么这个时候,减少的变化是每次减1,所以可以通过变量进行实现,,从图中,可以发现图形的行数等于那一行的个数,从下往上,随着层数的上升,个数减少1

第②步:每个角色都是一样的形状和大小,那么可以通过克隆技术进行实现,接着运用内层循环绘制第一层,​​​​​​​,在每一层,图形与图形之间有间隔,那么需要让它每次克隆一个角色之后,移动一段距离,就完成最下一层的绘制。

第③步:运用外层循环将所有图形进行排列,那么发现,上一层的图形与下一层的图形之间存在距离,那么需要让它在竖直方向上移动一段距离​​​​​​​,每绘制完一层,个数减1

将外层循环和内层循环拼在一起,点击“运行”,会出现什么问题?

原本第二层(从下往上数)的图形应该跟第一层的图形x坐标相同。为了解决这个问题,那么在每次内层循环结束之后,要对x坐标进行初始化。

第④步:对x坐标进行初始化操作,接着要对本体进行隐藏的操作,否则看到的数量会比要求多一只。

整合代码:

### Scratch 中的嵌套概念 在 Scratch 编程环境中,嵌套指的是在一个指令内部放置另一个指令或一组指令的行为。这种结构允许创建更复杂和灵活的程序逻辑。常见的嵌套形式包括循环内的条件判断、事件处理中的动作序列以及自定义模块之间的调用。 #### 条件语句与循环体内的嵌套 当编写涉及多重决策路径的游戏或其他应用程序时,可以在 `如果...那么` 或者 `重复执行直到` 这样的控制积木内加入其他类型的命令来构建更加精细的操作流程[^1]。 例如,在一个简单的猜数字游戏中: ```scratch when green flag clicked set [secret v] to (pick random 1 to 10) ask [Guess the number between 1 and 10:] and wait repeat until <(answer) = (secret)> if <(answer) < (secret)> then say [Too low!] for (2) seconds else say [Too high!] for (2) seconds end ask [Try again:] and wait end say [You got it right! The secret was ] (secret) for (2) seconds ``` 在这个例子中,“if-else” 结构被嵌入到了 “repeat-until” 循环之中,实现了根据不同情况给出不同反馈的功能。 #### 自定义模块间的相互调用 除了基本的控制流之外,还可以利用自制积木来进行更高层次上的抽象化工作。这使得某些特定的任务可以被打包成独立单元,并且能够方便地在不同的地方重用它们。更重要的是,这些自制积木也可以互相调用来形成复杂的算法链路。 比如要实现一个多层菜单界面的话,就可以先分别建立好各个子页面对应的脚本片段,再通过触发器连接起来构成完整的导航体系。 ```scratch define show main menu broadcast [show start screen v] define handle user choice input switch costume to [choice-input-sprite v] wait until <key space pressed?> broadcast [process selection v] // Main script that ties everything together. when I receive [start game v] show main menu forever handle user choice input end ``` 上述代码展示了两个自定义函数:“显示主菜单” 和 “处理用户输入”。后者会不断监听按键事件并作出响应;而前者则负责初始化整个应用的状态。两者之间存在着清晰的关系——即每当完成一次交互之后就会重新回到初始状态等待下一轮操作的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值