Scratch第三十九讲:俄罗斯方块
2019-03-01 11:30
这个俄罗斯方块本来CC哥想自己做,后来看到网上有一个朋友找了个例子但是看不懂,那CC哥也先不费功夫了,就把这个例子拿出来给大家讲解一遍。说真心话,看别人的例子比自己写还累。
俄罗斯方块
这个例子还是挺复杂的,初学者确实很难看懂,CC哥也花了些时间来。这个程序的网址如下,大家有兴趣可以自己上去下载。https://scratch.mit.edu/projects/2725010/editor
阅读别人的程序也有很多好处:1:学习别人的编程技巧,即使是scratch,但也是一门编程语言,一样有很多技巧,所以多看别人的程序,会学到很多技巧。而且可以学到一些很多教程上没有的方法。2:学习别人的编程思路,一个人做程序久了,就会形成自己的固定思路,碰到一个问题就会用自己最熟悉的思路去编程。多看看别人的程序,就会看到很多新的思路,开阔自己的思维。就跟你做奥数题一样啦,不光自己做,还要看看别人的解题方法。
我们观察一下这个程序的特点,也就是比较独特的部分:1:首选我们看这个程序里有哪些角色,前面7个就是7个方块了,不好理解的是detecter这个角色。剩下的角色都好理解。我们一会再去单独谈detecter这个角色。
2:就是这个方格背景了,所有的方块都要严格的在这个方格背景里移动,这个看着简单,大家学scratch这么久了,应该知道还是有点难度的,如何做到,我们一会讨论。
5:就是当方块把某一层全部铺满的的时候,程序怎么能检测到呢?通过什么来检测呢?这是一个难点,说句实话,CC哥想了多方案,发现最后都没有设计者的构思的简单方便。
这是CC哥在分析这个程序时所发现的一些技术点,如果我们能自己想出解决的办法,或者能看懂编程者的方法,那么我们自己也就可以写这个程序了。另外一些技术点就比较容易理解,CC哥就不花篇幅讲了,比如玩这个俄罗斯方块,大家都知道角色可以选择,可以有四个方向,是不是大家第一的反应就是用角色旋转来做?而编程者就不是用旋转来做的,而是用造型来处理的。是不是很巧妙?所以当按旋转按钮的时候,程序只要选造型就好了。
程序解析
我们先从简单的问题出发,第二个问题,编程者怎么控制这些角色沿着方格来运动的。而且在移动过程中如何检测碰到其他方块?
本来这个木棍方块应该在往下走一格的,但是肯定是碰到了下面黄色方块或橙色的T字方块的边上,导致没有落下来。这就是编程者没有精准的处理好角色的尺寸。这样的问题在消除的时候也会出现。
然后我们看一下这几个方块角色的程序,基本上都一样,CC哥只简单讲这个T方块就好了:
1:当接收到T的消息,也就是说出来一个T方块,那么就往下落好了,程序不复杂,在没有碰到黑色以前(不论是其他角色和边框)一直下落,每次一格。2:如果碰到了,就回退一步,这样可以停留在被碰物体的上方。3:重点来了,当停稳后,图章! 图章命令大家学过了,就是在原地画一个该角色。这就回答了刚才第四个问题,编程者是通过图章命令来让角色停留在原地的。并不是通过克隆。
这个是用上箭头来进行方块的旋转,就是每按一次切换一个造型,其中在切换时一定要检测一下是否碰到其他角色或边框,如果碰到,就不做旋转。
这段程序是在程序开始界面里显示一下方块。
这段程序是在方格的右上角提醒下一个要出现的方块的样子。
关于检测和消除这部分是程序里难度最大的部分,CC哥下一课再跟大家讲。
需要更精彩的Scratch3.0版本俄罗斯方块游戏的,请移步到这里,https://www.51scratch.com/85.html。
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com