首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

遊戲開發中的工廠模式應用:UI 組件工廠設計實戰

     編輯:關於C++

專案背景:畢業後第二款小遊戲

開發環境:VS2005 + Win32 + C++ + DirectX 9。相比首作,本專案充分應用面向對象設計,特別是遞歸算法在消除類遊戲整行判斷中的優雅應用,大幅簡化邏輯。

類圖設計:ImageUI 體系與工廠分離

UML 類圖:ImageUI 繼承體系與 UIFactory

核心設計:

  • ImageUI:抽象基類,定義繪製、事件處理純虛函數
  • ButtonUI/LabelUI 等:具體 UI 組件,實現基類接口
  • UIFactory:將 UI 創建邏輯從遊戲主邏輯中分離,雖非標準 GoF 工廠模式,但實現了「創建與使用分離」的核心思想

新增組件只需繼承 ImageUI 並實現虛函數,符合開閉原則。

事件處理核心代碼:基類統一分發

PUG_BTN_STAT CImageUI::OnEvent(UINT msg, WPARAM wParam, LPARAM lParam) {
    POINTS xy = MAKEPOINTS(lParam);
    POINT pt = { xy.x, xy.y };

    switch (msg) {
        case WM_MOUSEMOVE:
            if (PtInRect(&_displaySize, pt)) { OnPass(); return PASS; }
            break;
        case WM_LBUTTONDOWN:
            if (PtInRect(&_displaySize, pt)) { OnClick(); return ONCLICK; }
            break;
        case WM_LBUTTONUP:
            if (PtInRect(&_displaySize, pt)) { OnClickOut(); return ONCLICKOUT; }
            break;
    }
    OnPassOut();
    return COMMAND;
}

基類封裝碰撞檢測與事件分發,子類僅需重寫 OnClick()、OnPass() 等業務邏輯,避免重複代碼。

遊戲截圖展示

遊戲主界面 遊戲運行截圖

設計感悟

「嚴格意義上這不算標準工廠模式,但代碼可讀性、可維護性顯著提升。」—— 設計模式不是教條,解決問題才是核心。遞歸消除算法、組件化 UI 架構、事件分發封裝,是本專案最大的技術收穫。

本文配套源碼下載
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved