資訊內容
Scratch第三十一講:自動走迷宮
想了解編程技巧,就請點擊上面藍字:跟我學Scratch編程,關注CC哥
前一段時間大家在討論如何如何自動走迷宮的小程序,CC哥也抽時間做了一個,當然細節不是很完善,但是可以學習一下思路。
先看一下例子,發現沒有,實際上這就是走迷宮的最經典的做法,每逢分叉路口向左轉的走法。不過我們好好模擬一下這種走法的真實情況是什么:
1:首先這是個黑暗迷宮,你看不見路,也看不見地形,只能摸著墻去走。
2:第二因為是黑暗迷宮,所以你也沒法記住曾經走過的路,所以你只能碰到路口,繼續摸著墻往左轉。
那我們就假設自己是盲人那么這個迷宮該怎么走:
1:第一步是首先走到墻邊,摸到墻再說。
2:然后每走一步都要試探一下自己左邊還有沒有墻,如果沒有就趕緊左轉,然后再看摸到墻沒有,摸到了還要摸一下前面有沒有墻,沒有就繼續往前走。如果前面有墻就沿著墻右轉。
(有些小朋友做法是通過給走迷宮的角色加一個小辮子始終接觸在墻上,這也是一種做法,模擬手一直摸著墻,不過顯示效果不那么好看)
我們來看看程序具體怎么寫的:
CC哥把迷宮單獨做成了角色。這樣碰撞檢測起來簡單些,當然也可以把迷宮作為背景,然后去用顏色檢測來判斷。各自的習慣吧。
如何判斷到了出口,我們需要有一個出口的標志,只要碰到這個標志就算出了迷宮,CC哥簡單的用紅五角星代替了。
大家看主程序部分:
主程序很簡單,CC哥通過自定義命令積木的做法,讓程序看上去非常容易懂。主程序就是剛才講得,先檢查左邊有沒有墻,有墻沿著墻走,沒墻就先走到墻邊。那具體大家來看幾個自定義的命令積木:
先檢查左邊有沒有墻,這個碰撞檢測,之前的講座里都有,大家可以翻看一下CC哥之前的講座。
如果有墻,就沿著墻走。這個關鍵是每走一步都需要做一次檢測。也就是左轉走一步看看有沒有碰到墻,碰到了就退回,同時轉回身來。
這里面關鍵是每走一步不光要判斷左邊有沒有墻,還要判斷前面有沒有墻,如果前面有墻了,那左邊有墻,前面有墻,就必須沿著墻向右轉繼續走。所以這里面又嵌套了另一個自定義的積木,檢測前方是否有墻。
如果剛開始的時候不在墻邊,就要先走到墻邊啦。
整個游戲大概就是這樣了。
當然走迷宮還會有更多的問題,比如走迷宮的角色不是規則怎么辦?那么在轉角的過程中就會碰到問題,需要注意解決。迷宮的地圖不規則和迷宮顏色是變化的怎么辦?還有如果想讓角色記住走過的迷宮路徑怎么辦?那就需要把整個迷宮做成網格化。這些都是可以進一步去發揮的。看大家怎么做了,都可以嘗試一下。
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除
