選擇結構、角色分身

2012/08/07 謝碧景(c)編製更新

學習目標:

  • 瞭解運算式的種類與應用。

  • 學會單向選擇結構的設計與應用。

  • 學會雙向選擇結構的設計與應用。

  • 學會角色分身積木的設計與應用。

  • 學會事件、控制、偵測、運算指令的綜合設計與應用。

Scratch 提供兩種選擇結構:Scratch官網 http://scratch.mit.edu

  • 配合條件式可決定程式執行不同的區塊,包含『單向選擇結構』及『雙向選擇結構』。此類指令在【控制】類別中,以六角形的條件式積木表示,運算結果是True(成立)或False(不成立)兩種布林值。

  • 條件式中會搭配運算式『算術運算』、『比較運算』(關係運算)、『邏輯運算』應用,此類指令在【運算】類別中,以綠色積木顯示:

            • 算術運算:

            • →數字的加法、減法、乘法、除法、餘數運算

            • 比較運算:(關係運算)

            • →大於、等於、小於

            • 邏輯運算:

            • →且、或、相反

    • 偵測類積木其應用層面非常之廣泛,可判斷各種碰撞及鍵盤按鍵、提供計時器及系統時間、詢問問題讓使用者輸入答案等。

一、單向選擇結構

    • 如果條件成立時,要執行嵌入的內部積木程式碼,當條件不成立則不執行嵌入的內部積木;此類指令在「控制」類別中。

【想一想】狗狗水平移動,當碰到舞台左右邊界則反轉後繼續行走,請以迴圈中條件控制編撰程式。【提示:舞台大小x座標為-240~240】。 分享:單向條件(loop+if.sb3)

範例1:電流急急棒遊戲。【重點:學會單向選擇結構與偵測類積木的設計與應用】。執行畫面如下圖。(檔名:if-1.sb3) 分享

  • 題目說明:

(1) 按下綠旗開始執行,當黃點被點一下,黃點會跟隨滑鼠移動。

(2) 如果黃點角色碰到急急棒外(白色),則發出警示音效,說“失敗!再試試!”,角色座標會移回起點,並停止執行此程式。

(3) 如果黃點碰到終點(紅色),則發出成功音效,說“闖關成功!”,並停止執行此程式。

1.【場景設計】

(1)新增專案:先【檔案→新建專案】,再於『角色區』的『貓咪』角色身上【按下右滑鼠鍵→選取『刪除』】,即刪除貓咪的角色。

(2)舞台繪製:繪製電流急急棒的路徑(黑色)及終點(紅色)。

(3)新增角色:【 繪畫】黃色的圓點,放在電流急急棒的起點。

2.【程式設計】

(1)在黃色圓點角色身上編輯程式碼:提示→可利用顏色,限制角色之移動範圍。

  • 重複執行,如果碰到急急棒外之背景白色,則發出警示音效“Screech.wav”,角色說“失敗!再試一次!”,角色座標會移回起點,並停止執行此程式。

  • 如果碰到終點紅色則發出音效“ComputerBeeps1.wav”,角色說“闖關成功!”,並停止執行此程式。

(2)角色音效:警示→系統內建音效Screech.wav,成功→ComputerBeeps1.wav

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

  • Scratch 3.0 版:在『腳本區』選取【程式】頁籤,即可編撰程式碼,程式碼→參閱連結

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

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

*註:

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

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

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

  • 題目說明:

(1) 按下綠旗開始執行,當黃點被點一下,黃點會跟隨滑鼠移動。

(2) 黃點碰到障礙物亦會失敗,3個障礙物說明如下:

    • 障礙物1:直線,會上下滑動,阻礙通路。

    • 障礙物2:十字圖形,會不斷地旋轉,阻礙通路。

    • 障礙物3:ghost 會切換造型左右飛,遇邊緣旋轉後反彈。

      • ghost 角色:造型→ ghost2-a.png、ghost2-b.png

*註:Scratch中限制角色移動範圍的方式:(1)利用顏色(2)利用x,y座標。

範例2:彈跳的球。【重點:學會單向選擇結構的設計與應用】。執行畫面如下圖。(檔名:if-2.sb3) 分享

  • 題目說明:

