2015年7月3日 星期五

皮卡丘打排球

皮卡丘打排球

當我一聽到期末要做一個遊戲專案時
我腦中就希望做一個互動性高的遊戲
剛好在找小遊戲時找到了大家同年的回憶  -- 皮卡丘打排球


原本希望做出兩人對戰
但由於我是用8*8錯誤偵測來比對background 
所以判讀有點不精確
再加上視訊不夠大,如果幾兩個人很容易干擾到
所以我只做了1P


遊戲方式

遊戲方式:
右上角為殺球(ENTER)
上方為跳躍
左右兩邊為控制左右



再做這個專案的時候
一開始我將
keybd_event(VK_RIGHT, 0, 0, 0);
keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0);
放入時,並沒有反應
後來看過學長的文章才發現
可能是因為他按下去再談起來的速度太快
以至於看起來好像都沒反應
所以我加了DELAY
但加進去以後發現在整個程式會變得很頓
所以我換了一種寫法

舉例:(上方)
if((iBlockChangeCounter[m][n]>31)&&(m<7)&&(n<47)&&(n>35))
{
a = true; 

}

設一個布林變數
如果範圍內偵測到差異
則控制跑進下面的事件處理


if(a){
                                                   if( iPressTimeCount<=4)
 {
                                                      keybd_event(VK_UP, 0, 0, 0);
                                                                 Form1->Label10->Caption = "UP" ;
                               iPressTimeCount++;
  }
                                               if(iPressTimeCount > 4)
  {
                                                                         keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);
              a = false;
                                                   Form1->Label10->Caption = "0";
                                iPressTimeCount = 0;
  }
}
若布林為TRUE則往下跑
設定一個變數,讓他控制在跑一定次數後會彈起來
為了確保,我設了一個LABEL來確定他會彈起來
這樣跑程式的時候就不會頓頓的了!


心得: 這次的專案其實非常的趕,由於有暑修卡到,前面又不太知道自己要做啥
以至於拖到蠻後面才開始動工,所以很多東西都很粗略,但我覺得
在這次專案中我學到了很多,不管是對於物件的了解,按鍵延遲的處理
callbackfunction的使用,差異偵測的原理跟使用等等
都讓我對XE8這個開發環境多認識了不少


實作影片:https://youtu.be/uOU0lzsgP64




沒有留言: