第七次:程式設計-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-θ。此時的上下左右邊緣可適用於舞台中的任何物件角色。

引用資料

https://sites.google.com/a/ykjhs.ntpc.edu.tw/ahua/scratch/scratch-xiang-guan-ji-qiao/ru-he-ji-suan-jiao-se-peng-zhuang-hou-de-dan-hui-fang-xiang

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