1.建立8*8迷宮陣列,使用0,1,2,3初始化,0,1,2,3分別表示牆、通道、入口、出口,使用地圖貼圖知識建立迷宮;
2.建立堆疊結構記錄走過的方格編號,即走到某個方格就把該方格編號壓入堆疊;若發現路不通,就把該編號出棧,棧頂元素表示
小球所在的方格編號;
3.根據迷宮陣列中的值,在初始化函式中對每一格進行貼圖,牆貼藍色的,其餘均為白色,找到迷宮入口,記錄編號並壓入堆疊,
record陣列記錄走過的棋格,將該編號對應的方格設為0;
4.到了mypaint函式,根據編號確定小球的貼圖座標,把小球貼到對應方格;
5.根據小球編號判斷其上、下、左、右是否能走,假設下能走,那就把下對應的編號壓入堆疊,更新record及nowpos和prepos;
6.如果發現到了某一格走不動了,就退回到上一格,更新nowpos和prepos;
char *str;//記錄目前搜尋狀態的字串指標
int nowpos,prepos;//nowpos--小球目前位置的方格編號,小球貼圖;prepos--小球之前位置的方格編號,以此編號白色覆蓋小球貼圖
bool find;//是否找到迷宮出口
stackpath;//建立int型堆疊path
//0,1,2,3代表牆、通道、入口和出口
int mapindex[rows*cols] = ; //材8
int record[rows*cols];//標記不可通過的方格(牆)及走過的方格
atom myregisterclass(hinstance hinstance);
bool initinstance(hinstance, int);
lresult callback wndproc(hwnd, uint, wparam, lparam);
void mypaint(hdc hdc);
int apientry winmain(hinstance hinstance,
hinstance hprevinstance,
lpstr lpcmdline,
int ncmdshow)
while( msg.message!=wm_quit )
else
}return msg.wparam;
}atom myregisterclass(hinstance hinstance)
bool initinstance(hinstance hinstance, int ncmdshow)
movewindow(hwnd,200,100,430,450,true);
showwindow(hwnd, ncmdshow);
updatewindow(hwnd);
hdc = getdc(hwnd);
mdc = createcompatibledc(hdc);
bufdc = createcompatibledc(hdc);
bmp = createcompatiblebitmap(hdc,cols*50,rows*50);
selectobject(mdc,bmp);
hbitmap tile;
int rownum,colnum;
int i,x,y;
tile = (hbitmap)loadimage(null,"tile.bmp",image_bitmap,50,50,lr_loadfromfile);//載入迷宮背景圖
ball = (hbitmap)loadimage(null,"ball.bmp",image_bitmap,50,50,lr_loadfromfile);//載入小球圖
//按照「mapindex」陣列中的定義進行地圖拼接
for (i=0;i=0 && record[up]) //up要大於等於陣列的最小索引值0(第乙個數)
else if(down<=cols*rows-1 && record[down]) //down要小於等於陣列最大索引值
else if(left>=rownum*cols&& record[left]) //小球所在列的最小索引值,第0列就是0號;第1列就是8號
else if(right<=(rownum+1)*cols-1 && record[right]) //小球所在列的最大索引值,第0列就是7號;第1列就是15號
else
}} else
textout(mdc,0,0,str,strlen(str));
bitblt(hdc,10,10,cols*50,rows*50,mdc,0,0,srccopy);
tpre = gettickcount();
}lresult callback wndproc(hwnd hwnd, uint message, wparam wparam, lparam lparam)
return 0;
}
Visual C 遊戲程式設計基礎之遊戲迴圈
1.函式原型 boolpeekmessage lpmsgipmsg,hwndhwnd,uintwmsgfiltermin,uintwmsgfiltermax,uintwremovemsg 功 能 用於檢測訊息,檢測到了就返回非0值,否則返回0 引數一 接收訊息資訊的msg結構指標 引數二 其訊息被檢...
Visual C 遊戲程式設計基礎之透明動畫
1.利用前面學過的透明處理,這一次相當於是對每一幀進行透明處理,如第一次迴圈對第一幀進行透明處理,接著顯示 第二次對第二幀透明處理,接著顯示,直到最後一幀,然後再從第一幀開始,就這樣無限迴圈 include stdafx.h hinstance hinst hbitmap dra,bg bg為背景圖...
Visual C 遊戲程式設計基礎之鍵盤訊息
1.虛擬鍵碼 windows系統下所有的按鍵被視為虛擬鍵 包含滑鼠在內 每乙個虛擬鍵都有其對應的虛擬鍵碼 2.鍵盤訊息 1 vm kewdown 按下按鍵訊息 2 vm keyup 鬆開按鍵訊息 3 vm char 字元訊息,當按下的按鍵為定義於ascii碼中的可列印字元時,便發出此字元訊息 3.系...