Scratch 創意遊戲(一):彈球遊戲
Scratch 創意程式設計(一):彈球遊戲
遊戲方式很簡單:
(1) 小球在螢幕中不斷反彈,碰到牆壁反彈(除底板外)、碰到磚塊反彈、碰到擋板反彈。
(2) 玩家控制擋板,只能左右移動,不能上下移動或翻轉。
(3) 被小球碰到的磚塊消失,得分,當所有磚塊消失,過關。
(4) 小球觸碰底板,遊戲失敗。
這次先做一個簡化版打磚塊遊戲——彈球遊戲:玩家力保小球不落地,每接住小球一次加一分;小球落地,遊戲結束。
Scratch 創意程式設計(一):彈球遊戲
遊戲製作步驟:
1.開啟Scratch程式設計軟體。
- 刪除角色。右鍵單擊小貓角色,將其刪除。
Scratch 創意程式設計(一):彈球遊戲
- 新增小球角色
Scratch 創意程式設計(一):彈球遊戲
- 編寫小球指令碼——設定小球出現的位置
Scratch 創意程式設計(一):彈球遊戲
- 編寫小球指令碼——設定小球初始運動方向和速度
Scratch中的方向用角度值來表示,下圖標出了各角度值對應的運動方向:
Scratch 創意程式設計(一):彈球遊戲
既然小球的初始位置為舞臺的上邊緣中部,則初始運動方向可以向下以一定角度運動,則角度值範圍為135度到225度之間,為了增加遊戲的不確定性,使用隨機數模組。
Scratch 創意程式設計(一):彈球遊戲
小球的運動用移動模組,步數越大則運動越快。
Scratch 創意程式設計(一):彈球遊戲
小球的運動是持續不斷的,所以需要使用“控制”類目中的“重複執行”模組
Scratch 創意程式設計(一):彈球遊戲
則小球的指令碼變為:
Scratch 創意程式設計(一):彈球遊戲
此時頁面如下:
Scratch 創意程式設計(一):彈球遊戲
- 編寫小球指令碼3——碰到邊緣反彈
“動作”類目中有一個模組可以直接實現角色碰都邊緣反彈
Scratch 創意程式設計(一):彈球遊戲
小球指令碼變為:
Scratch 創意程式設計(一):彈球遊戲
此時頁面如下:
Scratch 創意程式設計(一):彈球遊戲
- 新增小球音效
Scratch角色庫中的角色一般都自帶音效,本例中的小球自帶名為“POP”的音效。
當實現小球碰到邊緣時,播放“POP”音效,需要呼叫“偵測”類目中的“碰到”模組:
Scratch 創意程式設計(一):彈球遊戲
新增音效之後的小球指令碼為:
Scratch 創意程式設計(一):彈球遊戲
- 繪製擋板
當角色庫中沒有合適的角色可選時,可以“繪製新角色”。
Scratch 創意程式設計(一):彈球遊戲
Scratch 創意程式設計(一):彈球遊戲
- 編寫擋板指令碼——跟隨滑鼠運動
擋板的運動跟隨滑鼠左右移動,即擋板的X座標跟隨滑鼠變化,Y座標不變。
Scratch 創意程式設計(一):彈球遊戲
擋板指令碼為:
Scratch 創意程式設計(一):彈球遊戲
注意:此時的滑鼠動作僅為移動,而非拖動,滑鼠左右鍵均處於鬆開狀態。
- 編寫小球指令碼4——碰到擋板反彈
如何判斷小球是否碰到擋板,可以用“偵測”類目中的“碰到顏色”模組。
Scratch 創意程式設計(一):彈球遊戲
獲取顏色操作如下:
Scratch 創意程式設計(一):彈球遊戲
小球的反彈的同樣適用一定角度範圍內的隨機值。
小球指令碼變為:
Scratch 創意程式設計(一):彈球遊戲
- 繪製地板
Scratch 創意程式設計(一):彈球遊戲
因為小球指令碼中判斷小球是否碰到擋板用的是檢測顏色,所以這裡要注意:地板的顏色需與擋板不同。
Scratch 創意程式設計(一):彈球遊戲
- 編寫小球指令碼5——碰到地板遊戲結束
判斷小球是否碰到地板,和判斷是否碰到擋板一樣,利用顏色來判斷。
當小球碰到地板時,顯示“Game Over”字樣。
Scratch 創意程式設計(一):彈球遊戲
停止全部程式:
Scratch 創意程式設計(一):彈球遊戲
Scratch 創意程式設計(一):彈球遊戲
- 編寫小球指令碼5——擋板每接住一次小球,加一分
得分是遊戲最重要的反饋機制之一。新增得分,需要新建一個變數。
Scratch 創意程式設計(一):彈球遊戲
遊戲開始時,得分為0,所以需要在指令碼開頭處,將變數“得分”設為0。
當小球碰到擋板時,變數“得分”的值增加1。
所以小球指令碼為:
Scratch 創意程式設計(一):彈球遊戲
Scratch 創意程式設計(一):彈球遊戲
- 編寫小球指令碼6——不斷加速的小球
之前的指令碼,小球的運動速度為恆定的“10步”,我們可以將小球的運動速度設定為“10+得分”,這樣,當你得分越高,速度就越快。
Scratch 創意程式設計(一):彈球遊戲
Scratch 創意程式設計(一):彈球遊戲
至此,彈球遊戲的基本框架和指令碼編寫完畢。基於這樣一個彈球遊戲,大家如果能想到更多的玩法,歡迎留言!