国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩ww,色综合狠狠操

極客小將

您現在的位置是:首頁 » scratch編程資訊

資訊內容

Scratch少兒編程第77講-自動確認路徑軌跡

極客小將2020-11-04-
CC哥在用Scratch編程的時候,也會經常遇到各種問題,有些問題是編程的bug,但是也有很多問題不是編程的問題,是Scratch本身的局限性造成的。不過正是這種局限性才是啟發思維和創造的動力。 CC哥在之前講座的時候曾經想對不規則圖形進行涂色,這個過程遇到了很多問

CC哥在用Scratch編程的時候,也會經常遇到各種問題,有些問題是編程的bug,但是也有很多問題不是編程的問題,是Scratch本身的局限性造成的。不過正是這種局限性才是啟發思維和創造的動力。

CC哥在之前講座的時候曾經想對不規則圖形進行涂色,這個過程遇到了很多問題,比如難點之一是如何確認不規則圖形的內部點,CC哥還沒有解決掉。不過在攻關過程中,CC哥解決了不規則圖形的輪廓軌跡確認的問題,可以今天跟大家分享一下。

先看看小例子:

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

大家看到沒,小企鵝是沿著藍色的路徑軌跡在行走,并且一直走到綠旗的終點。這個路徑是完全不規則的,那么怎么實現呢?

軌跡角色

upload/article/images/2020-11-04/9596229706df32ec6b80119de41bef85.jpg

首先是路徑角色,這個是CC哥自己畫的。路徑的難點在于程序如何去確認起點和終點。有幾種方法:

1:用線掃描的方法,CC哥的起點確認就是用了從左到右,從上到下的線掃描的過程。但是用這個方法就需要,你的起點要是整個圖形的最左邊。如果不是的話就無法確認了,比如下圖:

upload/article/images/2020-11-04/a02068672ef7aec19f173a896f6f0384.jpg

如果用線掃描,那么得出的起點就是畫圈的部分,因為這個點才是圖形的最左端。

2:第二種方法就是設定起點參照物,然后找出離參照物最近的點,不過這個方法CC哥沒有去做,大家如果有興趣的話可以自己試試。(這種方法就是要先找外輪廓的軌跡,然后每一個點去比較和參照物的距離,然后再確認起點和終點)

軌跡記錄角色

upload/article/images/2020-11-04/4f38b5c6254fb5c9f1d2dac28d02f706.jpg

這個軌跡記錄的角色,就是一個小紅點,CC哥是用這個小紅點去找出路徑的軌跡的。這個小紅點的大小也非常有關系,不能太小和太大,否則的話很容易陷入死循環,這就是Scratch本身的限制導致的。

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

其他的企鵝,巖石,旗子都是輔助角色,沒必要特別介紹了。

程序設計的邏輯

做這個程序跟走迷宮的程序有些類似,需要用遞歸的方式處理。

1:先找到路徑的起點。

2:沿著起點進行路徑輪廓的掃描。

在軌跡掃描的時候要知道如何判斷掃描結束,在這里CC哥用了一個綠旗子作為掃描的終點,這是最簡單的方法。

upload/article/images/2020-11-04/f0e807d0e686bd020c7da7c862e965d1.jpg

CC哥用了一些自定義的積木來實現掃描過程,CC哥用的是走迷宮的邏輯來記錄輪廓軌跡:

1:先判斷左手邊是否為路徑,2:如果左手邊已經為路徑了,那么再判斷前方是否為路徑。3:如果前方也是路徑了,那么判斷右方是否為路徑。4:如果右方還是路徑的情況下,繼續判斷右方。這些判斷一旦為否,那么全部回到第一步,確認左邊是否為路徑。

upload/article/images/2020-11-04/c5ed8481109c542dcd2a43637bf0a99f.jpg

這部分代碼就是這個邏輯。

在這里,CC哥用了列表記錄軌跡,軌跡坐標是X,和Y軸的坐標組成,所以要記錄軌跡坐標,就需要兩個列表,一個列表用來存X軸坐標,一個列表用來存Y軸的。(程序種軌跡列表,和外部輪廓列表實際都是一樣的,大家自己做的時候可以只用一個就行了。)

確認外部輪廓首先要找到一個起點,起點用線掃描的程序來做,這部分CC哥不介紹了,就是讓小紅點角色從上左到右,從上到下一步一步的走,當碰到路徑的時候,就開始調用調用上面的代碼進行路徑的輪廓軌跡確認和記錄。

upload/article/images/2020-11-04/d4ebaa60fe01000fd177ee7d19a8bc8d.jpg

這段主程序因為CC哥開始做的時候有其他的編程目標,所以寫的有點復雜,大家可以照著自己的思路做。

企鵝行走編程

企鵝的程序不復雜,就是沿著軌跡的坐標一步一步走就好了,軌跡就是列表里的坐標。

upload/article/images/2020-11-04/8a192a15e86c31c31d822883ace0fc4a.jpg

需要注意的是:

1:在路徑軌跡掃描的過程中,不要有角色擋住路徑,否則路徑掃描就會不完整。無法得到完整的路徑。所以先要把企鵝隱藏掉,等軌跡記錄完之后再顯示出來。

2:企鵝角色有一個朝向的問題,所以CC哥根據每一步是往前走還是往后退,來設定角色的朝向,是朝前還是朝后。大家注意X和X1這兩個變量就是用來判斷前一步和后一步的關系。

本講座的目標

本篇講座的目標就是讓大家學會如何根據顏色進行軌跡掃描,可以用在走迷宮,形狀的軌跡確認,以及角色走不規則的路徑等。

另外,假設我把顏色判斷改成了角色碰撞的判斷,同時把軌跡角色設置成透明,那么你就會發現企鵝會沿著一條你看不見的路徑在行走,是不是也有意思呢?


·END·

跟我學Scratch編程

不用花錢成為Scratch高手

預約試聽課

已有385人預約都是免費的,你也試試吧...

主站蜘蛛池模板: 博白县| 巨鹿县| 鲁甸县| 左权县| 新宾| 左权县| 马公市| 宁武县| 青海省| 克拉玛依市| 伊川县| 蒙城县| 永平县| 屯昌县| 吕梁市| 望奎县| 顺昌县| 黔西县| 临泽县| 和平区| 普兰店市| 江油市| 腾冲县| 花莲市| 临夏县| 理塘县| 遂宁市| 方城县| 鲁山县| 宁化县| 怀柔区| 保康县| 额济纳旗| 香港| 东光县| 清新县| 友谊县| 金门县| 昭觉县| 得荣县| 凉城县|