2020年7月3日 星期五

06360321 鄭子輿 方塊獵人

方塊獵人


--------------------------------------------------------------------------------------------------------------------

一、遊戲介紹
        在時間範圍內盡可能碰到越多綠色得分方塊,同時也要閃避紅色扣分方塊。


--------------------------------------------------------------------------------------------------------------------

二、實作簡介

--------------------------------------------------------------------------------------------------------------------

(一)、綠色得分方塊
        下圖 1 綠色框內的綠色方塊為得分方塊,碰到時綠色方塊會消失,同時右方Get Score和Total Score會加1分。綠色方塊在每1/4秒會隨機取影像中的位置誕生,每個方塊的移動方式也不相同。
圖 1
1. 隨機誕生方塊
        首先需要在Tool Palette拉一個Timer元件,此元件內有一個整數屬性Interval,這個屬性是讓Timer元件每Interval毫秒來執行一次,將Interval設定成250代表每250毫秒執行一次(1/4秒),而方塊誕生的位置則是用rand()函數隨機取水平和垂直做標的位置。
voGetScore是一個stVirtualObject的變數陣列,分別存放不同得分方塊的屬性。
// 用rand()函數隨機取水平和垂直座標位置
// vo為voGetScore的index,將voGetScore的第vo的方塊物件水平和垂直做標位置取亂數
voGetScore[vo].iX1 = rand()%600;
voGetScore[vo].iY1 = rand()%400;

2. 方塊移動
        讓方塊移動的方式首先要在stVirtualObject內新增兩個整數變數iMoveX和iMoveY,分別為水平移動速度和垂直移動速度,然後在誕生方塊物件時給這兩個變數隨機取-20~20之間的值。
// 用rand()函數隨機取水平和垂直座標移動速度
// vo為voGetScore的index,將voGetScore的第vo的方塊物件水平和垂直做標位置取亂數
voGetScore[vo].iMoveX = rand()%41-20;
voGetScore[vo].iMoveY = rand()%41-20;

--------------------------------------------------------------------------------------------------------------------

(二)、紅色得分方塊
        下圖 2 紅色框內的紅色方塊為得分方塊,碰到時右方Lose Score和Total Score會扣2分,不過紅色方塊不會消失。紅色方塊每隔一段時間會增加一個。
圖 2
1. 隨機誕生方塊
        誕生方式跟上面綠色方塊相同,只是紅色方塊是每隔一段時間誕生,因此用了一個整數變數iBornTime來存取間隔時間,而方塊誕生的位置則是跟綠色方塊一樣用rand()函數隨機取水平和垂直做標的位置。
voGetScore是一個stVirtualObject的變數陣列,分別存放不同得分方塊的屬性。
// 用rand()函數隨機取水平和垂直座標位置
// vo為voLoseScore的index,將voLoseScore的第vo的方塊物件水平和垂直做標位置取亂數
voLoseScore[vo].iX1 = rand()%600;
voLoseScore[vo].iY1 = rand()%400;

2. 方塊移動
        與綠色方塊相同,不過速度範圍調整在-10~10之間,目的是降低遊戲難度,使玩家比較好閃躲紅色方塊。
// 用rand()函數隨機取水平和垂直座標移動速度
// vo為voLoseScore的index,將voLoseScore的第vo的方塊物件水平和垂直做標位置取亂數
voLoseScore[ivo].iMoveX = rand()%21-10;
voLoseScore[ivo].iMoveY = rand()%21-10;

--------------------------------------------------------------------------------------------------------------------

{三)、方塊個數調整
        下圖 3黑色框內可以調整綠色得分方塊和紅色得分方塊的個數,當玩家更改ComboBox內的值時分別用兩個整數變數iGetCount和iLoseCount來儲存個數數量。
圖 3

--------------------------------------------------------------------------------------------------------------------

(四)、時間設置
        下圖 4黑色方塊內可以設定遊玩時間長度,當玩家更改ComboBox內的值時用一個整數變數iTimes來儲存時間。
圖 4

--------------------------------------------------------------------------------------------------------------------

(五)、更改背景
        下圖 5黑色方塊內可以選擇是否要將背景改成黑白背景,當使用者勾選黑白區塊顯示時,將視訊視窗內容依照差異偵測結果顯示。
圖 5

--------------------------------------------------------------------------------------------------------------------

三、遊玩影片

--------------------------------------------------------------------------------------------------------------------

四、心得
        上完這堂課後我才知道原來要做一個視訊應用軟體或遊戲的前置作業是非常複雜的,而且在製作遊戲過程中更加困難,物件位置設定和移動設定要謹慎一點,一不小心就可能會超出邊界,還有哪些物件要在什麼時間出現也要判斷等等,花費了不少時間,雖然辛苦,但是也讓我學到很多東西,雖然以前參加了不少程式的競賽,但是使用這整合開發環境來獨自開發出一個專案還是全新的體驗,讓我感覺受益良多。







沒有留言: