電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
[C++] DxGameComponent 1.0a [2011/08/13]

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念
上一篇主題 :: 下一篇主題  
發表人 內容
babu61509
散播福音的祭司


註冊時間: 2007-08-26
文章: 142

681.01 果凍幣

發表發表於: 2011-8-8, PM 11:04 星期一    文章主題: [C++] DxGameComponent 1.0a [2011/08/13] 引言回覆

2011/08/09 囧,修正某些地方因為改class沒處理好編譯有問題的地方
2011/08/13 1.0b 使用#ifndef判斷是否重新讀入,新增Run()方便使用

為了之前 這篇 所說的雜亂理由寫出來的基礎遊戲組件Class。

.h內容:
代碼:

#ifndef _SECTION_DXGAMECOMPONENT_         // 避免重複include
#define _SECTION_DXGAMECOMPONENT_

/*

   DxGameComponent 1.0b

*/

#include "allPart.h"

class DxGameComponent{
protected:
   LPDIRECT3DDEVICE9   m_pD3DDevice;            // D3D裝置
   LPD3DXSPRITE      m_pSprite;               // Sprite
   DWORD             U_LastTime;               // 上次 Update 的時間
   DWORD             D_LastTime;               // 上次 Draw 的時間
public:
   DxGameComponent(LPDIRECT3DDEVICE9 D3DDevice, LPD3DXSPRITE D3DXSprite);
   ~DxGameComponent();

   virtual void      Update();               // 呼叫 資訊更新及邏輯控制
   virtual void      Draw();                  // 呼叫 繪圖
   virtual void      Run();                  // 執行 更新+繪圖

   virtual void      Init();                  // 請多載此 初始用函式
   virtual void      OnUpdate(DWORD ElapseTime);   // 請多載此 更新函式
   virtual void      OnDraw(DWORD ElapseTime);   // 請多載此 繪圖函式
   
};

#endif



遊戲的流程簡單說就是:

事件發生後對物件更新及處理 -> 畫出來 -> 事件發生後對物件更新及處理 -> 畫出來 ->..... (直到遊戲結束)

事件的發生有可能是時間到了,或是有輸入之類的觸發。但是依照這樣的流程寫起來就會很雜亂,所以這邊簡單的用狀態機作法來寫遊戲架構。

首先,先把遊戲可能的狀態列出來,比如初始化、開頭標題、主選單等等。
代碼:

enum GameState{
   Game_Init,            // 初始化
   Game_OpeningTitle,      // 開頭標題
   Game_MainMenu,         // 主選單
   Game_GamePlay,         // 遊玩
   Game_Exit            // 離開
};

一般遊戲狀態大多可以分成這樣,當然也可以更細分下去。每個組件繼承自基礎的遊戲組件,再把各自的功能寫進去,這樣分門別類的寫,架構上就會比較明確、容易了解跟除錯方便。判斷現在的流程是在哪個狀態,再依狀態呼叫組件的 Update 跟 Draw ,一層一層的呼叫下去。

當然也可以用別種架構來寫,這裡只是提供一種思路,只要讀者覺得用起來方便就可以了。



DxGameComponent.rar
 描述:
DxGameComponent 1.0b

下載
 檔名:  DxGameComponent.rar
 附件大小:  2.19 KB
 下載次數:  共 373 次


_________________
已經畢業了!!
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作