顯示具有 98360853 廖中裕 標籤的文章。 顯示所有文章
顯示具有 98360853 廖中裕 標籤的文章。 顯示所有文章

2012年6月23日 星期六

期末專案報告

有關於我的期末專案報告
首先得從我的專案構想靈感說起
但是有鑑於已經有發過一篇構想
所以在此直接引用!!
http://hwshow-vgc.blogspot.tw/2012/06/blog-post.html
最後的DEMO作品其實跟我的理想還有點差距

這算是我目前設計的最完整的一支程式
所以在程式的完整度上比較執著
但是反而使遊戲性上的完整度較低了

以下是我這次設計的互動視訊遊戲
根據了上面引用的構想設計的
原本的理想是所有的觸碰點都同時觸控才進入下一關
但是遊戲的規則稍有改變

這是最後完成品的遊戲規則
1.不必同時觸碰,但同樣必須所有觸碰點皆觸碰過也可以通關
2.遊戲有時間限制,所以同時將所有觸碰點同時觸碰可以加速通關速度
3.關卡無上限,但是通關數越多分數越高
所以結合以上3種規則
時間內通關數越多分數自然越高

但是最後DEMO的作品還少了時間的限制


這是DEMO時的遊戲介面
龍珠為觸碰點
但是DEMO時發現龍珠的距離還不夠遠
達不到我所想的觸碰所有出現的龍珠需要誇張的大動作的效果



上面的兩張圖
第一張是玩家的站立準備位置
第二張是所有可能出現的觸碰點位置


接著這張圖要介紹的
是為了DEMO所顯示的所有偵測畫面
由左到右分別是Background,Difference,BinaryDifference,BinaryDifference-Block


接下來要說的是這次設計所碰到的問題

第一點:
在同時出現的觸碰點中,分別觸碰沒有問題
但是在同時觸碰的情況下
只有編號最前面的一個會被觸碰
原因是我每次回呼時就會重置一次觸碰點boolin變數的true or false
解決的辦法是當所有出現的觸碰點接被觸碰,也就是false
才會重置觸碰點

第二點:
第一點的問題解決後能夠正常的進行遊戲
但是所有觸碰點接觸碰也就是通關後
畫面會立刻重置造成下一關的準備時間不足
造成在觸碰動作還未收回前已經進入下一關
直接觸碰到下一關的觸碰點
而在為了解決這個問題的部分
我嘗試了幾種方法

Sleep( milisecond );

其中
milisecond = 1000 為1秒
milisecond = 2000 為2秒
依此類推...

這是讓程式休息 milisecond 時間後才繼續直行
但是這個方法會讓整個程式停頓而不是我要的等待效果
接下來我使用另一種方法

if( iTimeBefore != 0 )
    iTimeBefore = clock();
iTimeAfter = clock();
while(iTimeAfter - iTimeBefore != milisecond )


但是發現這段程式的雖然寫法不同
但是跟Sleep的結果一模一樣
最後是我最終的解決方法


if( iTimeBefore != 0 )
    iTimeBefore = clock();
iTimeAfter = clock();
if( iTimeAfter - iTimeBefore != milisecond )
{
    重置遊戲畫面( 進入下一關 );
    iTimeBefore = 0;
}

這樣的話程式不但不會停頓
而且還會在等待 milisecond 後才進入下一關
讓玩家有機會收回動作後
等待下一關的觸碰點出現


最後就是大家在成果展上看到的實際DEMO
在這門課上其實真的學到很多遊戲設計上實用的經驗
雖然過程中常常讓我有很累很疲憊
甚至有不想繼續修課的想法
但是做出來的成果讓我覺得這學期修這門課很值得

2012年6月5日 星期二

HW03


以上圖片是我的電腦上的一些狀況
在學校的時候正常運作但是在自己的電腦上卻變成了這樣
本來以為是因為筆電視訊的關係
但是結果似乎不是
以下是我嘗試解決的過程
首先我將USB視訊裝置完畢
打開程式後用Video Source的功能改用USB視訊
但是結果並沒有改變
我又想也許是因為同時存在兩隻視訊造成的
所以我又到了裝置管理員將筆電本身的視訊停用
這樣程式就會直接使用USB的視訊
但是結果證明我想得太美了
順帶一提USB的視訊是RGB24

並且使用老師範例上的程式碼


經過老師的親自指導之後
知道了問題出在於程式碼中
讀取圖片的部分是使用RGB
而CallBack中的圖片呈現方式為YUV
但我的USB視訊的格式皆為RGB24
所以才會產生圖片發生錯誤
而至於在學校能夠正常運作
是因為跟同學借來的視訊鏡頭正好格式為YUV

於是知道問題在哪後
馬上來修改
修改部分是針對CallBack中原為YUV的部分改為RGB
並且因為RGB的存取為一組3個byte
所以在迴圈中代表往下一個目標移動的i=i+2以及k=k+4都需要做修改
以下就是正的執行結果

原畫面

 加入龍珠

 加入相框

HW02

BCB的視訊錄影功能遠比我想像中來得容易
因為寫過其他有關的視訊功能的程式
程式內容相較之下差異真的很大

以上是我的影片
因為沒有計算秒數
所以影片長大約快40秒

2012年6月2日 星期六

期末專案構想

這個期末專案構想的靈感來自於某個地板遊戲
不過因為我忘記那遊戲的名稱所以就不多做介紹
首先第一張圖是預期的遊戲畫面的簡略版
遊戲規則:
遊戲中會出現7個控制點分別有不同的編號
而這7個控制點的位置會是隨機決定的
控制點出現後將會再隨機決定1-3個編號
玩家必須在限制的時間內觸碰這3個編號所代表的控制點
遊戲開始時玩家會有3次失誤的機會,3次後則遊戲結束
但是在這3次機會損失前若達到一定的分數或條件
則會回饋1次的失誤機會,也就是所謂的生命值
第二張圖代表的是,為了避免控制點直接出現在玩家身上
所以控制點將隨機出現在一定的範圍之外
此圖以藍色框框範圍做範例,實際範圍以完成品為主
黃色框框範圍則為玩家的準備位置

2012年4月23日 星期一

HW01






心得:
首先,學期開始的時候原本是預定要使用BCB的最新版本XE2
但是,在經過幾次的上課以後發現新版本還是有些許問題
除了每次上課只有少數人能有正常權限可以使用XE2的問題
要談的就是我在程式撰寫上出現的問題
在剛開始的時候我也是照老師說的使用XE2
而在最初的第一步需要宣告的變數部分
又分為32位元跟64位元的Char與WChar_t
最初因為學校電腦是win7的64位元
所以使用後者
但是卻出現了問題:後面的函數部分WChar_t無法轉換Char
所以我也就將最初的宣告改為Char
當下是沒有問題了
但是當出現第二個函數要使用Char的時候
又出現了問題: Char 無法轉換WChar_t
這下可好,這種只要改正其中一項,另一項就會出現錯誤
彷彿是鬼擋牆的錯誤著實令我頭大
所以只好請教老師了
中間的過程我想跳過會比較好
因為結果是問題無法解決加上這時候XE2權限問題
我又變得無法使用XE2,最後還是改用BCB6
而改用BCB6之後,之前的錯誤就好像沒發生一樣
很順利的讓我完成了這支程式
果然新版本的環境還是擁有很多不確定性!?