第七次:程式設計-SCRATCH(5)
第三個Scratch的程式-打磚塊(2)
網碟路徑
\\10.231.114.143\03**\**
思考問題
1.如何計算角色碰撞後的彈回方向
■ 在舞台上的角色都有面對的方向,預設是向右。方向和角度定義如下:向右為 90、向左為 -90、向上為 0、向下為 180。
■ 在動作類積木中有一個「碰到邊緣就反彈」的程式積木,可是卻沒有「碰到某某...角色就反彈」的積木,所以必須自己寫角色碰撞後的彈回方向,反彈的方向是以入射角等於反射角的原理,底下以碰到左、右邊緣與碰到上、下邊緣來做說明。
■ 當「X座標 > 240」表示碰到右邊緣,「X座標 < -240」表示碰到左邊緣,下圖的問號就是角色反彈的方向。
角色反彈的方向有兩種表示方法,-θ (往逆時鐘方向)或 360-θ (往順時鐘方向)。
■ 當「Y座標 > 180」表示碰到上邊緣,「Y座標 < -180」表示碰到下邊緣,下圖的問號就是角色反彈的方向。
角色反彈的方向為 180-θ?
■ 總結:當角色碰到左、右邊緣時,反彈方向為 -θ 或 360-θ,當角色碰到上、下邊緣時,反彈方向為 180-θ。此時的上下左右邊緣可適用於舞台中的任何物件角色。
引用資料
2.除了老師提供的語法外還有更簡潔的語法嗎?
(1)反彈板
原來語法
更簡潔的語法
2.如何讓一開始球不要就打到磚塊得分?
在尚未發射球前,必須讓球跟著反彈板移動,程式想法如下:
(1)將球的X座標設定同反彈板的X座標
(2)將球的Y座標設定同反彈板的Y座標,但必須加上一個值,因為反彈板有厚度(寬),球必須在其上,所以這個值要視你的反彈板而定
(3)偵測是否按下滑鼠(或空白鍵),按下後,讓球面向上(0度)
(4)旋轉一個角度,可自由設定,一般是30-45度
(5)讓球一直移動,碰到邊緣就反彈修改球角色的語法(參考語法)-自由修改
原來的語法
改為滑鼠點一下發球
改為按下鍵盤空白鍵發球
修改磚塊
(6)得分板
設定變數score
在反彈板角色加入判斷分數是否滿足.若是則廣播you win的訊息
YOU WIN 腳色的建立及程式語法
在磚塊角色加入判斷若球碰到磚塊則分數加*分
(7)計時器(設定在舞台)
時間變為倒數計時(時間遞減30.29.......0).當時間為0秒.則停止遊戲並廣播"時間到"
請建立timer變數.其餘自行參考以下語法
倒數計時的語法(參考語法)
(1)此時還是會出現問題?當還未發球時.時間已經倒數計時了...如何解決?
(2)還有其他寫法嗎?
完整打磚塊程式
參考網站
http://120.116.50.2/dyna/menu/index.php?account=scratch
https://sites.google.com/a/ykjhs.ntpc.edu.tw/ahua/scratch/scratch-cheng-shi-fan-li/da-zhuan-kuai
http://scratch.chooinc.com/thread-32-1-1.html
http://www.chener.idv.tw/Material/main.asp