Scratch案例——無人駕駛汽車

(本文為前一篇文章《理解編程語言只需四個詞-編程知識體系介紹(帶python及scratch案例)》的說明案例之一)

下面我們用Scratch做一個無人駕駛汽車的小程序來具體說明下編程系統(tǒng)。


7.1 程序編寫步驟

第一步:確定這個程序的目標

這個案例中我們要做一個能夠自己躲避障礙、決定速度的小車搭伤。

第二步:將目標分解

我們想要汽車具備如下幾個功能:

(1)遇到障礙物自動換向缕粹;

(2)遇到屏幕邊緣自動改變方向丧蘸;

(3)前方無障礙物的時候乾蛤,加速行駛蝗敢;

(4)前方一定距離內(nèi)有障礙物翅睛,減速行駛声搁;

第三步:設計原型

用最簡單的程序語言及圖形實現(xiàn)程序核心功能黑竞,設計一個能判斷到障礙物的距離并根據(jù)情況改變行駛方向的小車,即為原型疏旨。

第四步:完善程序

對原型進行擴展很魂,包括功能完善及各種美化效果。

第五步:擴展程序

這個案例的進一步擴展檐涝,比如添加功能莫换、以這個程序為基礎做出其他案例等。

7.2 原型設計

下面我們開始制作原型骤铃。先新建一個長方形的角色拉岁,當我們的汽車原型,命名為“車”惰爬。把原來的貓命名為“障礙”喊暖。界面和代碼如圖4.2-4.3所示。

原型界面

汽車原型.PNG

點擊小綠旗按鈕撕瞧,小車在快接近障礙物的時候能夠自動改變方向陵叽,初步實現(xiàn)了避開障礙物的功能。在這個小程序中丛版,通過偵測“到障礙物的距離”來獲得“數(shù)據(jù)”巩掺;判斷偵測的距離是否小于150屬于“運算”;“重復執(zhí)行”和“如果......那么”兩個代碼塊為“控制部分”页畦;“移動5步”及“右轉(zhuǎn)15度”為“執(zhí)行”語句胖替。這個原型雖然只有幾行代碼,但是已經(jīng)包含了“編程系統(tǒng)”四個主要組成部分:數(shù)據(jù)豫缨、運算独令、控制和執(zhí)行。這個案例還要豐富一下好芭,其本質(zhì)也是通過“編程系統(tǒng)”四個主要部分的配合完成的燃箭。

7.3 不再撞墻

我們繼續(xù)完成原型。當汽車達到舞臺邊框的時候居然穿過邊框不知去向了舍败,這不是我們想要的效果招狸。我們只需要在“重復執(zhí)行”語句中加入“遇到邊緣就反彈”命令。運行程序邻薯,汽車再也不會消失了裙戏,看看程序也只是多了一行代碼而已,如圖4.4所示弛说。

反彈

7.4 加速與減速

下面進行加速挽懦、減速的設置∧救耍基本原理也是通過判讀汽車到障礙物的距離來決定車速的大行攀痢:當距離大于300的時候冀偶,速度加到8;當距離小于150的時候渔嚷,速度降到2进鸠;當距離在150~300的時候,恢復正常默認速度5形病。在這里客年,我們用了一個變量“速度”,變量的相關內(nèi)容會在后面額章節(jié)中詳細講解漠吻,這里只需要理解為代表速度量瓜,且大小可變就可以了。調(diào)整一下數(shù)值途乃,代碼如圖4.5所示绍傲。


加速與減速代碼

現(xiàn)在我們可以對照一下上文中制定的4個具體目標挡毅,基本上全部實現(xiàn)了缸榄。

7.5 緊急掉頭

下面進入“完善程序的”的階段蛉谜,我們發(fā)現(xiàn)汽車大部分情況都能實現(xiàn)自動避開障礙物控汉,但也會出現(xiàn)一些極端情況。當車與障礙物考的太近的時候锨咙,容易讓車做圓周運動训裆,反而反復從障礙物上方經(jīng)過瞻颂,這不和常理钩骇,究其原因比藻,是因為在特殊的情況下汽車右轉(zhuǎn)20度之后仍然符合旋轉(zhuǎn)的條件,這樣就造成了循環(huán)碾壓障礙物的情況伊履。針對這種情況韩容,我們修改代碼,當距離小于60的時候唐瀑,直接轉(zhuǎn)向相反方向,并前進80步插爹,這樣就基本上避免了上述問題哄辣。同時為了增加程序多樣性,在程序開始的時候加入了旋轉(zhuǎn)隨機角度的命令赠尾,最終代碼如圖4.6所示力穗。


