官术网_书友最值得收藏!

2.2 動作指令積木塊實例編程

在Scratch中,一個角色的動作主要包括角色移動到舞臺中某一個確切的位置(位置用點的坐標形式給出)和將角色旋轉到指定的方向。

2.2.1 實例一:田徑訓練

在Scratch的動作模塊中“移到x:××y:××”、“在××秒內滑行到x:××y:××”、“將x坐標設定為××”和“將y坐標設定為××”是4個使用絕對坐標來精確地把角色移動到舞臺的某個具體位置的指令積木塊。

1.情景介紹

在體育課上,小紅選擇的是短跑訓練,老師讓她沿直線跑道進行訓練。小紅和其他小朋友站在跑道的一端,跑道的另一端作為終點。為了讓他們準確找到終點的位置,老師在終點處立了一面小紅旗。小紅和小朋友都蓄勢待發,等待老師的口令。

2.場景搭建

在小紅的短跑訓練中,首先要確定跑道,設定跑道的起點位置為(-200,20),終點位置(也就是紅旗所在的位置)為(200,20),從角色庫“物品”中找到“Green Flag”,運用Scratch中自帶的繪圖工具將其改為紅色(如何修改顏色第3章會詳細講解)并命名為“Red Flag”,搭建效果如圖2-9所示。小紅應該站在跑道的起點位置(-200,20),而小紅的目標位置為(200,20)。

3.腳本編寫

(1)小紅腳本的編寫。首先設定開始跑步前小紅在舞臺上的位置。因為跑道的起點位置是(-200,20),所以小紅的起點位置也是(-200,20)。把動作模塊的“將x坐標設定為××”和“將y坐標設定為……”指令積木塊拖到小紅的腳本區,并進行坐標設置,如圖2-2所示。為了更加清晰地看到她的位置,選中動作模塊中的“x坐標”和“y坐標”復選框即可,如圖2-3所示。單擊小綠旗運行程序,就會看到如圖2-4所示的效果,小紅站在跑道的起點上了。

978-7-111-55945-0-Chapter02-3.jpg

圖2-2 設置跑道起點指令積木塊

978-7-111-55945-0-Chapter02-4.jpg

圖2-3 設置坐標顯示在舞臺指令積木塊

978-7-111-55945-0-Chapter02-5.jpg

圖2-4 小紅的起點位置

其次,要體現出小紅從跑道的起點到跑道的終點。小紅沖刺的位置就是小紅旗的坐標位置(200,20),小紅跑到跑道終點時,小紅的終點坐標為(200,20),利用“移到x:××y:××”指令積木塊便可一步實現,如圖2-5所示。然而小紅跑到終點并不是瞬間完成的,需將“移到x:××y:××”改成“在××秒內滑行到x:××y:××”,如圖2-6所示。至此,小紅終于順利地完成了整個動作。小紅在跑步過程中的所有腳本如圖2-7所示。

978-7-111-55945-0-Chapter02-6.jpg

圖2-5 跑道終點坐標設置

978-7-111-55945-0-Chapter02-7.jpg

圖2-6 跑步過程腳本

978-7-111-55945-0-Chapter02-8.jpg

圖2-7 小紅在跑步過程中涉及的所有腳本

(2)小紅旗的腳本。小紅旗位于跑道終點,其坐標位置為(200,20),使用和圖2-2一樣的指令積木塊就可以了。小紅旗的腳本如圖2-8所示。

978-7-111-55945-0-Chapter02-9.jpg

圖2-8 小紅旗的腳本

4.運行效果

圖2-9所示是小紅在跑道起點時的狀態,圖2-10所示是小紅跑到終點時的狀態。

978-7-111-55945-0-Chapter02-10.jpg

圖2-9 小紅在跑道起點

978-7-111-55945-0-Chapter02-11.jpg

圖2-10 小紅在跑道終點

2.2.2 實例二:踢足球

小紅進行短跑訓練的同時,小明也進行著足球訓練。小明跑向足球時會遇到以下兩種情況,一種情況是直接向足球跑去,另一種情況是繞過障礙物跑向足球。在踢足球這項運動中,涉及小明和球,從而發生相對運動;在踢足球這個情境中,涉及小明和球兩個角色。小明和球的運動是相對的,所以在編寫腳本的過程中就需要用到與相對坐標有關的動作指令積木塊。

1.小明徑直跑向足球

(1)情景介紹:小明站在不同的位置,通過助跑將處于球門區外的足球朝球門踢出,從而射門進球。

(2)場景搭建:為了實現小明跑向足球的整個過程,需要先任意選擇一個足球場,然后添加小明和足球這兩個角色。足球可以從角色庫“物品”中選擇“Soccer ball”(此處為了方便大家觀察足球的旋轉,添加的足球是“從本地文件中上傳角色”并命名為“Soccer ball1”),搭建效果如圖2-14所示。在射門的過程中,小明是運動的,而足球是相對靜止的,這時可以把足球可看成一個定點,而小明是一個動點。

