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

DirectX 簡易 RPG 遊戲原型:角色移動、對話與場景渲染

     編輯:關於VC++

作者首嘗 DirectX 遊戲開發 (學習 10 天),參考網路「英雄救美」RPG 素材自行重寫核心邏輯。本文記錄核心渲染迴圈、角色移動狀態機、對話觸發機制,供初學者參考。

核心渲染函數:bmove(int& zhi)

負責單幀繪製:背景、NPC、主角、對話框、翻轉雙緩衝。


void bmove(int& zhi) {
    // 1. 繪製背景 (全螢幕 640x480)
    pBBuf->BltFast(0, 0, pOPla[zai], CRect(0,0,640,480), DDBLTFAST_WAIT);
    
    // 2. 對話框顯示 (空白鍵觸發 tab=true)
    if (tab) {
        pBBuf->BltFast(0, 380, pOPla[13], CRect(0,0,640,100), 
            DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY);
        pBBuf->BltFast(5, 385, pOPla[14], CRect(0,0,85,85), 
            DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY); // 主角頭像
    }
    
    // 3. NPC 與主角重疊順序判斷 (依 Y 軸決定繪製先後)
    if (hero.y1 > whero.y1) { // 主角在 NPC 下方 → 先畫 NPC 再畫主角
        pBBuf->BltFast(whero.x1, whero.y1, pOPla[zhi], CRect(0,0,40,40), 
            DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY);
        pBBuf->BltFast(hero.x1, hero.y1, pOPla[hero.control], CRect(0,0,40,40), 
            DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY);
    } else { // 主角在 NPC 上方或同高
        pBBuf->BltFast(hero.x1, hero.y1, pOPla[hero.control], CRect(0,0,40,40), 
            DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY);
        pBBuf->BltFast(whero.x1, 150, pOPla[zhi], CRect(0,0,40,40), 
            DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY);
    }
    
    // 4. 雙緩衝翻轉
    pPSur->Flip(NULL, DDFLIP_WAIT);
}

關鍵技術點

  • DirectDraw 介面:IDirectDrawSurface7 (pBBuf 後緩衝、pPSur 主表面、pOPla 材質表面陣列)。
  • BltFast + 色鍵透明:DDBLTFAST_SRCCOLORKEY 實現 Sprite 透明背景 (素材預留魔術粉色 0xFF00FF 為透明色)。
  • 角色狀態:hero.control 記錄朝向/動作幀 (上下左右走路循環),zhi 為 NPC 當前幀。
  • 碰撞觸發對話:OnTimer 中檢測 abs(hero.x - npc.x) < 30 && hero.y == npc.y 觸發 numx=1 進入對話模式。
  • 輸入處理:鍵盤方向鍵更新 hero.x1/y1 並切換 hero.control;空白鍵切換 tab 顯示對話。

遊戲循環架構


// WinMain → 初始化 DirectDraw → 載入素材 → 設定 Timer (約 30fps)
void OnTimer(UINT nIDEvent) {
    // 1. 處理輸入 (GetAsyncKeyState)
    // 2. 更新邏輯 (移動、碰撞、對話狀態)
    // 3. bmove(current_npc_frame);
}

素材來源與法律聲明

圖片素材來源於網路免費 RPG 專案「英雄救美」,僅供學習研究使用。商業專案請自行繪製或購買授權素材。

已知不足與改進方向

  • ❌ 無地圖編輯器、場景切換、戰鬥系統、存檔/讀檔。
  • ❌ 硬編碼座標、尺寸,缺乏資料驅動架構。
  • ❌ DirectDraw 已棄用,現代專案建議改用 Direct2D / Direct3D 11 / SpriteBatch。
  • ✅ 適合作為「第一個 DirectX 專案」參考,理解雙緩衝、Sprite 動畫、色鍵、遊戲迴圈基本概念。

作者聯繫

Email: xieyuntian1981@21cn.com | QQ: 109021029

歡迎遊戲開發愛好者交流指正。

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