Scratch‎ > ‎

選擇結構、角色分身

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
(4)程式碼,如下圖。按下綠旗 按鈕,開始執行程式;按下紅色stop 按鈕,則停止執行程式。

以滑鼠控制黃點移動:(Scratch 2.0 版)
 以滑鼠控制黃點移動:(Scratch 1.4 版)

*註:
 相同於 ,注意:必須將該指令積木放置在『重複執行』迴圈內,黃點角色才會不斷重複的跟隨滑鼠移動。

3.【測試程式】:按下螢幕右上方綠旗按鈕開始執行程式。

延伸思考:【電流急急棒障礙物闖關遊戲】承上題,闖關遊戲中增加障礙物難度。【重點:學會單向選擇結構的設計與運算式(邏輯運算)的應用】。如下圖。(檔名:if-1_obstacle.sb2) 分享

  • 題目說明:
(1) 按下綠旗開始執行,當黃點被點一下,黃點會跟隨滑鼠移動。 
(2) 黃點碰到障礙物亦會失敗,3個障礙物說明如下:

    • 障礙物1:直線,會上下滑動,阻礙通路。
    • 障礙物2:十字圖形,會不斷地旋轉,阻礙通路。
    • 障礙物3:ghost 會切換造型左右飛,遇邊緣旋轉後反彈。
      • ghost 造型1→ Scratch\Media\Costumes\Fantasy\ghost2-a.png
      • ghost 造型2→ Scratch\Media\Costumes\Fantasy\ghost2-b.png

*註: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,並縮小角色,命名『球』。
    • 音效:選擇聲音→"pop"聲,再選擇聲音→"tom drum"聲。
  • 【終止線】角色:選取【  繪製新角色→繪圖編輯器→線段工具】繪製一條咖啡色線段(可搭配鍵盤【Shift】鍵,即可繪製『直線』),命名『終止線』。
2.【程式設計

(1)【終止線】角色身上寫程式碼:選取【終止線】角色→選取【程式】即可編輯程式碼,如下圖;安置於舞台下方。


(2)【板子】角色身上寫程式碼:選取【板子】角色選取【程式】即可編輯程式碼,如下圖;板子』角色放置於『終止線』角色的上方。



(3)【球】角色身上寫程式碼:
  • 在【球】角色→選取【程式】即可編輯程式碼,如下圖;將【球】放置於(0,0)座標,當球被點一下,球即向下掉落(↓180方向),碰到邊緣即反彈。
  • 如果球碰到黑色板子,即往上以隨機亂數-80~80產生彈跳方向值,並發出"pop"聲。
  • 如果球碰到終點線,則發出"tom drum"聲,並結束遊戲。
 Scratch 2.0 版:
 Scratch 1.4 版:


3.【測試程式】:按下螢幕右上方綠旗按鈕開始執行程式。

延伸思考:承上題,打磚塊。【重點:學會單向選擇結構的設計與『控制』類別中廣播 & 接收到〉及角色分身的設計與應用。執行畫面如下圖。

 分享(檔名:if-2_bricks.sb2)分享2 (建議以〈角色分身〉積木設計磚塊。if-2_bricks+clone.sb2)

【圖1】遊戲開始畫面:
 【圖2】遊戲失敗的畫面:  【圖3】成功過關的畫面:
  • 題目說明:
(1)【圖1】為遊戲開始的執行畫面,滑鼠移至球上,當球被點一下,球即向下掉落開始彈跳,碰到邊緣即反彈,如果球碰到黑色板子即往上彈跳。
(2)舞台上方有12個磚塊,當球打到磚塊,球會反彈,並發出音效,磚塊亦會消失,左上方會記錄打到的磚塊數。
(3)滑鼠可以控制黑色板子於舞台下方左右水平移動。
(4)如果球碰到舞台下方終點線,會出現【圖2】失敗畫面。如果磚塊全部都被打中,則出現【圖3】成功過關畫面,且球會消失。


二、雙向選擇結構

  • 如果條件成立時,執行「如果」下方嵌入的程式碼,當條件不成立時,執行「否則」下方嵌入的程式碼,雙向選擇結構積木在「控制」類別中。

雙向選擇結構

 範例3:太空船向上升空。【重點:學會雙向選擇結構的設計與應用】。執行畫面如下圖。(檔名:if-spaceship.sb2)  分享

  • 題目說明:太空船向上升空。
(1) 太空船準備升空,造型:spaceship-b。
(2) 當按一下太空船身即開始向上升空,造型:spaceship-a。
(3) 升空期間船身會不斷變顏色,漸漸縮小及透明,並發出聲音,最後消失在天際。

     

1.
【場景設計】

(1)開新檔案:先【檔案→開新檔案】,再於『角色區』的『貓咪』角色身上【按下右滑鼠鍵→選取『刪除』】,即刪除貓咪的角色。
(2)舞台繪製:如下圖,選取【舞台→背景繪圖編輯器→轉換成向量圖→矩形→油漆桶:將圖形上色→選色→選填色樣式】,即完成舞台背景製作。