(3)腳本編寫。

1)足球腳本的編寫。因為小明進行的是定點射門訓練,所以足球處于固定位置。為了方便起見,把足球的初始位置設為(0,0),其腳本如圖2-11所示。

978-7-111-55945-0-Chapter02-12.jpg

圖2-11 足球的腳本

2)小明腳本的編寫。小明有兩種方法可以跑向足球,一種方法是首先設定小明的初始位置,這里設置為(-200,150),然后小明要跑向足球,利用“將x坐標增加××”和“將y坐標增加××”指令積木塊,分別輸入x坐標增加的數值和y坐標增加的數值,實現小明移動到足球。腳本如圖2-12所示。

小明跑向足球的另一種方法是利用“面向××”和“移到××”兩個指令積木塊。第一個指令積木塊使角色面向鼠標指針或者其他角色,單擊下拉按鈕即可進行選擇,在此情景中小明面向足球,所以選擇足球角色的名稱Soccer Ball1。第二個指令積木塊是移動角色到鼠標指針或者其他角色位置,小明移動到足球位置,單擊下拉按鈕,選擇足球即可,如圖2-13所示。需要注意的是,使用“面向××”這個指令積木塊,角色在移動時是面向當前方向進行移動的。

978-7-111-55945-0-Chapter02-13.jpg

圖2-12 小明移動到足球的方法一

978-7-111-55945-0-Chapter02-14.jpg

圖2-13 小明移動到足球的方法二

(4)運行效果。小明和足球的初始位置效果如圖2-14所示。圖2-15所示的是利用方法一小明移動到足球的效果,圖2-16所示的是利用方法二小明移動到足球的效果。

978-7-111-55945-0-Chapter02-15.jpg

圖2-14 小明和足球的初始位置

978-7-111-55945-0-Chapter02-16.jpg

圖2-15 利用方法一小明移到足球處的效果

978-7-111-55945-0-Chapter02-17.jpg

圖2-16 利用方法二小明移到足球處的效果

以上兩種方法都可以實現小明站在最初的位置跑向足球,這兩種方法呈現出的結果會略有差別。

2.小明繞過障礙物跑向足球

(1)情景介紹:足球場上總是很熱鬧,小明在練習定點射門時,常常會碰到其他小朋友也在足球場做運動,他不能直接跑向足球,而是需要繞過小朋友或其他障礙物跑向足球處。

978-7-111-55945-0-Chapter02-18.jpg

圖2-17 小明繞過障礙物的路線圖

(2)場景搭建:小明繞過其他角色跑向足球,此處需要在圖2-14所示場景的基礎上再添加一個新角色——小明的同學。從角色庫的“人物”中選擇名為“Kai”的人物,并修改名字為“小明的同學”。為實現小明繞過其同學跑向足球的過程,其前進的路線可為圖2-17所示箭頭所指的方向。

(3)腳本編寫。

1)小明腳本的編寫。這個過程利用的指令積木塊是“面向××方向”和“移動××步”。“面向××方向”指令積木塊使角色面向特定的方向(0°表示向上,90°表示向右,180°表示向下,-90°表示向左),方向通過下拉按鈕進行選擇,也可以進行輸入設置。“移動××步”指令積木塊使角色移動指定的步長,輸入的數值為正表示向前移動,輸入的數值為負表示向后移動。圖2-18中的輸入的數值都是編寫腳本過程中測試得到的數值。為了更加清晰明了地顯示小明的運動過程,可以使用控制模塊中的“等待××秒”的指令積木塊。這個指令積木塊的意思是等待幾秒后,再進行下一個動作。關于控制模塊的內容將在第6章進行詳細介紹。小明跑向足球的腳本如圖2-18所示。為了在屏幕上顯示出小明的方向,可以選中動作模塊中的“方向”復選框,如圖2-19所示。

978-7-111-55945-0-Chapter02-19.jpg

圖2-18 小明跑向足球的腳本

978-7-111-55945-0-Chapter02-20.jpg

圖2-19 顯示方向設置

2)小明腳本分析。使用“面向××方向”指令積木塊能將角色旋轉到任意一個角度。如果只是要面向上、下、左、右方向,那么使用該積木塊中的下拉菜單即可快速選擇,至于其他的方向,則需要在該指令積木塊的參數中指定。

在Scratch中,以角色自身中心位置為軸,可順時針方向定義角色所面對方向的角度值,也可以逆時針定義角色所面對方向的角度值。如圖2-20所示,如果按順時針定義方向,角度值為正值,0°表示向上,90°表示向右,270°表示向左,180°表示向下;如果按逆時針定義方向,則角度值為負值,0°表示向上,-90°表示向左,-270°表示向右,-180°表示向下。

