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