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

很多初学者在Scratch3的复杂判断中会出现bug,比如下面这个程序:

黄球向右移动
蓝球向左移动

我们希望是两球相撞后同时消失,于是就写了上述两段程序。

表面上看没有问题,但是实际情况并不是两个小球同时消失,而是黄球消失,蓝球还在。

为什么呢?

原因是Scratch3编译我们的积木的时候,是有先后顺序的,并不是真正意义上的并行。程序先执行我们先拖拽的黄球积木,然后是蓝球,再黄球,再蓝球。

在相撞的时候,黄球会先判断,于是把自己隐藏,而隐藏之后,蓝球再执行,就无法碰到黄球,而导致出现bug:

黄球没了,蓝球无法执行判断程序而出现bug

我们在多线程的程序里经常遇到这种bug,而处理方法也很简单:

我们只要设定一个状态变量,不管是哪个球先判断,直接改变这个状态变量值,每个球只要判断这个值的变化而已,如下图:

所有的小球全部用状态值来判断自己当前应该所属的状态

根据上图程序,我们只要每个球判断一下自己应该所属的状态值即可。

也有同学会采用等待0.01秒的方法,让蓝球先消失后黄球再消失,这些小技巧并不能解决实质的问题,写简单的程序可以这样,稍微复杂的程序,需要精准控制的程序,我们还是需要用状态变量来确定,这个习惯对未来学习会很有帮助。

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

Scratch3最短等待时长是多少秒?

2023-3-17 10:58:44

综合资讯

Scratch3游戏开发中如何设计角色跳跃

2023-3-17 15:27:48

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