(1) 按下綠旗執行程式,滑鼠移至球上,當球被點一下,球即向下掉落開始彈跳。

(2) 滑鼠可以控制黑色板子於舞台下方左右水平移動。

(3) 如果球碰到邊緣即反彈,如果球碰到黑色板子即以-80~80度方向向上彈跳,每次移動10格。

(4) 如果球落到終點線,則遊戲結束。

1.【場景設計】

(1)新增專案:先【檔案→新建專案】,再於『角色區』的『貓咪』角色身上【按下右滑鼠鍵→選取『刪除』】,即刪除貓咪的角色。

(2)新增角色:

Scratch 3.0 版:

Scratch 2.0 版:

  • 繪製【板子】角色:選取【 繪畫→繪圖編輯器→線條工具】繪製一小段黑色線段(可搭配鍵盤【Shift】鍵,即可繪製『直線』),命名『板子』。

  • 【球】角色:

    • 造型:從造型庫選擇『球』圖片,並縮小角色,命名『球』。

    • *註:角色圖片去背(即背景為透明):(1)在點矩陣模式下→(2)選取點陣繪圖工具中【以顏色填滿】→(3)再選取【不填色】→(4)點選欲去背之圖案,即可。 教學影片音效:選擇聲音→"pop"聲,再選擇聲音→"Basketball Bounce"聲。

  • 繪製【終止線】角色:選取【 繪畫→繪圖編輯器→線條工具】繪製一條咖啡色線段(可搭配鍵盤【Shift】鍵,即可繪製『直線』),命名『終止線』。

2.【程式設計】

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

Scratch 3.0 版:

Scratch 2.0 版:

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

Scratch 3.0 版:

Scratch 2.0 版:

(3)【球】角色身上寫程式碼:

  • 在【球】角色→選取【程式】即可編輯程式碼,如下圖;將【球】放置於(0,0)座標,當球被點一下,球即向下掉落(↓180方向),碰到邊緣即反彈。

  • 如果球碰到黑色板子,即往上以隨機亂數-80~80產生彈跳方向值,並發出"pop"聲。

  • 如果球碰到終點線,則發出"Basketball Bounce"聲,並結束遊戲。

Scratch 3.0 版:

Scratch 2.0 版:

Scratch 1.4 版:

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

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

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

【圖1】遊戲開始的畫面:

【圖2】遊戲失敗的畫面:

【圖3】成功過關的畫面:

  • 題目說明:

(1)【圖1】為遊戲開始的執行畫面,滑鼠移至球上,當球被點一下,球即向下掉落開始彈跳,碰到邊緣即反彈,如果球碰到黑色板子即往上彈跳。

(2)舞台上方有12個磚塊,當球打到磚塊,球會反彈,並發出音效,磚塊亦會消失,左上方會記錄打到的磚塊數。

(3)滑鼠可以控制黑色板子於舞台下方左右水平移動。

(4)如果球碰到舞台下方終點線,會出現【圖2】失敗畫面。如果磚塊全部都被打中,則出現【圖3】成功過關畫面,且球會消失。

二、雙向選擇結構

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

Scratch 3.0 版:

Scratch 2.0 版::

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

  • 題目說明:太空船向上升空。

(1) 太空船準備升空,造型:spaceship-b。

(2) 當按一下太空船身即開始向上升空,造型:spaceship-a。

(3) 升空期間船身會不斷變顏色,漸漸縮小及透明,並發出聲音,最後消失在天際。

1.【場景設計】

(1)新增專案:先【檔案→新建專案】,再於『角色區』的『貓咪』角色身上【按下右滑鼠鍵→選取『刪除』】,即刪除貓咪的角色。

(2) 繪製背景:

  • Scratch 3.0 版:工具畫面,左右位置的版面交換。

  • Scratch 2.0 版:如下圖,選取【舞台→背景→繪圖編輯器→轉換成向量圖→矩形(方形)→油漆桶(填滿):將圖形上色→選色→選填色樣式】,即完成舞台背景製作。

(3)新增角色:

  • Scratch 3.0 版:在『角色區→選個角色→系統內建圖案』或上傳角色圖檔。

  • Scratch 2.0 版:匯入太空船圖案→從角色倉庫中選擇裝扮→分類→交通工具→Spaceship。

