问题今天,我们在「青少年编程竞赛交流群」内一起讨论了一个遇到的问题。我把代码和视频放到下面,大家感觉一下。 舞台展示: 舞台中有两只一摸一样的小猫,一只在左边,一只在右边。 左边小猫的代码: 右边小猫的代码: 这两个代码,都是让小猫旋转2周。右边小猫的代码在循环中增加了一个积木块「等待(0)秒」,起初我认为这个积木块是多余的,直到运行之后才对这个积木块有了新的认知。 大家可以看下面的运行视频。 从运行结果可以发现,「等待(0)秒」会产生一个短暂的线程堵塞(看上去的0秒,其实并不是我们想象中的0秒)。从而导致左边的小猫比右边的小猫更快的完成了旋转2周的操作。 验证我们有了以上的猜测,就可以用「等待(0)秒」这个积木块来解决点击绿旗后多个角色代码执行顺序控制的问题。
我们先看下面小猫吃蛋糕的例子。 舞台展示: 小猫的代码: 点击绿旗之后,小猫移动到初始位置(X=-94,Y=-32)。按上下左右键,小猫做出相应的往上下左右走10步的动作。 蛋糕的代码: 点击绿旗之后,显示蛋糕,一直检测是否碰到小猫,如果碰到小猫就隐藏起来,并停止这个脚本。 看出来这块代码的问题了吗?我们先通过视频演示一下。 从视频中我们可以看到,小猫第一次吃掉蛋糕后,第二次运行的时候,蛋糕并没有显示。 怎么回事呢?比较靠谱的理由就是蛋糕的点击绿旗之后运行的代码先启动了,由于小猫在蛋糕的位置,所以条件语句为真,蛋糕被隐藏了。小猫代码后启动,小猫移动到初始位置,蛋糕却没有显示。 怎样解决这个问题呢,我们就可以使用「等待(0)秒」这个积木块来控制代码的执行顺序。 修改后蛋糕的代码: 增加一个「等待(0)秒」的积木块对当前的线程做一个短暂的堵塞,就不会出现上面的问题了。 我们再看一下运行的结果 总结我组建这个「青少年编程竞赛交流群」的最大益处就是能够快速获取大家的学习反馈。收集大家学习中遇到的问题,一起讨论一起解决,从而提升我们对Scratch中各个积木块的认知。 |
|