背景
最近嘗試一邊自學Scratch,一邊嘗試教給小孩,看他打字時在鍵盤上亂打一氣,想起來自己小時候玩過的學習機打字母游戲,就想給他下載一個。結果網上看到的代碼,要么質量太差(有26個字母就要寫 26 個判斷,會把小孩水平教壞 😦 ),要么還要收錢才能下載。就決定自己寫一個。
功能
- 可以按需選擇想要練習的字母范圍 ( A-Z 中的任意連續字符, 從而方便逐漸練習)
- 程序開始后從屏幕上方隨機產生字母,逐漸下落。
- 在字母掉落到最下面前按對應按鍵,會將火箭移動到字母下,發射閃電消滅字母。
- 可以設置最大血量,當未打中的字母數量達到指定量時,游戲失敗
核心代碼
- 在屏幕最頂端產生隨機字母,使用私有變量(
隨機初始字母
)保留當前字母對應的值,從而判斷按鍵
- 作為克隆體啟動時,一直往下掉,并檢測是否被消滅或超出屏幕范圍
- 按鍵判斷的核心,檢測到自己對應的字母被按下時,設置火箭要移動到的位置
- 閃電的代碼:移動到
消滅目標_X
的位置后,克隆出向上發射的火箭。為了避免將還在空中飛的閃電也移動,使用了 y坐標=-130(初始值) 的方式判斷,個人感覺不是很好,但沒有找到更好的辦法。
已知Bug
- 如果屏幕中同時存在多個相同的字母,始終會給位置高的字母發射火箭,直到其被消滅后才會給位置低的字母發射閃電,似乎和多個克隆體的執行順序有關。已經嘗試過 設置
已發射子彈
標志, 計算Y坐標位置等方式,但都不能解決。理論上說,通過設置列表變量跟蹤的方法可能能解決,但感覺復雜度又上去了,就沒有更改。看是否有高手能解決。
源碼下載
- https://gitee.com/fishjam/scratch