搜索

Scratch3在同时发生的判断中如何确保准确度

2023-03-17 11:53:39

很多初学者在Scratch3的复杂判断中会出现bug,比如下面这个程序:
黄球向右移动
蓝球向左移动
我们希望是两球相撞后同时消失,于是就写了上述两段程序。 表面上看没有问题,但是实际情况并不是两个小球同时消失,而是黄球消失,蓝球还在。 为什么呢? 原因是Scratch3编译我们的积木的时候,是有先后顺序的,并不是真正意义上的并行。程序先执行我们先拖拽的黄球积木,然后是蓝球,再黄球,再蓝球。 在相撞的时候,黄球会先判断,于是把自己隐藏,而隐藏之后,蓝球再执行,就无法碰到黄球,而导致出现bug:
黄球没了,蓝球无法执行判断程序而出现bug
我们在多线程的程序里经常遇到这种bug,而处理方法也很简单: 我们只要设定一个状态变量,不管是哪个球先判断,直接改变这个状态变量值,每个球只要判断这个值的变化而已,如下图:
所有的小球全部用状态值来判断自己当前应该所属的状态
根据上图程序,我们只要每个球判断一下自己应该所属的状态值即可。 也有同学会采用等待0.01秒的方法,让蓝球先消失后黄球再消失,这些小技巧并不能解决实质的问题,写简单的程序可以这样,稍微复杂的程序,需要精准控制的程序,我们还是需要用状态变量来确定,这个习惯对未来学习会很有帮助。

← 返回 Scratch 资讯  |  意见反馈

微信二维码 微信扫码关注 抖音二维码 抖音扫码关注