汽車完整代碼

7.6 添加一匹跑動的馬

障礙物小貓移動不動站在那里實在無聊,我們可以換成一匹奔跑的馬气嫁,這樣就有趣多了当窗。與小車一樣,我們?yōu)檫@匹馬也設定了遇到邊緣就折返的命令寸宵,最后馬的代碼如圖4.7所示崖面。

馬身上的代碼.PNG

運行一下程序元咙,有意思多了∥自保可是我們的汽車還用一個方塊代替庶香,這時候我們可以做一些美化的工作了,將方塊修改成小汽車简识,最后的界面如圖4.8所示赶掖。小汽車尾部的線是它的運行軌跡,記錄軌跡的方法我們會在“畫筆”的相關章節(jié)詳細講解七扰。

界面.PNG

7.7 輔助工具的使用

我們在做幾何題的時候需要添加輔助線來尋找解題思路奢赂。在編寫程序的過程中我們也可以用一些輔助的工具來提高我們的編程效率。而這些輔助工具一般都是我們根據(jù)需要自己設計編寫的颈走。如在本案例中膳灶,你一定疑惑程序中條件語句“道障礙物的距離<150”中數(shù)值150是如何得到的。你當然可以通過不停地改數(shù)值疫鹊、運行袖瞻、調(diào)整來找到最合適的數(shù)字。但這不是最佳的方法拆吆,我們可以創(chuàng)造一個輔助的工具聋迎,如下圖4.9所示。

輔助工具1

這樣枣耀,我們只需拖動小車到合適的位置霉晕,點擊角色,就會直接顯示相應的距離捞奕,簡單快捷牺堰。

本案例還用了另一個輔助工具,當你按下鍵盤上A鍵時颅围,小車就會回到坐標(0,0)的位置伟葫。這個小工具在程序調(diào)試階段發(fā)揮了重要作用,如圖4.10所示院促。

輔助工具2

這個案例完成了么筏养?其實一個程序永遠沒有真正完成的時候,可以一直變得更好常拓。我們想一想怎樣把這個程序改的更好渐溶?下面是一些提示:

1.增加障礙物數(shù)量,并讓其位置隨機分布弄抬;

2.將汽車和馬換成貓和老鼠試試茎辐;

3.加入一些故事情節(jié)。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拖陆,隨后出現(xiàn)的幾起案子弛槐,更是在濱河造成了極大的恐慌,老刑警劉巖慕蔚,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丐黄,死亡現(xiàn)場離奇詭異,居然都是意外死亡孔飒,警方通過查閱死者的電腦和手機灌闺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坏瞄,“玉大人桂对,你說我怎么就攤上這事○龋” “怎么了蕉斜?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缀棍。 經(jīng)常有香客問我宅此,道長,這世上最難降的妖魔是什么爬范? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任父腕,我火速辦了婚禮,結(jié)果婚禮上青瀑,老公的妹妹穿的比我還像新娘璧亮。我一直安慰自己,他們只是感情好斥难,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布枝嘶。 她就那樣靜靜地躺著,像睡著了一般哑诊。 火紅的嫁衣襯著肌膚如雪群扶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天镀裤,我揣著相機與錄音穷当,去河邊找鬼。 笑死淹禾,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的茴扁。 我是一名探鬼主播铃岔,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了毁习?” 一聲冷哼從身側(cè)響起智嚷,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纺且,沒想到半個月后盏道,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡载碌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年猜嘱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫁艇。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡朗伶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出步咪,到底是詐尸還是另有隱情论皆,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布猾漫,位于F島的核電站点晴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏悯周。R本人自食惡果不足惜粒督,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望队橙。 院中可真熱鬧坠陈,春花似錦、人聲如沸捐康。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽解总。三九已至贮匕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間花枫,已是汗流浹背刻盐。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留劳翰,地道東北人敦锌。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像佳簸,于是被迫代替她去往敵國和親乙墙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345