計算機 1 ( 顯示數字 )
這篇文章會介紹,在 Scratch 裡使用函式、分身、變數、廣播訊息、邏輯判斷、變換造型...等積木,實作一個計算機的外型,並在點擊計算機按鈕時,會出現點擊的數字和加減乘除的符號。
角色設定
在角色編輯區,刪除貓咪的角色,使用繪畫,繪製新角色 ( 參考:造型與繪圖 )。
新增第一個角色「按鍵」,使用「方形」工具在畫布中畫出一個正方形,對齊畫布中心,使用「文字工具」在正方形中間寫上數字,字型選擇 Pixel。
重複同樣的步驟,依序建立:2、3、+、4、5、6、-、7、8、9、x、0、=、AC、÷ 共十六個造型 ( 注意,順序不能有錯 )。
注意!請按照下圖進行命名,+ (s1)、- (s2)、x (s3)、÷ (s4)、= (s0)、AC (sc)。
新增第二個角色「數字」,使用「文字工具」在正方形中間寫上數字,字型選擇 Pixel,位置先對齊畫布中心 ( 因為數字間距的關係,待會會再調整 )。
重複同樣的步驟,建立 2、3、4、5、6、7、8、9、0、-、. 共十二個造型 ( 按照下圖命名 -、. )。
新增第三個角色「符號」,重複上述的步驟,建立 +、-、x、÷ 共四個造型,作為顯示按了哪個加減乘除符號使用 ( 按照下圖命名 s1、s2、s3、s4 )。
積木程式原理 ( 按鍵 )
點擊「按鍵」角色,設定點擊綠旗的程式:
- 定位到 (-100, 60) 的位置 ( 按照個人狀況做定位 )。
- 造型換成 1。
- 尺寸設定為 80% ( 按照個人狀況調整 )。
- 隱藏本尊。
- 新增 icon 和 num 兩個變數,設定為 0。
從左側積木清單,新增一個名為「分身」的函式,勾選「執行完畢再更新畫面」。
在點擊綠旗的最下方,執行分身函式,放入「當分身產生」積木,產生分身後顯示分身,接著編輯分身函式:
- 使用一個重複 4 次積木包著另外一個重複 4 次積木 ( 總共 16 次 )。
- 內層的重複 4 次積木每次重複時,建立自己的分身,並將位置往右邊移動。
- 外層的重複 4 次積木,每次重複時,將位置移動到左側,並往下移動。
- 廣播 input 訊息 ( 讓數字角色接收並顯示數字 )。
完成後,點擊綠旗,舞台上就會出現計算機的樣子 ( 位置可以按照個人狀況調整重複積木裡的數值 )。
編輯當分身產生的程式:
- 使用重複無限次積木,每次重複判斷「滑鼠是否點擊按鍵」( 碰到滑鼠且滑鼠按下 )
- 如果按鍵被點擊,接著判斷如果按鍵造型名稱裡有「s」,表示按壓的是 +、-、x、÷、=、AC。
- 將變數 icon 設為造型名稱。
- 發送「顯示符號」訊息。
- 如果按鍵造型名稱裡沒有「s」,表示按壓的是數字鍵:
- 如果 num 為 0,就將 num 設定為造型名稱 ( 開頭才不會有 0 )。
- 如果 num 不為 0,將 num 組合目前的造型名稱。
- 發送「input」訊息。
- 等待直到放開滑鼠 ( 按下滑鼠不成立 ),再進行下一次重複。
積木程式原理 ( 符號 )
點擊「符號」角色,設定相關動作:
- 點擊綠旗時,隱藏角色,並將位置定位到計算機的左上方。
- 新增一個名為「顯示符號」的函式:
- 顯示角色。
- 更換造型為 icon 變數的數值。
- 收到「顯示符號」訊息:
- 隱藏角色。
- 如果判斷是加減乘除的符號,就執行「顯示符號」函式。
積木程式原理 ( 數字 )
點擊「數字」角色,新增一個「顯示數字」函式,勾選「執行完畢再更新畫面」。
設定點擊綠旗和收到 input 訊息的動作:
- 當綠旗被點擊:
- 隱藏數字角色 ( 待會會用分身顯示 )。
- 新增 input 和 n 變數,設定為 0。
- 當收到 input 訊息:
- 設定 input 為 1。
- 等待直到 n 等於 0 再繼續。
- 定位到計算機的左上方 (-100, 130)。
- 將 input 設為 0。
- 執行「顯示數字」函式。
設定顯示數字函式和建立分身的動作:
- 顯示數字函式:
- 使用重複積木,重複的次數等於 num 的字串長度 ( 例如 123 的長度為 3 )。
- 每次重複將 n 增加 1。
- 將造型換成 num 的第 n 個字。
- 建立分身,往右移動。
- 當分身產生:
- 顯示分身。
- 等待直到 input 等於 1 ( 表示又按下了數字按鍵 )。
- 將變數 n 減少 1。
- 刪除分身。
n 的數值表示現在有幾個分身,當收到訊息後,會先將畫面的分身清空 ( n=0 ) 再繼續。
完成結果
完成後,點擊綠旗,用滑鼠點擊計算機按鍵,就會出現對應的數字和符號 ( 還沒有計算功能 )。
範例解答
範例解答:計算機 1 ( 顯示數字 )
繼續閱讀
如果已經熟悉了計算機 1 ( 顯示數字 ),就可以繼續閱讀「計算機 2 ( 加減乘除 )」的文章。
文章連結:計算機 2 ( 加減乘除 )
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~