Scratch公有变量与角色私有变量

我们曾经遇到过一个克隆体复制上的问题,当接收到消息1时,主体克隆自己1次,于是屏幕上有了1个主体与1个克隆体,这个步骤没有问题,我们的本意就是发送1个消息,让主体克隆自己1次。当第2个消息传来的时候,情况就有了变化,屏幕上的克隆体也会接收到消息1,然后同样执行一次克隆的操作。随着消息的不断发送,克隆体的数量会按下面这样的方式增加:1、3、7、15、31、63、127、255,于是在第九条消息传来的时候,克隆体的数量就达到了上限。这显然不是我们想要的结果。

变量公有私有示例 提取码: axpz

scratch_public_private_p1

我们来重温一下这个例子,当小猫这个角色被点击时,会发送1条消息,然后屏幕上会增加1个克隆体,第2次点击小猫,屏幕上会增加2个克隆体,继续点击小猫,整个屏幕就被小猫们占领了。

scratch_public_private_p2

在之前的课程中,我们对主体使用了一块重复执行的积木,以避免克隆体继续克隆自己。今天,我们来尝试使用变量的方法。在之前的课程中,所有我们自定义的变量都是公共变量,而Scratch软件中预设的,积木形状相同而颜色与我们的自定义变量有区别的变量,都可以视为私有变量。

scratch_public_private_p3

比如我们点击小猫,然后让小猫报出自己的x坐标,然后点击其他的任意角色,同样报出自己的x坐标。如果两个角色没有那么巧合的站在同一个位置,那么报出来的x坐标是不同的。小猫报出的是小猫的x坐标,而其他角色报出的,自然也是属于其他角色的坐标。私有变量看起来只有一块积木,用在不同的角色身上,它具体指代的数值是不同的。

scratch_public_private_p4

我们之前的实例中,建立的都是公共变量,那么Scratch是否允许我们建立私有变量呢,答案是可以的。新建变量的时候,我们勾选底部的仅适用于当前角色,这样一个私有变量,就被愉快的建立了。

scratch_public_private_p5

接下来我们为小猫添加这个私有变量,注意克隆体上也会有这个变量,但因为变量是私有的,所以这里虽然使用了相同的名字,实际上却是不同的变量,我们可以这样理解:

  • 主体的“小猫的私有变量”
  • 克隆体1的“小猫的私有变量”
  • 克隆体2的“小猫的私有变量”
  • 克隆体3的“小猫的私有变量”
  • 克隆体4的“小猫的私有变量”
  • 克隆体5的“小猫的私有变量”

由于我们在克隆体诞生后,及时的做了一个修改变量的操作,所以最终,等于1的“小猫的私有变量”有且只有一个,所以当接收到消息1时,只有主体才满足私有变量等于1的条件,这样执行克隆操作的个体就被区别出来了。考虑一下如果使用了公共变量会出现什么情况呢,大家也可以亲自动手尝试一下。

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

Scratch做个不那么简单的拼图游戏(上)

2023-7-27 8:33:19

综合资讯

Scratch编程中的函数-自制积木(下)

2023-7-27 8:33:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索