在Scratch中,角色的東、南、西、北和地理書中所講的“上北、下南、左西、右東”所指的含義相同。例如,225°和-135°都指的是西南方向,如圖2-20所示。

978-7-111-55945-0-Chapter02-21.jpg

圖2-20 Scratch中,旋轉方向與度數的對應關系

3)小明運動的所有腳本。

小明通過不同的方法均可以踢到足球,從而使足球運動。為了幫助大家更加清晰明了地掌握小明在不同運動環境下所使用的不同腳本,這里對小明使用過的所有腳本進行了整理,如圖2-21所示。

978-7-111-55945-0-Chapter02-22.jpg

圖2-21 小明運動的所有腳本

4)運行效果。

通過以上的腳本編寫,實現了小明繞過同學跑向足球的過程,等待1秒前的位置如圖2-22所示,等待1秒后到達的位置如圖2-23所示。

978-7-111-55945-0-Chapter02-23.jpg

圖2-22 小明等待一秒前

978-7-111-55945-0-Chapter02-24.jpg

圖2-23 小明等待一秒后

3.足球的運動

下面介紹一下足球是如何旋轉著進入球門的。

(1)情景介紹:在小明跑向足球時,將足球看成定點。當小明踢到足球后,小明停下來,而足球開始運動,這時足球變成了動點,小明則是定點。

(2)場景搭建:小明將足球踢出后,足球便會運動。運動的足球可以分成兩個狀態,即原地旋轉和前行之后旋轉減弱。

(3)腳本編寫。

1)足球原地旋轉。足球旋轉需要用到動作模塊中與旋轉相關的指令積木塊。如果足球按照一個度數持續轉動就會呈現出旋轉的效果,保持持續的動作會涉及控制模塊中的“重復執行××次”指令積木塊。該指令積木塊的意思是在執行下一個指令前重復特定次數指令積木塊內部的指令。當小明剛踢到足球時,由于作用在球上的力很大,因此球會轉得很快。

利用“重復執行”和“向右旋轉90°”指令積木塊便可呈現出足球旋轉的效果,腳本如圖2-24所示。為了更加清楚地看到足球旋轉的效果,可以改變旋轉的度數為180°,并且添加了每旋轉180°移動1步,腳本如圖2-25所示。

978-7-111-55945-0-Chapter02-25.jpg

圖2-24 足球原地慢速旋轉

978-7-111-55945-0-Chapter02-26.jpg

圖2-25 足球原地快速旋轉

2)足球進入球門。足球進入球門,并不會馬上停止下來,還有一個原地旋轉的過程。足球如何進到球門里面,一種解決辦法是知道球門在舞臺上的確切坐標位置,但是這個坐標位置應該是有范圍的,因為球門是有面積的,并不是一個點;還有一種解決辦法是利用“移到××”指令積木塊。該指令積木塊可以讓角色移到鼠標指針或其他角色的位置,所以當程序運行時,讓鼠標指針落在球門范圍內,足球就會移到球門里了,腳本如圖2-26所示。足球進入到球門后,在將要停止時移動速度和旋轉角度會變慢,所以旋轉度數設置的值可以小一些,設置足球向右旋轉的值為15°,腳本如圖2-27所示。

978-7-111-55945-0-Chapter02-27.jpg

圖2-26 射門足球

978-7-111-55945-0-Chapter02-28.jpg

圖2-27 足球射門后至停止

3)足球的所有腳本。

在足球的整個運動過程中,足球應用到的所有腳本如圖2-28所示。

978-7-111-55945-0-Chapter02-29.jpg

圖2-28 足球的所有腳本

4.運行效果

小明剛踢到足球時,足球會旋轉(見圖2-29),然后將鼠標移到球門范圍內,足球被射進了球門,如圖2-30所示。

978-7-111-55945-0-Chapter02-30.jpg

圖2-29 足球原地旋轉

978-7-111-55945-0-Chapter02-31.jpg

圖2-30 足球被射進球門

主站蜘蛛池模板: 柳江县| 陆河县| 建瓯市| 高唐县| 德清县| 河东区| 兖州市| 宜阳县| 昭觉县| 枣庄市| 北京市| 固始县| 澜沧| 天台县| 天水市| 班戈县| 聂拉木县| 林甸县| 崇义县| 南昌县| 连城县| 石景山区| 林芝县| 吴桥县| 方正县| 禹州市| 平谷区| 昌宁县| 周宁县| 招远市| 西藏| 乐昌市| 松原市| 玛曲县| 东明县| 敦煌市| 沅陵县| 大庆市| 南昌市| 肥城市| 安康市|