顯示具有 95360954 李慧娟 標籤的文章。 顯示所有文章
顯示具有 95360954 李慧娟 標籤的文章。 顯示所有文章

2009年6月26日 星期五

期末專案~心靈之蛋.

(如果看不清楚,請點圖看大圖.)


簡單的說,
就是不要讓蛋完全跑出畫面外~

操作方法:
利用改變右上及左上的背景區塊,
來改變移動方向. (X軸和Y軸)
但是,停留太久的話,可是會動彈不得的!!

操作順序:
首次遊戲:
首先按WebCam>Connet,
再按Button1~3,
再按WebCam>Turn On Change Detection.

再次遊戲:
首先按WebCam>Turn Off Change Detection,
再按Button5,
再按Button1~2(or3),
再按WebCam>Turn On Change Detection.

按鍵說明:
Button1:取一張畫面.
Button2:取30張畫面的平均.
Button3:選擇圖片.(上方圖例為miki_egg2.bmp)
Button5:變數初始化.

心得與寫程式過程:
第17週的時候,
我的程式寫到,為了降低雜訊而把畫面分成8*8的區塊.
(這個部份,我花了比較久的時間去想.)
17週前,我都有盡量跟上課程blog的進度.

第18週期末考週,暫停一週.

夏令營首日,
我把加入的圖示在畫面中去背景,且讓圖示位移.
位移的部份,原本我是先放按鈕慢慢做測試,最後才加入到callbackfunction去跑.

夏令營第2天,
我加入新的判斷,只在視訊畫面內,讓圖示自己彈跳.
成功的時候其實超開心的.

夏令營第3天,
加入了用視訊畫面做判斷的想法.(指上方圖示的上方兩個區塊)
右邊區塊我用來改變圖示的上下位移的判斷區塊.
左邊區塊我用來改變圖示的左右位移的判斷區塊.

回家之後,我也一直在作修改,
因為背景不是很好取,
所以雜點還是很多(但已經有比切成8*8區塊前少很多了).
所以在判斷有沒有觸碰的區塊的部份,其實我修改了不算短的時候.(在做微調)

然後又找了一些裝飾版面的圖示.也找了背景音樂. (動漫"守護甜心"系列)
選了一些能用的圖,修改一下圖什麼的.("佛頭夏普"(?)+"小畫家"很好用)
(時間並沒有多到,可以讓我自己用畫的.)

又是看日出的一天.(腰痠背痛的)
這兩天加起來,好像睡不到6小時.(超睏!)
星期三回家搭公車的時候,還累到睡過站...orz
(似乎是在快到站前陷入昏迷.)

夏令營第4天,
加入了音樂檔.
我放的其實是mp3檔.
不過也讓我的檔案頓時變的有點大.
音樂我是直接從執行檔的資料夾內的另外一個資料夾中搜尋(然後載入).
所以音樂路徑的問題,並沒有困擾到我.
(因為換一台電腦就要重新設定,會有點麻煩.)

原本以為總算完成遊戲了.有打算收工的感覺.
我的遊戲本來只能夠玩一次.(game over就跳出了.)

不過老師希望能寫成可以連續玩好幾次的形態.
然後我就慢慢修.
我寫程式都是一點一點修的.
修一點,我就run一下.
一開始因為有些要初始化的變數位置沒放對.
還有一些觀念也不太好(一run就當),
所以幾乎都是慢慢試出來的.
回家前,我寫到run的時後已經不會當了.

回家後,程式雖然可以run,
不過第2次玩遊戲的成績試窗,並沒有如同第一次玩的時後跳出來.
修改到11點多,還是沒有改出來.
稍微躺一下,結果陷入昏迷.
凌晨4點左右的時後驚醒.
繼續寫到出門.(還是沒改出來)

夏令營最終日,
我8:00其實就到學校等教室開門了.
好像是8:45左右開的.(工讀生開的?)

繼續想辦法修改程式.

最後我問了其他同學,當下雖然沒有看出哪裡有問題.
但是,他教了我一些BCB似乎很方便的Debug工具的使用方法.(很感謝!)
所以我好像大概花了30分鐘左右,結果居然寫出來了.
(雖然自己也覺得很莫名其妙,但是終於完成的喜悅還是難以掩蓋.)


其實回想一下,
其實我好像遇到的都不是什麼大問題.
只是腦筋不太靈光的我,需要花大量的時間去思考.(或是畫示意圖.)
把想法轉成程式的部份,對我而言,是比較困難的部份.

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


李慧娟作品發表: 心靈之蛋!


準備開始執行, 黃鈺雯來幫忙操作!


心靈之蛋執行畫面!