(3)新增角色:匯入太空船圖案:從角色倉庫中選擇裝扮→分類→交通工具→Spaceship。
→選取『造型』:即可顯示
spaceship-a及spaceship-b兩種造型
→選取
『音效』:選擇聲音→在音效庫:分類→電子spiral
 
2.【程式設計

(1)在Spaceship太空船角色身上編撰程式碼:如下圖。


3.【測試程式】:按下螢幕上方綠旗按鈕開始執行程式,太空船先定位準備發射,後再移動滑鼠點按太空船,太空船會向上升空,並不斷發聲、船身越來越小及變透明,最後消失。


 範例4:蓋章遊戲。【重點:學會雙向選擇結構的設計與『蓋章』積木之應用】。執行畫面如下圖。(檔名:if-stamp.sb2)  分享

if-ex2_執行畫面
  • 題目說明:
(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 在控制類別指令中增加了『角色分身積木』,其與畫筆類的蓋章』積木之共同點,皆可在舞台上顯示一個角色的圖像多次;但差異處在於蓋章』積木僅是顯示圖像,不具備任何互動功能(即不能在其身上編撰程式積木),佔系統資源很少;而分身』是一個真正的角色,可在分身上編撰程式積木,與使用者可互動,故占用較大的系統資源。
  • 角色分身積木』包含三個積木:
    • 當分身產生時事件: 創建一個角色的分身時觸發,可將程式積木編撰於此事件中,分身製作後即可執行。
    • 創造角色的分身: 可製造角色本身的分身,或其他角色的分身。
    • 刪除這個分身: 分身提供動態建立及刪除角色,以提升程式之效率;若分身不再使用,可將其刪除,以減少系統之資源。

  • 例如: 動畫初探→作業1:機器人共舞【重點:學會指令區積木、腳本區、及角色分身之應用】。(檔名:ex1-5_robot_clone.sb2 分享

    • 題目:機器人共舞,左右移動,當碰到邊緣即反彈,並增加顏色特效或造型變化。
→小舞台佈置:
 →角色佈置:
  • 在 robot 角色身上編撰程式碼:如下圖,產生4個 robot 角色分身



 範例5:鬼影追追追遊戲,承上範例1電流急急棒遊戲】中增加5個大小不一的 ghost 飄移,以提升闖關難度。【重點:學會選擇結構及角色分身的設計與應用】(檔名:if-clone.sb2)  分享
 
  • 題目說明:
(1) 按下綠旗開始執行,當黃點被點一下,黃點會跟隨滑鼠移動。 
(2) 如果黃點角色碰到急急棒外(白色),或 ghost 則發出警示音效,說“失敗!再試試!”,角色座標會移回起點,並停止執行此程式。
(3) 隨機產生5個大小不一的 ghost 在舞台上飄移。提示:請以角色分身積木製作。
(4) 如果黃點碰到終點(紅色),則發出成功音效,說“闖關成功!”,並停止執行此程式。


1.【場景設計】承上範例1(略),僅增加 ghost 角色之設計,如下:

(1)新增角色:匯入圖案:從角色倉庫中選擇→分類→魔幻→Ghost1。
 

2.【程式設計承上範例1(略),僅增加 ghost 角色之設計:

(1)在 ghost 角色身上編撰程式碼:如下圖。


(2)程式碼,如下圖。按下綠旗 按鈕,開始執行程式;按下紅色stop 按鈕,則停止執行程式。


homework 作業1:射擊5隻蝙蝠遊戲。【學會『選擇結構』與角色分身』積木的設計與的應用】。執行畫面如下圖。 題目說明 (檔名:if-4.sb2)  分享

ex3-執行畫面  題目說明:

 (1) 按下綠旗開始執行,瞄準跟隨著滑鼠移動
 
(2) 當按下滑鼠,則顯示『發射』,否則顯示『準心』圖案。

 
準心
準心
發射
發射



homework 作業2:小狗過街。【學會『選擇結構』及『運算式』的應用】。執行畫面如下圖。(檔名:if-5.sb2)  分享

遊戲開始畫面:
  遊戲結束畫面:
  小狗成功過街畫面:
  • 題目說明:
(1) 使用鍵盤上、下、左、右等方向鍵控制小狗的位置,小狗自上方街道穿越4個車道過街,若碰到汽車,則顯示被撞『X』畫面,遊戲終止。
(2) 若小狗成功過街,到達後就說“到達對街!”,遊戲終止。
(3) 左、右各2個車道,車道上汽車為隨機由一端行駛消失,再由另一端出現行駛。
  • 提示:鍵盤操控(按下:上、下、左、右移鍵)與迴圈應用,可參閱範例【檔案→開啟舊檔】Scratch\Projects\Animation\3 Trampoline.sb
子網頁 (1): 作業:題目說明