我們要用Scratch編寫一個小動畫:小貓依次走過雪地、沙漠、海灘、城市,走遍全世界(如圖1)。這個動畫雖然簡單,但我們可以學(xué)到事件組模塊的功能,條件判斷的使用和背景的切換。
1. 腳本規(guī)劃與流程設(shè)計
腳本規(guī)劃就是根據(jù)動畫選擇與編程主題相關(guān)的角色、背景和相關(guān)指令腳本。
1) 背景選擇:需要選擇不同的地方作為背景。舞臺背景依次選擇雪地Aritic—沙漠Desert—海灘beatch malibu—城市Metro。
2) 角色選擇:保留小貓作為主角。
流程設(shè)計,當(dāng)綠旗被點擊后,小貓從左到右移動,到達(dá)右側(cè)邊緣后回到起始點,同時背景切換為其他背景,小貓繼續(xù)移動,周而復(fù)始。
2. 事件組模塊的積木功能和意義
在事件組中,共有8個不同積木。它們的功能如圖2所示。
本動畫我們會使用“廣播消息”和“當(dāng)接收到消息”。
3. 基本設(shè)置和背景設(shè)置
角色從左到右移動,因此,我們將角色的起始點設(shè)為左側(cè)(X-220,Y-110)這個位置,緊接著是對角色大小、移動、造型變換做一個基本設(shè)置(如圖3)。
我們要規(guī)定舞臺的第一個背景,即每次程序執(zhí)行時都是這個背景。選擇外觀模塊區(qū)的“換成Aritic背景”(如圖3)。
4. 條件判斷與X坐標(biāo)的值
小貓執(zhí)行圖3腳本后,可以完成從左到右的移動了,但移動到最右邊就一直待在那里,如何讓角色回到起始點呢?顯然,我們需要加上一個條件才可以實現(xiàn)角色回到起始點。選擇控制模塊組的表示條件判斷的積木“如果…那么”。
然后,思考“如果”后面的條件是哪些呢?由于角色在到達(dá)最右側(cè)時要碰到舞臺的邊緣,所以,第一個條件就是偵測模塊組的“碰到舞臺邊緣”。注意:這個指令在“碰到鼠標(biāo)指針”里,點擊倒三角打開下拉菜單選擇。
測試時,你會發(fā)現(xiàn)當(dāng)角色返回起始點時,很容易碰到舞臺左側(cè)邊緣產(chǎn)生Bug。所以,第二個條件要保證角色離開起始點后碰到舞臺右側(cè)邊緣才會執(zhí)行下一指令。在這里,我們引入了角色運動模塊組的“X坐標(biāo)”,再結(jié)合運算模塊組的運算符指令“大于”。將兩者組合成“X坐標(biāo)>0”,X坐標(biāo)大于角色定位的X值即可。
最后,選取運算模塊組的指令“與”將兩個條件合并在一起(如圖4)。
5. 廣播消息
當(dāng)角色符合“如果…”的兩個條件時,“那么…”后面接“廣播消息1”。通過發(fā)廣播給另一個角色,當(dāng)對方接收到消息后,可以執(zhí)行下一指令。當(dāng)然,廣播也可以發(fā)給自己。所以,“當(dāng)接受到消息1”后,角色小貓就返回到起始點。
6. 背景切換
當(dāng)接收到消息的同時背景需要切換為下一背景。使用外觀模塊組的“下一個背景”完成背景切換。我們也可以選擇“換成下一個背景”來實現(xiàn)背景的切換。
7. 程序檢測
至此,整個程序完成。我們要對程序進(jìn)行反復(fù)檢測與驗證,看是否有多余指令,盡力做到程序通暢,避免Bug(如圖5)。
總結(jié):走遍全世界這個案例的編程,我們主要使用了廣播和條件判斷來完成它。我們還可以用其他不同的程序來達(dá)到一樣的效果,因為我們相信,通過不斷的學(xué)習(xí),大家一定可以掌握更多的編程方法。
在幾何中簡單的線條可以組合成不同的幾何圖形,比如圓是以一個定點為中心(圓心),以一定長度(半徑)旋轉(zhuǎn)一周所形成的封閉曲線。像圓、正方形、三角形這些都是基礎(chǔ)的幾何圖形,當(dāng)基礎(chǔ)幾何圖形通過旋轉(zhuǎn),平移可以組成精美圖案,不信來看看下面這些圖片。這些是三角形、長方形、五邊形通過簡單的旋轉(zhuǎn)和平移得出的圖案(如圖1)。
看到設(shè)計精美的圖形我相信大家都已經(jīng)迫不及待了,今天我們就來講一講如何用Scratch畫出精美的圖形。
一般來說要設(shè)計圖形的時候,不能著急寫程序,先觀察梳理才能事半功倍。觀察圖形的時候先問自己,這個圖形是由哪些簡單圖形構(gòu)成的,也就是先拆解圖形。
在繪制圖形時我們會用到Scratch的擴(kuò)展工具——畫筆。在使用畫筆時要記住三步法:一擦、二選、三落。
而且繪制圖形常常會用到循環(huán)結(jié)構(gòu),而復(fù)雜的則會用到循環(huán)嵌套,所以還是有難度的,拆解時需要仔細(xì)觀察。
今天我們選擇畫一個由多個三角形構(gòu)成的六角星(如圖2)。
觀察圖形,該圖形是由十二個小三角形構(gòu)造而成的。繼續(xù)思考,該圖形能否由一個小三角形通過旋轉(zhuǎn)加平移繪制出來?雖然有這個可能性,但是難度系數(shù)肯定不小。所以我們需要換一個思路,找一找其他方法,能否通過其他的三角形旋轉(zhuǎn)平移構(gòu)成該圖形。
這里提示一種思路——中心擴(kuò)散法,以中心點為圓心(也就是圖片中標(biāo)出紅點處),看從圓心處有沒有大的三角形以紅點為圓心通過旋轉(zhuǎn)的方式得到該圖形,這里需要一定的空間抽象能力,仔細(xì)觀察后,發(fā)現(xiàn)通過一個大的三角形旋轉(zhuǎn)六次就可以得到這個圖形(如圖3)。
圖中用三種顏色標(biāo)示出不同的三角形,黑色三角形通過紅色圓心向右旋轉(zhuǎn)60度畫出紅色三角形;紅色三角形,向右旋轉(zhuǎn)60度畫出綠色的三角形,這樣依次經(jīng)過六次旋轉(zhuǎn)可以得出一個完整的六角星。
是不是有一種恍然大悟的感覺呢?原來通過簡單的旋轉(zhuǎn)就可以解決問題。
下面我們來看看代碼部分(如圖4):
記住“一擦、二選、三落”。
一擦,首先“全部擦除”。
二選,其次定義畫筆的顏色、粗細(xì)程度等。
三落,根據(jù)需要再適時地抬筆和落筆。
根據(jù)圖5,繪制關(guān)鍵點就是圓心在三角形的一條邊中心,而不是三角形的頂點。因此不能套用我們畫三角形的步驟,需要修改(如圖5)。
這里用到了一個基本循環(huán)結(jié)構(gòu),從(0,0)坐標(biāo)開始,向右90度方向移動60步(半個邊長),然后向左旋轉(zhuǎn)120度。接下來注意,循環(huán)里面需要嵌套一個循環(huán):循環(huán)兩次,移動120步(整個邊長),向左旋轉(zhuǎn)120度,最后再次向右移動60步。就這樣一個大的三角形就繪制完成了。
之后再右轉(zhuǎn)60度,開始畫下一個大三角形。重復(fù)執(zhí)行六次就可以繪制出這個六角星了。
相對來說,繪制復(fù)雜圖形的難度還是較高的,需要一定的空間想象能力和對循環(huán)嵌套的理解。一定要記住繪圖的三步法。
接下來大家可以挑戰(zhàn)一下魔幻十字,記住中心擴(kuò)散法(如圖6)。