李慧娟示範如何玩心靈之蛋!
 

2009年5月11日 星期一

期末專案_草稿 ~



名稱:未定。

遊戲發想:兒時的手影遊戲。

目標:
挑戰雙手動作極限!

說明:
將在程式中內建幾張圖片。
玩家需做出與圖片相同的動作,若越符合圖形,將納入得分。
反之, 超出圖形,將扣分。
有時間限制。



雖然我覺得稍嫌沒創意,但我也只想到這個。
(p.s. 上圖是"馬",但我比較會比"狗"的圖形.)

2009年5月4日 星期一

DEMO~

(如看不清楚,請點圖.)



起初~
我實在不曉得問題出在哪?
只知道要run的時候,
程式總是給我直接當掉.(然後跳出上方視窗.)

看了一下,
卻發現在讀取資料時,
總是抓到一些莫名的garbage(一些亂碼什麼的).

可是在之前~
還沒有使用callbackfunction的時候,
讀取資料明明就沒有問題.
為什麼使用callbackfunction就抓到garbage !?

最後問了許同學.
他給了我不少意見.
真是獲益良多. (非常感謝)

其中最重要的是,
Refresh()
他提醒我,
"沒有做 Refresh 就算Image裡的內容改變了,也不會顯示在Image上."

之前不太了解Refresh的功用,
所以一直不太敢用.
而且也有發現就算沒使用Refresh(),
也照樣run的出來的同學.
所以我才覺得就算沒加上去應該也沒差.

但是沒想到這樣,
就讓我在上課的時候,
沒辦法順利run.

但是有一件事還是讓我很介意,
那位沒使用Refresh()也run的出來的同學,
其實程式碼跟我的並無太大差異.(他有的功能,我也有弄.宣告也都一樣.)
但是為什麼還是會無法順利run呢?


雖然經過了很多挫折,
但是最後有完成基本的Demo,
還是很開心~

2009年3月3日 星期二

靜態影像擷取~

(如看不清楚,請自行點開放大看.)

情況一: 攝影機拍攝內容不變, 連續拍攝 A 與 B, 計算其平均差異。
(A+B)/2:


(B-A)/2:

(注:Button 1 即 按鈕A ,以此類推.)

畫面分別為~
左上:視訊擷取畫面.
右上:儲存視訊的靜態影像A.
左下:儲存視訊的靜態影像B.
右下:A&B靜態影像的平均差異值的影像C.

情況二: 攝影機拍攝 A 後, 放置一物體到攝影機前, 在按 B 取得影像陣列 B 內容, 再計算其平均差異。
(A+B)/2:


(B-A)/2:



雖然之前修過老師的課,
但是因為隔得有點久了,
其實也忘得差不多了.
所以其實花比較久的時間,
在回憶和看以前曾寫過的程式.

起先~
我一直搞不清楚,使用到ScanLine[ ]時,
到底是什麼時候就讀取data的,
又是用了什麼將單張影像顯現的. (現在還是沒搞懂...)

上課的時候,
我的進度一直只到把A&B兩按鈕的功用做出來而已.
再來就一直無法前進.

但是課堂上老師說他並沒有使用到ScanLine[ ],
所以回家繼續寫的我,
就去找了有相當功用的程式.
最後我選擇用GetRValue(),GetGValue(),GetBValue(),
去擷取Image的RGB值,
然後將擷取的data以RGB值顯現.

因為以前寫的程式,有RUN出來.
原本以為會很快就能改出來,
沒想到居然RUN了好幾次都沒反應.

如果有偵錯出來,那我還能debag.
但是難就難在,什麼錯誤訊息都沒跳出來.
所以我又耗了一下.

最後,
也不知怎麼了,
我把for loop範圍的
BitmapInfoHead.biHeight和BitmapInfoHead.biWidth
改成一般數值.

居然就能顯現了~
真是可喜可賀啊!!~ (啥鬼)

在情況一時~

因為攝影機拍攝內容不變,
所以兩張圖的差異並不大.
(雖然有時候手可能會稍微抖一下啦~
或是光可能也會有點影響.)
但是基本上,還是一張看不太出來差別的圖~ (相加除以二的情況)

若是相減除以二的情況,
則是一張偏黑的圖.

情況二時~~

相加除以二的情況,
則有浮水印般的透明效果.

若是相減除以二的情況,
因為有放了一個物體到畫面中,
所以畫面的差異度變高了.

但是~
由圖可以發現,
在A畫面是黑色或深色的區塊,

若物體剛好擋到的話,
就能看到較清楚的原物體的樣子.
(ex:圖中的瓶子和橡皮擦)

不過比起原來的顏色,
應該會更暗些.