国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩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人預約都是免費的,你也試試吧...

主站蜘蛛池模板: 盐亭县| 顺平县| 元江| 丹江口市| 威海市| 塘沽区| 温州市| 平利县| 大名县| 景泰县| 南城县| 天津市| 乃东县| 鹤庆县| 淄博市| 马公市| 桂阳县| 石楼县| 漳平市| 凤庆县| 巴林右旗| 三亚市| 赤峰市| 巴东县| 佛山市| 巴彦淖尔市| 铁力市| 宁都县| 肥东县| 土默特右旗| 铜鼓县| 象山县| 吐鲁番市| 永宁县| 濉溪县| 稻城县| 扎赉特旗| 玉林市| 临泽县| 安达市| 岳西县|