→選取『造型』:即可顯示spaceship-a及spaceship-b兩種造型。

→選取『音效』:選擇聲音→在音效庫:分類→電子→spiral。

2.【程式設計】

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

Scratch 3.0 版:

Scratch 2.0 版:

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

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

  • 題目說明:

(1) 貓咪跟著滑鼠移動,如果按下滑鼠貓咪切換造型【cat1-b】說“你好!”並蓋章。

(2) 否則維持造型【cat1-a】。

1.【場景設計】

(1)新增專案:先【檔案→新建專案】,再於『角色區』的『貓咪』角色身上【按下右滑鼠鍵→選取『刪除』】,即刪除貓咪的角色。

(2)舞台繪畫:在繪圖編輯器中以線段工具繪製井字圖案。

(3)角色:貓咪(名稱cat)有2個造型 cat1-a、cat1-b,並縮小角色。

2.【程式設計】

(1)在貓咪角色身上寫程式碼:重複執行,貓咪跟著滑鼠移動,如果按下滑鼠貓咪切換造型【cat1-b】說“你好!”並蓋章,否則維持造型【cat1-a】。

(2)程式碼,如下圖。

Scratch 3.0 版:

Scratch 2.0 版:

三、角色分身積木

  • Scratch 2.0以上版本,在控制類別指令中增加了『角色分身積木』,其與畫筆類的『蓋章』積木之共同點,皆可在舞台上顯示一個角色的圖像多次;但差異處在於『蓋章』積木僅是顯示圖像,不具備任何互動功能(即不能在其身上編撰程式積木),佔系統資源很少;而『分身』是一個真正的角色,可在分身上編撰程式積木,與使用者可互動,故占用較大的系統資源。

  • 『角色分身積木』包含三個積木:

      • 當分身產生時事件: 創建一個角色的分身時觸發,可將程式積木編撰於此事件中,分身製作後即可執行。

      • 創造角色的分身: 可製造角色本身的分身,或其他角色的分身。

    • 刪除這個分身: 分身提供動態建立及刪除角色,以提升程式之效率;若分身不再使用,可將其刪除,以減少系統之資源。

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

    • 題目:機器人共舞,左右移動,當碰到邊緣即反彈,並增加顏色特效或造型變化。

→小舞台佈置:

→角色佈置:

  • 在 robot 角色身上編撰程式碼:如下圖,產生4個 robot 角色分身。

Scratch 3.0 版:

Scratch 2.0 版:

範例5:鬼影追追追遊戲,承上範例【電流急急棒遊戲】中增加5個大小不一的 ghost 飄移,以提升闖關難度。【重點:學會選擇結構及角色分身的設計與應用】(檔名:if-clone.sb3) 分享

  • 題目說明:

(1) 按下綠旗開始執行,當黃點被點一下,黃點會跟隨滑鼠移動。

(2) 如果黃點角色碰到急急棒外(白色),或 ghost 則發出警示音效,說“失敗!再試試!”,角色座標會移回起點,並停止執行此程式。

(3) 隨機產生5個大小不一的 ghost 在舞台上飄移。【提示:請以角色分身積木設計。】

(4) 如果黃點碰到終點(紅色),則發出成功音效,說“闖關成功!”,並停止執行此程式。

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

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

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

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

Scratch 3.0 版:

Scratch 2.0 版:

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

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

題目說明:

(1) 按下綠旗開始執行,瞄準跟隨著滑鼠移動

(2) 當按下滑鼠,則顯示『發射』,否則顯示『準心』圖案。

準心

發射

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

遊戲開始畫面:

遊戲結束畫面:

小狗成功過街畫面:

  • 題目說明:

(1) 使用鍵盤上、下、左、右等方向鍵控制小狗的位置,小狗自上方街道穿越4個車道過街,若碰到汽車,則顯示被撞『X』畫面,遊戲終止。

(2) 若小狗成功過街,到達後就說“到達對街!”,遊戲終止。

(3) 左、右各2個車道,車道上汽車為隨機由一端行駛消失,再由另一端出現行駛。

    • 提示:鍵盤操控(按下:上、下、左、右移鍵)與迴圈應用,可參閱範例。(檔名:loop-Trampoline.sb3) 分享