2021年11月24日 星期三

兔寶寶的筆記 - 掉金幣、特務99 (W07)

 

Week 07 掉金幣、特務99

1-1 掉金幣(以橢圓代替)
設定球的起始座標位置,以vy為3的速度﹐
用y軸(上下)加上速度(牛頓的微分)往下掉。


1-2 掉兩個金幣

多加一顆座標(x2,y2)=(150,250)、速度vy2為2,
以不同位置和速度的球往下掉。


1-3 用陣列、迴圈的方式,掉 i 個金幣

4個陣列分別表示
i顆球的x位置、y位置、vx速度、vy速度。
用 for迴圈 i=0~3 跑出四顆不同位置和速度的球。

1-4 多一點互動

在迴圈中增加判斷 :
每顆球的y方向
如果碰到最頂部(y>600)會往回跑,
如果碰到最底部(y<0)會往回跑。
2-1 增加滑鼠mouse碰到寶物 >停止
增加顏色,紅球代表滑鼠,黃球代表掉下的寶物。
當紅球碰到黃球時 -> continue,黃球不執行往下掉的動作,
判斷碰到的方式 : 兩球之間的dist(距離) <=50。

當紅球(滑鼠)碰到黃球時,黃球會靜止不動


2-2 滑鼠碰到的球 > dead 
增加 布林array一開始皆不成立(false),
如果dead=true -> continue 不往下執行,黃球會不見

注意小細節 : ellipse畫出黃球的那一段程式碼移到contiune後面,
這樣做,碰到的黃球才會不見。


被紅球碰到的黃球都會不見。

了解布林是什麼、怎麼用 ?
要先知道 true = 1、false = 0

當滑鼠點下去 -> down = true 變紅色,
否則 -> down = false 保持綠色。

3-1 出現更多ball
如果希望一次有無數顆球,那用前面的方法,
每顆球都要設定大小、位置,相當麻煩。

所以可以改用宣告global array陣列變數,
再多設一個N值作為要產生多少顆球的數量(陣列大小),
用for迴圈跑出N顆球,
取(500)以下的x[i]隨機亂數及(100~200)之間的y[i]隨機亂數作為球出現的位置,
(3~4)之間的vy[i]隨機浮點數為速度,
每顆球初始dead[i]都是false。

左圖是原本方法,右圖是現在的方法。


3-2 Class物件

改用Class物件,發明Ball物件,
讓程式碼更有擴展性,程式也會較簡單、乾淨。


20顆球,分別從有限範圍內的隨機位置、隨機速度往下掉,
被滑鼠碰到的球會dead。
4-1 加速度公式的概念
加上x方向的速度,
每顆球會隨機以vx,vy的速度亂跑。

為什麼是距離可以加速度 ?
因為當時間等於1時,速度=距離。


4-2 特務99

如何讓球跑掉不見後再重生 ?
加入reborn函式。

球數量改成99顆,加入gameover判斷是否碰到球,
一開始gameover = false,
如果 = true ->紅色畫面

讓遊戲有趣一點,碰到球就gameover。

沒有留言:

張貼留言