Scratch少儿编程第77讲-自动确认路径轨迹

网友投稿 2020-01-06 11:04

CC哥在用Scratch编程的时候,也会经常遇到各种问题,有些问题是编程的bug,但是也有很多问题不是编程的问题,是Scratch本身的局限性造成的。不过正是这种局限性才是启发思维和创造的动力。

CC哥在之前讲座的时候曾经想对不规则图形进行涂色,这个过程遇到了很多问题,比如难点之一是如何确认不规则图形的内部点,CC哥还没有解决掉。不过在攻关过程中,CC哥解决了不规则图形的轮廓轨迹确认的问题,可以今天跟大家分享一下。

先看看小例子:

https://cdn.china-scratch.com/timg/200108/1104263b8-0.gif

大家看到没,小企鹅是沿着蓝色的路径轨迹在行走,并且一直走到绿旗的终点。这个路径是完全不规则的,那么怎么实现呢?

轨迹角色

https://cdn.china-scratch.com/timg/200108/11042I059-1.jpg

首先是路径角色,这个是CC哥自己画的。路径的难点在于程序如何去确认起点和终点。有几种方法:

1:用线扫描的方法,CC哥的起点确认就是用了从左到右,从上到下的线扫描的过程。但是用这个方法就需要,你的起点要是整个图形的最左边。如果不是的话就无法确认了,比如下图:

https://cdn.china-scratch.com/timg/200108/11042T129-2.jpg

如果用线扫描,那么得出的起点就是画圈的部分,因为这个点才是图形的最左端。

2:第二种方法就是设定起点参照物,然后找出离参照物最近的点,不过这个方法CC哥没有去做,大家如果有兴趣的话可以自己试试。(这种方法就是要先找外轮廓的轨迹,然后每一个点去比较和参照物的距离,然后再确认起点和终点)

轨迹记录角色

https://cdn.china-scratch.com/timg/200108/11042V153-3.jpg

这个轨迹记录的角色,就是一个小红点,CC哥是用这个小红点去找出路径的轨迹的。这个小红点的大小也非常有关系,不能太小和太大,否则的话很容易陷入死循环,这就是Scratch本身的限制导致的。

https://cdn.china-scratch.com/timg/200108/11042SJ0-4.gif

其他的企鹅,岩石,旗子都是辅助角色,没必要特别介绍了。

程序设计的逻辑

做这个程序跟走迷宫的程序有些类似,需要用递归的方式处理。

1:先找到路径的起点。

2:沿着起点进行路径轮廓的扫描。

在轨迹扫描的时候要知道如何判断扫描结束,在这里CC哥用了一个绿旗子作为扫描的终点,这是最简单的方法。

https://cdn.china-scratch.com/timg/200108/1104295461-5.jpg

CC哥用了一些自定义的积木来实现扫描过程,CC哥用的是走迷宫的逻辑来记录轮廓轨迹:

1:先判断左手边是否为路径,2:如果左手边已经为路径了,那么再判断前方是否为路径。3:如果前方也是路径了,那么判断右方是否为路径。4:如果右方还是路径的情况下,继续判断右方。这些判断一旦为否,那么全部回到第一步,确认左边是否为路径。

https://cdn.china-scratch.com/timg/200108/1104295609-6.jpg

这部分代码就是这个逻辑。

在这里,CC哥用了列表记录轨迹,轨迹坐标是X,和Y轴的坐标组成,所以要记录轨迹坐标,就需要两个列表,一个列表用来存X轴坐标,一个列表用来存Y轴的。(程序种轨迹列表,和外部轮廓列表实际都是一样的,大家自己做的时候可以只用一个就行了。)

确认外部轮廓首先要找到一个起点,起点用线扫描的程序来做,这部分CC哥不介绍了,就是让小红点角色从上左到右,从上到下一步一步的走,当碰到路径的时候,就开始调用调用上面的代码进行路径的轮廓轨迹确认和记录。

https://cdn.china-scratch.com/timg/200108/1104313M1-7.jpg

这段主程序因为CC哥开始做的时候有其他的编程目标,所以写的有点复杂,大家可以照着自己的思路做。

企鹅行走编程

企鹅的程序不复杂,就是沿着轨迹的坐标一步一步走就好了,轨迹就是列表里的坐标。

https://cdn.china-scratch.com/timg/200108/1104325925-8.jpg

需要注意的是:

1:在路径轨迹扫描的过程中,不要有角色挡住路径,否则路径扫描就会不完整。无法得到完整的路径。所以先要把企鹅隐藏掉,等轨迹记录完之后再显示出来。

2:企鹅角色有一个朝向的问题,所以CC哥根据每一步是往前走还是往后退,来设定角色的朝向,是朝前还是朝后。大家注意X和X1这两个变量就是用来判断前一步和后一步的关系。

本讲座的目标

本篇讲座的目标就是让大家学会如何根据颜色进行轨迹扫描,可以用在走迷宫,形状的轨迹确认,以及角色走不规则的路径等。

另外,假设我把颜色判断改成了角色碰撞的判断,同时把轨迹角色设置成透明,那么你就会发现企鹅会沿着一条你看不见的路径在行走,是不是也有意思呢?


·END·

跟我学Scratch编程

不用花钱成为Scratch高手

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com