2011年6月22日 星期三

2011期末專案:戰鬥吧!忍者貓!

期末專案

「戰鬥吧!忍者貓!」




一、程式截圖







<1>按「開始遊戲」,程式自動做:開啟攝影機 → 擷取「校對截圖」 → 開啟「校位圖」 → 開啟二元圖;便可直接開始遊戲。
<2>如果想要中斷遊戲的「圖片按鍵感應」,請「停止擷取二元圖」即可,可按「Ctrl + B」進行開或關。
<3>「進行左右移動」的圖片按鍵只有一個,但是可以用「切」的圖片按鍵進行左、右切換!
<4>按「忍」施展忍術。其實在此遊戲中,「忍術」的按法即為「↑ + 攻」,這個圖片按鍵只是把這兩個鍵設定成一起按。
<5>「忍、攻」兩個動作已經設定為連發,而「跳」為單發。
<6>藍色標線是「位置範圍」,請站在那個範圍中;並且左右兩手的手肘,必須至少能夠碰到「方向、跳」的一半以上。
<7>「圖片按鍵」有按到時,圖片會變為紅色。
<8>擷取「校對截圖」時的姿勢,請參考YouTube影片示範。

註:以下簡稱「圖片按鍵」為「圖鍵」。



二、遊戲截圖









遊戲下載:http://www.mediafire.com/?9j9t2f8aaaa2nzf

三、YouTube簡介影片

2分鐘版 :



6分鐘版 :



特別收錄:



四、簡易攻略

請各位至此網頁:
http://www.mediafire.com/?991qi7p0j9x5cea



五、程式重點

<1>我曾經碰到以下錯誤,即擷取畫面在右方時重複擷取。



原因是因為,「用以儲存擷取資料的陣列」,它的長度與寬度,設定錯誤,如下圖:



<2>我在修改老師的範例程式時,在二元圖的「觸摸圖片」之判斷裡,在雙迴圈之中,下了鍵盤按鍵的指令;但是控制遊戲人物時,發現上下左右的移動,會「一頓一頓的」;後來,我發現老師的範例程式中,是「判斷整張二元圖」,於是我把它修改成「只判斷圖鍵在二元圖中的位置範圍」,人物便可正常移動!

如下圖說明:





<3>迴圈的數量與執行次數,必須謹慎控制,太多則程式執行緩慢,影響遊戲流暢度;某些指令若置於迴圈中,容易造成延遲(delay),要想辦法將其置於迴圈外。

六、心得
原本,我選擇做這個專案的原因,除了因為喜歡前屆學長姐做的「真人版洛克人」之外,還有一個原因,就是「下鍵盤指令比較簡單」;而且因為我在五月之後,要準備另一門微積分和考駕照,比較忙,所以就想說做這個比較簡單。但是做了之後才發現完全不是那麼回事。

製作這類視訊遊戲,必須要製作圖鍵用的圖片,我光是製作就花了非常多時間,而且還必須製作藍色與紅色兩種版本;我用PhotoImpact製作,做得很累!

另外,有一個極大的挑戰,就是要「設計圖鍵的位置」!當初還沒開始做時,本來想說只要把「↓」鍵製作在玩家的頭部下方就可以了;結果發現如果那麼做的話,會因為顏色判斷的關係,導致按鍵按得不穩定,導致遊戲人物無法順暢控制;於是我又花了一大把時間,不斷思考該如何設計圖鍵位置。

更大的挑戰,是關於「圖鍵的數量」!如果設計太多,將導致視訊擷取的速度過於緩慢、程式延遲(delay),這樣的話玩家會根本無法玩的!後來,我的方法是:盡可能減少迴圈,並且將按鍵的諸多判斷與繪製,用自訂函式去執行。這樣總算使得程式可以順暢執行!

最後的難關,是「程式的邏輯」。由於我使用的圖鍵共9個,所以要一一處理它們(因為每張圖的座標和要載入的圖片都不一樣,所以不能用迴圈);我常常看著一大串的程式碼,有如千萬隻螞蟻在竄動,眼睛彷彿沈沒在一片大海裡,相當累人。另外由於必須撰寫很多函式,如果其中一個函式的某個狀態或程式碼出錯,就可能導致後面的程式產生錯誤,所以撰寫時一定要非常專心,弄清楚執行的順序和脈絡;否則,一旦混淆的話,程式就會執行不順了。

在最後,我要感謝李遠坤老師,在這學期教導了我那麼多視訊方面的程設;我以前從來沒有接觸過視訊設計方面的程式,經過這一學期之後,我又學到更多東西,感到很充實、快樂!謝謝老師!

沒有留言: