沒有接觸過遊戲開發的我,當準備開始學習遊戲開發的時候,總覺得遊戲開發是神祕的,需要很牛的技術才能實現。
以前做過很多應用程式,基本上都是拖動控制元件,用很少的程式碼就能實現。
比如載入圖片,用pascal的話只需要在你放置圖片的地方,放一個image控制元件即可,不需要寫一行程式碼,還可以根據屬性設定設定不同的效果。
由於是第一次玩這麼高深的東西(自己感覺)。很簡單的一個問題,被我想複雜化了。
載入遊戲場景和人物(其實就是兩張圖片---------哈哈)
原始碼:
宣告全域性變數
HBITMAP bit;
HDC MemDC;
int w,h;
CString dir;
int p;
BOOL loadbmp(CString cc);
BOOL loadbmp(CString cc)
{
DeleteObject(bit);
bit=(HBITMAP)LoadImage
(AfxGetInstanceHandle(),
cc,
IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION
);
其實以上部分已經把圖片載入到bit,下面的部分是獲取圖片的資訊,高度和寬度
if(bit==NULL) return FALSE;
DIBSECTION ds;
BITMAPINFOHEADER &bm = ds.dsBmih;
GetObject(bit,sizeof(ds),&ds);
w = bm.biWidth;
h = bm.biHeight;
return TRUE;
}
顯示圖片的功能
CClientDC dc(this);//這裡告訴圖片 你將要顯示到客戶區 下面要用到
CString cc;
p=0;
MemDC = CreateCompatibleDC(0);//暫存裝置場景
dir="圖片/";
//載入地圖
cc=dir+"地面.BMP";
if(loadbmp(cc)==FALSE)
AfxMessageBox(cc+"沒找到!");
SelectObject(MemDC,bit); 建立關聯,不然如何讓圖片顯示呢
BitBlt(dc.m_hDC,0,0,300,300,MemDC,0,0,SRCCOPY);//就理解它為讓記憶體中的圖片顯示到客戶區吧
//載入人
cc.Format("%s人/c%05d.bmp",dir,p);
if(loadbmp(cc)==FALSE)
AfxMessageBox(cc+"沒找到!");
SelectObject(MemDC,bit);
BitBlt(dc.m_hDC,200,200,w,h,MemDC,0,0,SRCCOPY);
上面就實現了一個非常簡單遊戲場景載入,雖然什麼實質內容也沒有。