close
這一節實現基本選怪,普通攻擊打怪,撿物(不含過濾)。

我們先來改變一下界面,從控件欄選擇復選框,畫在口相應位置,如圖。
  

其他的還不變,我們主要是實現基本打怪,所以其他的暫時不考慮。

下面先來描述一下算法:

如何選怪:
  
     
在武林裡,你選一個怪物後,會顯示怪物的信息,那麼在內存裡也會有一個變量來保存是否選中了怪物。我們就利這個變量判斷是否選中怪物,如沒選中,那麼調用函數,讓其選怪。

如何打怪:
  
     
遊戲裡有普通攻擊,在原來的時候還可以模擬按鍵來實現打怪,現在不可以了,那麼我們只有通過調用遊戲的內部函數來實現打怪了。判斷選中怪物後,就調用普通攻擊函數,直到怪物的血值為0 
和 選中怪物變量 為0 ,就代這個怪物打死了,就需要開始下一輪選怪打怪。

如何撿物:
     
  
撿物在原來也可以模擬按鍵,現在也是調用內部函數。為這一節不牽涉物品過濾,所以有什麼我們就撿什麼,呵呵。


程序簡單流程:
在主進程不斷的讀取遊戲信息,開闢一個新的線程,放置我們的打怪代碼。這裡已經開始使用線程了,大看到多線程也不用怕,其實沒什麼,在BCB 
,多線程就相當於一個模塊一樣,也是一個單元文件,不同的是它和主線程的代碼有點區別,線程代碼需要我們用代碼開啟它的運行。從這裡就是使用多線程,也是方便以後編寫,後面的將會很多地方用到多線程。因為現在我們只開啟了2個線程,並且不會衝突,所以暫時也不用做線程同步。

在新的線程裡,寫一個循環,並用變量控制循環開始和結束。
將打怪的代碼全部寫到循環裡。
順序大致如下:
選怪:
判斷是否已經選中怪物
如果選中怪物則跳到打怪部分,如果沒選中,則過一段時間繼續選怪。

打怪:
用普通攻擊  攻擊怪物,直到怪物死亡。

撿物:怪物死亡一段時間後,開始撿物。


這裡只講如何使用遊戲內部函數,分析部分還是需要大家自己到廣海看帖子學習,因為一天兩天也學不會。如果在寫完小秘的帖子後有時間的話,我可能寫寫分析部分的帖子。

下面是實現代碼:
打開我們上次的工程,文件-新建-其他-選擇最下面的Thread 
Object ,Thread Object 就是線程類。
並命名為 ThreadKill ,在工程窗口雙擊打開 ThreadKill 
,進入代碼編輯界面。
__fastcall ThreadKill::ThreadKill(bool CreateSuspended)
  
  : TThread(CreateSuspended)
{
}
將 
FreeOnTerminate=true;  插入那對括號中。
__fastcall 
ThreadKill::ThreadKill(bool CreateSuspended)
    : 
TThread(CreateSuspended)
{
    
FreeOnTerminate=true;
}
一般用多線程都會寫這麼一句,為了在線程結束後釋放資源。

void __fastcall 
ThreadKill::Execute() 
這裡就是線程執行的地方,需要執行的代碼都寫在裡面。
本文來自:
 
 
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 UM程式研究日誌 的頭像
    UM程式研究日誌

    UM程式研究日誌

    UM程式研究日誌 發表在 痞客邦 留言(0) 人氣()