2012/08/07 謝碧景(c)編製更新
學習目標:
Scratch 提供兩種選擇結構:
Scratch官網 http://scratch.mit.edu
- 配合條件式可決定程式執行不同的區塊,包含『單向選擇結構』及『雙向選擇結構』。此類指令在【控制】類別中,以六角形的條件式積木表示,運算結果是True(成立)或False(不成立)兩種布林值。
- 條件式中會搭配運算式『算術運算』、『比較運算』(關係運算)、『邏輯運算』應用,此類指令在【運算】類別中,以綠色積木顯示:
算術運算:
→數字的加法、減法、乘法、除法、餘數運算
比較運算:(關係運算)
→大於、等於、小於
邏輯運算:
→且、或、相反
- 偵測類積木其應用層面非常之廣泛,可判斷各種碰撞及鍵盤按鍵、提供計時器及系統時間、提出問題讓使用者輸入答案等,在Scratch 2.0 增加了視訊攝影鏡頭等相關積木,可製作體感遊戲。
一、單向選擇結構
- 如果條件成立時,要執行嵌入的內部積木程式碼,當條件不成立則不執行嵌入的內部積木;此類指令在「控制」類別中。
【想一想】狗狗水平移動,當碰到舞台左右邊界則反轉後繼續行走,請以迴圈中條件控制編撰程式。【提示:舞台大小x座標為-240~240】。
分享:單向條件(loop+if.sb2)
範例1:電流急急棒遊戲。【重點:學會單向選擇結構與偵測類積木的設計與應用】。執行畫面如下圖。(檔名:if-1.sb2)
分享
- 題目說明:
(1) 按下綠旗開始執行,當黃點被點一下,黃點會跟隨滑鼠移動。
(2) 如果黃點角色碰到急急棒外(白色),則發出警示音效,說“失敗!再試試!”,角色座標會移回起點,並停止執行此程式。(3) 如果黃點碰到終點(紅色),則發出成功音效,說“闖關成功!”,並停止執行此程式。
1.【場景設計】
(1)開新檔案:先【檔案→開新檔案】,再於『角色區』的『貓咪』角色身上【按下右滑鼠鍵→選取『刪除』】,即刪除貓咪的角色。
(2)舞台繪製:繪製電流急急棒的路徑(黑色)及終點(紅色)。(3)新增角色:繪製黃色的圓點,放在電流急急棒的起點。
2.【程式設計】
(1)在黃色圓點角色身上編輯程式碼:提示→可利用顏色,限制角色之移動範圍。
- 重複執行,如果碰到急急棒外之背景白色,則發出警示音效“Screech.wav”,角色說“失敗!再試一次!”,角色座標會移回起點,並停止執行此程式。
- 如果碰到終點紅色則發出音效“ComputerBeeps1.wav”,角色說“闖關成功!”,並停止執行此程式。
(2)警示音效→ Scratch\Media\Sounds\Electronic\Screech.wav
(3)成功音效→ Scratch\Media\Sounds\Electronic\ComputerBeeps1.wav
以滑鼠控制黃點移動:(sb2)
以滑鼠控制黃點移動:(Scratch 1.4 版)
*註:相同於
,注意:必須將該指令積木放置在『重複執行』迴圈內,黃點角色才會不斷重複的跟隨滑鼠移動。
3.【測試程式】:按下螢幕右上方綠旗按鈕開始執行程式。
延伸思考:【電流急急棒障礙物闖關遊戲】承上題,闖關遊戲中增加障礙物難度。【重點:學會單向選擇結構的設計與運算式(邏輯運算)的應用】。如下圖。(檔名:if-1_obstacle.sb2)
分享
*註:Scratch中限制角色移動範圍的方式:(1)利用顏色(2)利用x,y座標。
範例2:彈跳的球。【重點:學會單向選擇結構的設計與應用】。執行畫面如下圖。(檔名:if-2.sb2)
分享
- 題目說明:
(1) 按下綠旗執行程式,滑鼠移至球上,當球被點一下,球即向下掉落開始彈跳。
(2) 滑鼠可以控制黑色板子於舞台下方左右水平移動。
(3) 如果球碰到邊緣即反彈,如果球碰到黑色板子即以-80~80度方向向上彈跳,每次移動10格。
(4) 如果球落到終點線,則遊戲結束。
1.【場景設計】
(1)開新檔案:先【檔案→開新檔案】,再於『角色區』的『貓咪』角色身上【按下右滑鼠鍵→選取『刪除』】,即刪除貓咪的角色。(2)新增角色:
- 【板子】角色:選取【
![]()
繪製新角色→繪圖編輯器→線段工具】繪製一小段黑色線段(可搭配鍵盤【Shift】鍵,即可繪製『直線』),命名『板子』。
- 【球】角色:
- 造型:從造型庫選擇『球』圖片,選取
![]()
開啟角色檔案 Scratch\Media\Costumes\Things\beachball1.png,並縮小角色,命名『球』。
*註:角色圖片去背(即背景為透明):(1)在點矩陣模式下→(2)選取點陣繪圖工具中【以顏色填滿】→(3)再選取【
不填色】→(4)點選欲去背之圖案,即可。
教學影片
- 音效:選擇聲音→"pop"聲,再選擇聲音→"tom drum"聲。
- 【終止線】角色:選取【
![]()
繪製新角色→繪圖編輯器→線段工具】繪製一條咖啡色線段(可搭配鍵盤【Shift】鍵,即可繪製『直線』),命名『終止線』。
2.【程式設計】
(1)【終止線】角色身上寫程式碼:選取【終止線】角色→選取【程式】即可編輯程式碼,如下圖;安置於舞台下方。
(2)【板子】角色身上寫程式碼:選取【板子】角色→選取【程式】即可編輯程式碼,如下圖;『板子』角色放置於『終止線』角色的上方。
(3)【球】角色身上寫程式碼:
- 在【球】角色→選取【程式】即可編輯程式碼,如下圖;將【球】放置於(0,0)座標,當球被點一下,球即向下掉落(↓180方向),碰到邊緣即反彈。
- 如果球碰到黑色板子,即往上以隨機亂數-80~80產生彈跳方向值,並發出"pop"聲。
- 如果球碰到終點線,則發出"tom drum"聲,並結束遊戲。
Scratch 2.0 版:Scratch 1.4 版:
3.【測試程式】:按下螢幕右上方綠旗按鈕開始執行程式。
延伸思考:承上題,打磚塊。【重點:學會單向選擇結構的設計與『控制』類別中〈廣播 & 接收到〉及角色分身的設計與應用】。執行畫面如下圖。
分享1 (檔名:if-2_bricks.sb2)、分享2 (建議以〈角色分身〉積木設計磚塊。if-2_bricks+clone.sb2)
【圖1】遊戲開始的畫面:【圖2】遊戲失敗的畫面: 【圖3】成功過關的畫面:
- 題目說明:
(1)【圖1】為遊戲開始的執行畫面,滑鼠移至球上,當球被點一下,球即向下掉落開始彈跳,碰到邊緣即反彈,如果球碰到黑色板子即往上彈跳。
(2)舞台上方有12個磚塊,當球打到磚塊,球會反彈,並發出音效,磚塊亦會消失,左上方會記錄打到的磚塊數。
(3)滑鼠可以控制黑色板子於舞台下方左右水平移動。
(4)如果球碰到舞台下方終點線,會出現【圖2】失敗畫面。如果磚塊全部都被打中,則出現【圖3】成功過關畫面,且球會消失。
二、雙向選擇結構
- 如果條件成立時,執行「如果」下方嵌入的程式碼,當條件不成立時,執行「否則」下方嵌入的程式碼,雙向選擇結構積木在「控制」類別中。
- 題目說明:太空船向上升空。
(1) 太空船準備升空,造型:spaceship-b。(2) 當按一下太空船身即開始向上升空,造型:spaceship-a。(3) 升空期間船身會不斷變顏色,漸漸縮小及透明,並發出聲音,最後消失在天際。
1.【場景設計】
(1)開新檔案:先【檔案→開新檔案】,再於『角色區』的『貓咪』角色身上【按下右滑鼠鍵→選取『刪除』】,即刪除貓咪的角色。
(2)舞台繪製:如下圖,選取【舞台→背景→繪圖編輯器→轉換成向量圖→矩形→油漆桶:將圖形上色→選色→選填色樣式】,即完成舞台背景製作。
(3)新增角色:匯入太空船圖案:從角色倉庫中選擇裝扮→分類→交通工具→Spaceship。
→選取『造型』:即可顯示spaceship-a及spaceship-b兩種造型。
→選取『音效』:選擇聲音→在音效庫:分類→電子→spiral。
2.【程式設計】
(1)在Spaceship太空船角色身上編撰程式碼:如下圖。
- 題目說明:
(1) 貓咪跟著滑鼠移動,如果按下滑鼠貓咪切換造型【cat1-b】說“你好!”並蓋章。
(2) 否則維持造型【cat1-a】。
1.【場景設計】
(1)開新檔案:先【檔案→開新檔案】,再於『角色區』的『貓咪』角色身上【按下右滑鼠鍵→選取『刪除』】,即刪除貓咪的角色。
(2)舞台繪製:在繪圖編輯器中以線段工具繪製井字圖案。
(3)角色:貓咪(名稱cat)有2個造型 Scratch\Media\Costumes\Animals\cat1-a.gif、cat1-b.gif,並縮小角色。
2.【程式設計】
(1)在貓咪角色身上寫程式碼:重複執行,貓咪跟著滑鼠移動,如果按下滑鼠貓咪切換造型【cat1-b】說“你好!”並蓋章,否則維持造型【cat1-a】。
(2)程式碼,如下圖。
三、角色分身積木
- Scratch 2.0 在控制類別指令中增加了『角色分身積木』,其與畫筆類的『蓋章』積木之共同點,皆可在舞台上顯示一個角色的圖像多次;但差異處在於『蓋章』積木僅是顯示圖像,不具備任何互動功能(即不能在其身上編撰程式積木),佔系統資源很少;而『分身』是一個真正的角色,可在分身上編撰程式積木,與使用者可互動,故占用較大的系統資源。
- 『角色分身積木』包含三個積木:
→小舞台佈置:→角色佈置:
- 在 robot 角色身上編撰程式碼:如下圖,產生4個 robot 角色分身。
- 題目說明:
(1) 按下綠旗開始執行,當黃點被點一下,黃點會跟隨滑鼠移動。
(2) 如果黃點角色碰到急急棒外(白色),或 ghost 則發出警示音效,說“失敗!再試試!”,角色座標會移回起點,並停止執行此程式。
(3) 隨機產生5個大小不一的 ghost 在舞台上飄移。【提示:請以角色分身積木製作。】(4) 如果黃點碰到終點(紅色),則發出成功音效,說“闖關成功!”,並停止執行此程式。
1.【場景設計】承上範例1(略),僅增加 ghost 角色之設計,如下:
(1)新增角色:匯入圖案:從角色倉庫中選擇→分類→魔幻→Ghost1。
2.【程式設計】承上範例1(略),僅增加 ghost 角色之設計:
(1)在 ghost 角色身上編撰程式碼:如下圖。
遊戲開始畫面:
遊戲結束畫面:
小狗成功過街畫面:
- 題目說明:
(1) 使用鍵盤上、下、左、右等方向鍵控制小狗的位置,小狗自上方街道穿越4個車道過街,若碰到汽車,則顯示被撞『X』畫面,遊戲終止。(2) 若小狗成功過街,到達後就說“到達對街!”,遊戲終止。
(3) 左、右各2個車道,車道上汽車為隨機由一端行駛消失,再由另一端出現行駛。
- 提示:鍵盤操控(按下:上、下、左、右移鍵)與迴圈應用,可參閱範例【檔案→開啟舊檔】Scratch\Projects\Animation\3 Trampoline.sb