Visual C 遊戲程式設計基礎之搜尋迷宮出口

2021-09-24 12:22:30 字數 2714 閱讀 9206

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.系...