2009年6月25日 星期四

期末專案 - 串丸子



遊戲操作:
開啟遊戲後,點選左上角視訊裝置->連線
物件偵測->建立背景
物件偵測->偵測on
當竹籤漂到螢幕最上方後,先伸出手測試竹籤會不會移動
然後再按Start即可開始遊戲
要結束遊戲,按 Stop
把手放在左下角,過一段時間後,遊戲會重新開始

參數設定:
將遊戲畫面切換到 test分頁
Down Speed: 貢丸Image降下的周期
Add Speed: 新增一個貢丸Image的週期
Distance: 貢丸Image下降移動的距離, 遊戲等級增加後,貢丸Image下降距離的增加量
Lv up:經過多久等級才會上升
Game Over:經過多久遊戲會自動結束
Game Win:獲得多少分才會贏
Game Restart: 手放在左下角多久才會重新開始


遊戲實作過程敘述:
1. 竹籤的移動
當決定要做「串丸子」這個遊戲後
第一個想到的就是用竹籤去串
所以首先要做的就是竹籤的移動
因為遊戲中,只有7排的貢丸會掉下來
所以將二元圖劃分成8個區塊


當某個區塊的白點累積到一定的數量後,竹籤就移動過去

如圖中,竹籤應該移動到D區的位子(C區白點太少)

但是 E,F,G,H 這四區也是有一堆白點
總不能讓竹籤在這五個區塊中亂跳
所以採用多層 if else 當作優先權判定
先判斷最左邊區塊的白點是否累積到指定數量
如果有,竹籤移動到該區,後面的就不理
如果沒有,就再判斷下一區塊的白點數量

2. 落下的貢丸
竹籤會動之後,再來要弄的是往下掉的貢丸


如圖,一共有7排的貢丸在起始的位子上
每一排各有兩顆疊在一起
總計有14個
原本以為很簡單的,就是讓Image往下移動嘛
改一下每個Image的Top,讓Image會往下移動
然後當Image超出視窗後就消失、回到起始點上就好啦
但是並非如此 ...

首先,用一個Timer元件 (Name:Down)
讓Image在每過一段時間就往下移動一次
接著,正常的遊戲中
貢丸不可能全部一起出現一起掉
所以一定要安排先後出現的順序
而且總計只有14個有貢丸Image
資源有限,所以只好自己想一個演算法來解決這個問題
( 要放5、600個貢丸Image來弄也是可以
但是我覺得這樣很蠢,同樣的東西放這麼多 ... 不僅浪費空間,做的時候也浪費時間 )


3. 串貢丸
竹籤和貢丸都會動之後,再來要想的就是竹籤串貢丸
原本要做的功能是,竹籤要從右邊移動到左邊,"串"到貢丸才會消失、計分
利用一個 Bamboo_mark 儲存竹籤出現的上一個位置
如果竹籤現在的位置小於Bamboo_mark
在此條件成立下,表示竹籤是從右邊串過來的
這樣竹籤碰到貢丸Image才會得分

但是程式寫好後,並沒有達到預期的效果
現在還沒想到合適的演算法去操作,所以還是只能維持原樣
竹籤一"碰"到貢丸就消失 ...

以上三個為最主要的部分
其他的就是debug和一堆拉哩拉雜的 ...


心得:

這學期印象最深的應該就是callback function吧
老師跟同學們討論了很久

再來是操作視訊的code
雖然大二時已經有學過
雖然講義一模一樣
但是這學期老師教的是另外一種方式

大二時用的是使用Timer元件
每隔一段時間就取一張圖

而這學期學到的是利用callback function
每當視訊有擷取新的資料傳入,視窗裡的畫面就會即時更新

二元圖也是
之前學的就是直接劃分黑色白色
而這次老師教的是將畫面切分為一格一格的小方塊再分黑白兩色
一格一格的其實還挺有趣的
對 有趣


最後的暑期夏令營
很集中的煎熬
感覺像是放暑假前的熱身(?)

CAM Game Show 2009 照片 (26 June 2009):


許達易展示成果! (25 June 2009)


串丸子之執行畫面! (26 June 2009)
 

沒有留言: