Scratch教學篇-認識變數
--
Scratch平台中變數類型有幾種?程式設計中的全域變數和私有變數在Scratch如何實作!文章將從認識變數、了解變數使用限制,最後分享在不同的創作需求中,如何選擇最適合的變數來設計應用。 2020/6/6(修)
考量Scratch平台的中文化再後續有調整,可能讓文章中圖片和平台上說明有不同而造成困惑,因此本文中的操作圖片都以英文版為主,圖片版權為 MIT所有。
什麼是常數,什麼是變數?
開始討論前,先來認識常數和變數的基本定義:
常數(constant)是一個固定不變的數值,例如1或3.14。
變數(variable)是一個可以改變的數值,例如x = 1,x就是變數,x等於什麼?依指派(assign)的值為主。
Scratch變數類型有幾種
1.全域變數(global variable)
Scratch對應的名稱是For all sprites(適用於所有角色),設定後可以給專案(作品)中的所有角色及背景使用。
2.私有變數(private variable)
Scratch對應的名稱是For this sprite only(僅適用當前角色),設定後只有該角色可以使用。
3.雲端變數(cloud variable)
Scratch獨特的變數類型,對應的名稱是cloud variable(stored on server)/雲端變數(儲存於伺服器),設定後可以給專案(作品)中的所有角色及背景使用。
當設定選取Cloud variable選項後,For all sprites選項將自動被選取,For this sprite only選項狀態會消失。
全域變數和雲端變數有什麼差別?
1.全域變數在線上版或離線版都可以新增。
2.雲端變數會將異動過的紀錄存放在官方主機並可查看紀錄。
3.雲端變數存放的資料必須是數值型態。
變數存放的資料型態
- 數值資料:1、0、3.14、-1
- 字串資料:APPLE、icoding.com.tw、空字串、Scratch程式設計
- 布林值資料:true、false
※Scratch字串沒有大小寫區分,因此APPLE和apple是相同的。
變數使用的限制說明
- 全域變數的變數名稱不能相同,私有變數在不同角色上名稱可以相同。
- 全域變數和私有變數的變數名稱不能相同。若名稱有重複時,依建立優先順序為主,後面建立的名稱不能重複。
- 全域變數和雲端變數名稱可以相同(※補充)。
- 雲端變數必須使用線上版本才能新增。
- 雲端變數只能指派數值型態資料。
補充:
雖然雲端變數和全域變數從積木圖示上可以很直覺分辨(下面範例有圖示可参考),但還是建議使用不同名稱來命名,從Scratch開始培養好的編程習慣,為未來學習更進階程式語言奠定良好的基礎。
開始來動動腦、動動手、動動口
變數應用創作範例
專案主題說明:
使用Scratch程式來設計開發一個「肥皂VS病毒大作戰」專案遊戲,遊戲中玩家需使用肥皂來消滅掉所有病毒,防止病毒全境擴散,你能順利成為地球的最佳守護者嗎!
遊戲玩法說明:
玩家必須在指定時間內用「肥皂」來將三種病毒(SARS、MERS、Covid-19)消滅掉。每種病毒有自己的獨特生命值,每當病毒遇到肥皂時生命值就會減1,而玩家就能得到1分,當病毒的生命值為0時,該病毒就會被消滅而不見,注意你必須於時間內完成讓病毒都消失。
變數設計說明:
- 「時間變數」使用全域變數(global variable):
遊戲指定時間內開始倒數,必須在時間內完成消滅全部病毒。 - 「生命值變數」使用私有變數(private variable):
遊戲中Covid-19是最恐怖的病毒,在人體存活時間最長,因此生命值最大,每種病毒都有自己的特性。 - 「分數變數」使用雲端變數(cloud variable):
遊戲中進行紀錄玩家所得到的分數。
如何選擇變數類型
- 設計時間、分數、關卡等應用,選擇全域變數。
- 描述每個角色的特質或各別的生命值等應用,選擇私有變數。
- 紀錄挑戰玩家的分數或歷史最高分等應用,選擇雲端變數。
閱讀完文章一定知道,Scratch變數類型共有三種「全域變數、私有變數和雲端變數」。當下次創作時,若你是Scratch好手,一定能依需求選擇;若你是正在學習Scratch的未來好手,可以参考本篇文章。最後不要忘記「想學好程式一定要自己動手來Coding」。
我變!我變!我變變變 換成 你變!你變!你變變變