總網頁瀏覽量

2018年7月15日 星期日

從 角度與移動 到 打磚塊遊戲

補充 : 從 角度與移動 到 打磚塊遊戲

Scratch 角色除了用 X,Y 座標定位外,也可以透過 改變角度+移動 * 步 來移動位置.

首先,先來看看角色的方向定義,預設角色的方面為 90. 我們可以開啟一個新專案,觀察角色的預設方向是否為 90 度. 這也是將來自己設計角色時的參考.







預設 90 度,因此直接移動會往右走, 想要改變移動方向,就需要先改變方向再移動.


如上圖範例,說明一個角色的方向角度,右側為 0 ~ 180,左側為 0 ~ -180.
一個球在 90 度方向做記號,每次轉 45  度後的方向如下,


當設定方向後,就可按記號方向移動. 一般角色雖沒有記號標示,但原理想同.
* 角色的角度可以按角色左上的藍色 i 圖標,角度會出現在右側區域,有數字及圖示.





基於這個方法,我們就可以讓球在螢幕中持續移動與反彈,只要改變方向,配合碰到邊緣反彈即可.





接下來,我們要加上讓球反彈的木板,還有球碰到就結束遊戲的紅線.

新增一個木板角色,讓它只在一個高度上隨著滑鼠左右移動.



球和木板相碰後,應該要由誰來處理呢?
木板從頭到尾只負責跟著滑鼠移動位置.
球卻要在碰到木板後反彈,因此我們由球來處理這段程式.

我們觀察到球落下時的方向角度,分別是 -135度 及 135 度. 而依據入射角等於反射角的設計,我們要分別將方向角度在碰撞後調整成 -45度 及 45度.


在程式中,我們加入對木板的偵測,當球碰到木板時,判斷球當時落下的方向角度,再將方向角度做對應的反射調整.



再來,我們要在底線加入紅線,當球碰到紅線就代表遊戲結束.

紅線從頭到尾只固定不動.
球卻要在碰到紅線後結束遊戲,因此我們由球來處理這段程式.

當偵測到碰到紅線時,說出 LOSE!!! ,並將程式結束.



操作過程,請參考視頻




接下來,我們試著加入三個星星,

星星被球碰到會隱藏.
三顆星星都隱藏後,判定玩家獲勝. 但如何不使用變數來累計隱藏星星數量.

利用背景切換來計數,當綠旗開始,將背景切成第一張背景,當星星被碰到後隱藏並將背景切換到下一個,當三顆星星都隱藏後,此時背景也被切到第四張,遊戲由玩家獲勝.

想想看,還有角色的那些變化可以當成一種紀錄,讓程式可以用來判斷呢? 應該有不少方法才對,請試試看!


沒有留言:

張貼留言