遊戲開發初步1 我的第乙個DirectX 程式

2021-04-01 16:37:10 字數 2850 閱讀 2601

終於能有時間安下心來學程式了,我要堅持到最後寫出自己的遊戲!

鄭州這裡遊戲開發書籍幾乎沒有,只好到網上先找個教程自學,不過以後一定要買個國外的教程看,然後邊看邊寫若有疑問再在論壇上發帖子提問或問身邊的高手。我想這大概是我這段時間的偉大計畫吧!

開發前曾在論壇上看了很多關於用opengl還是directx開發遊戲的爭論,直到看到暈,我還是覺得用directx還是舒服點.

先是用directx3d建立了乙個視窗,執行例子的時候竟然什麼都看不到,用dxdiag檢視原來顯示卡不支援directx3d,下了乙個新的驅動就好了。

這是第乙個程式,每個字母都是自己打出來的,可是完全沒有自己的風格,因為這還是完全照著例子打的,

執行程式需要安裝directx sdk,我在華軍軟體園上搜尋了乙個,然後安裝,安裝後用vc建立乙個控制台程式,然後

在project的setting中加入d3d8.lib。建立乙個main.cpp程式,並寫入以下內容:

#include

lpdirect3d8 g_pd3d = null;

lpdirect3ddevice8 g_pd3ddevice = null;

hresult initialised3d(hwnd hwnd)

d3ddisplaymode d3ddm;

if (failed(g_pd3d->getadapterdisplaymode(d3dadapter_default,&d3ddm)))//查詢當前顯示模式

d3dpresent_parameters d3***;

zeromemory(&d3***,sizeof(d3***));//清除d3***中的資料?

d3***.windowed   = true;

d3***.swapeffect  = d3dswapeffect_copy_vsync;

d3***.backbufferformat = d3ddm.format;

//建立裝置並用軟體加速

if (failed(g_pd3d->createdevice(d3dadapter_default, d3ddevtype_hal, hwnd,

d3dcreate_software_vertexprocessing, &d3***, &g_pd3ddevice)))

return s_ok;

}//乙個繪製圖形的函式

void render()

g_pd3ddevice->clear(0,null,d3dclear_target,d3dcolor_xrgb(255,255,0),1.0f,0);

g_pd3ddevice->beginscene();

g_pd3ddevice->endscene();

g_pd3ddevice->present(null,null,null,null);

}//清空所建立的所有物件,在程式結束時使用

void cleanup()

if (g_pd3ddevice != null)

}//遊戲迴圈,檢查訊息迴圈裡裡有沒有訊息,如果沒有就呼叫render來畫圖

void gameloop()

else}}

//響應訊息函式並處理

lresult winapi winproc(hwnd hwnd,uint msg,wparam wparam,lparam lparam)

break;

}return defwindowproc(hwnd,msg,wparam,lparam);

}//window主函式,建立視窗,並顯示

int winapi winmain(hinstance hinst, hinstance, lpstr, int)

;registerclas***(&wc);

100,100,500,500,getdesktopwindow(),null,wc.hinstance,null);

if (succeeded(initialised3d(hwnd)))

cleanup();

unregisterclass("directx",wc.hinstance);

return 0;}/*

translatemessage的詳細說明

translate 是轉化的意思,整個函式有什麼用呢?對了,是把 虛擬鍵碼 轉化為 字元碼 ( msdn 原文:translates virtual-key messages into character messages 。 虛擬鍵碼 (virtual-key) 是什麼?其實在之前檢測全域性鍵盤裡面就用過,那是對鍵盤上不同鍵鈕的編碼,用來區分每乙個鍵鈕。 那麼字元碼 (character) 實際上是 ascii 碼的乙個子集。 實現方式是,當認定訊息需要轉化為 字元碼 訊息,該函式就會向自己的訊息佇列裡 post 乙個 wm_char 的訊息 (wm_char == 258),因為是使用 post 方式,所傳送的訊息會插隊到最前面。 要轉化的 虛擬鍵碼 從原訊息的 wparam 中取得,轉化後的 字元碼 則放在 wm_char 訊息的 wparam 中。

舉個例子,當 a 鍵被按下的時候會發出 wm_keydown 訊息,並且附帶乙個虛擬鍵碼幫助我們知道被按下的是哪乙個鍵。但是,a 被按下的情況不止一種,根據不同的其他因素,可能是 大寫 的 "a" ,也可能是 小寫 的 "a",完全視乎當時是否開啟大寫輸入 (caps lock) 和有沒有同時按下 shift 鍵。 translatemessage() 會自動識別這些情況,保證在 wm_char 訊息的 字元碼 是希望得到的效果。

*/乙個下午時間才把這個程式完全搞懂,幸好原來有window程式設計的基礎,不然我想會更久。

我的第乙個遊戲 SNAKE

自己做的貪吃蛇遊戲,console視窗的,大家沒事的時候就玩玩吧 這段時間實在無聊 由於期末考的原因,acm落一邊了,等暑期集訓再好好搞,呵呵。閒來無事,就想動手編個小遊戲自己樂著玩兒。早就想編個貪吃蛇,於是就動手了。開始的時候構架出來得很清晰,各類物件敲得很快,大概3個多小時,基本的雛形就有了。然...

第乙個遊戲 啟程 1

通過從0寫這個專案,掌握遊戲開發所說要的c c 的高階特性,快速強化c c 掌握遊戲開發的基本概念 基本流程,快速入門遊戲開發。玩遊戲是快樂的,開發遊戲同樣是快樂的,甚至更快樂,享受 造物主 的樂趣。蘋果wwdc大會上,一位82歲的日本老奶奶若宮正子,是一名銀行退休職員,成了全場最年長開發者。蘋果公...

我的第乙個程式

我的第乙個vc程式終於寫完了,花了2周,之前從沒有用vc寫過程式,也沒讀過什麼程式,只是在看書,看了幾百頁 mfc windows程式設計 正好有個機會,老師讓寫個vc程式,就試著寫了。程式的功能是不同地方的access的更新的記錄整合到一台機子上的access中,支援斷網自動連線,用的是socke...