}
WayCopy(oldmap,map);
if(oldmap[i][j-1]==0&&!yes)判断左方是否可以走 {
FindWay(oldmap,i,j-1); if(yes) { way[wayn][0]=i; way[wayn++][1]=j; return; } }
WayCopy(oldmap,map);
if(oldmap[i-1][j-1]==0&&!yes)判断左上方是否可以走 {
FindWay(oldmap,i-1,j-1); if(yes) { way[wayn][0]=i; way[wayn++][1]=j; return; } }
return; }
void MapRand(int (map)[N])开始的随机迷宫图 {
int i,j;
cleardevice();清屏
randomize(); 随机数发生器 for(i=0;i for(j=0;j void PrMap(int (map)[N])输出迷宫图 { int i,j; for(i=0;i void Find(void)找到通路 { int i; setfillstyle(SOLID_FILL,RED);红色输出走的具体路线 wayn--; for(i=wayn;i>=0;i--) { bar(100+way[i][1]15-6,50+way[i][0]15-6,100+ way[i][1]15+6,50+way[i][0]15+6); sleep(1);控制显示时间 } bar(100+(N-2)15-6,50+(N-2)15-6,100+ (N-2)15+6,50+(N-2)15+6); 在目标点标红色 setcolor(GREEN); settextstyle(0,0,2);设置字体大小 outtextxy(130,400,\} void NotFind(void)没找到通路 { setcolor(GREEN); settextstyle(0,0,2);设置字体大小 outtextxy(130,400,\} void Result(void)结果处理 { if(yes)如果找到 Find(); else没找到路 NotFind(); getch(); } void Close(void)图形关闭 { closegraph(); } 案例五 扫地雷游戏 5.3.4 源程序 #include #define LEFTPRESS 0xff01 #define LEFTCLICK 0xff10 #define LEFTDRAG 0xff19 #define MOUSEMOVE 0xff08 struct { int num;格子当前处于什么状态,1有雷,0已经显示过数字或者空白格子 int roundnum;统计格子周围有多少雷 int flag;右键按下显示红旗的标志,0没有红旗标志,1有红旗标志 }Mine[10][10]; int gameAGAIN=0;是否重来的变量 int gamePLAY=0;是否是第一次玩游戏的标志 int mineNUM;统计处理过的格子数 char randmineNUM[3];显示数字的字符串 int Keystate; int MouseExist; int MouseButton; int MouseX; int MouseY; void Init(void);图形驱动 void MouseOn(void);鼠标光标显示 void MouseOff(void);鼠标光标隐藏 void MouseSetXY(int,int);设置当前位置 int LeftPress(void);左键按下 int RightPress(void);鼠标右键按下 void MouseGetXY(void);得到当前位置 void Control(void);游戏开始,重新,关闭 void GameBegain(void);游戏开始画面 void DrawSmile(void);画笑脸 void DrawRedflag(int,int);显示红旗 void DrawEmpty(int,int,int,int);两种空格子的显示 void GameOver(void);游戏结束 void GameWin(void);显示胜利 int MineStatistics(int,int);统计每个格子周围的雷数 int ShowWhite(int,int);显示无雷区的空白部分 void GamePlay(void);游戏过程 void Close(void);图形关闭 void main(void) { Init(); Control(); Close(); } void Init(void)图形开始 { int gd=DETECT,gm; initgraph(&gd,&gm,\} void Close(void)图形关闭 { closegraph(); } void MouseOn(void)鼠标光标显示 { _AX=0x01; geninterrupt(0x33); } void MouseOff(void)鼠标光标隐藏 { _AX=0x02; geninterrupt(0x33); } void MouseSetXY(int x,int y)设置当前位置 { _CX=x; _DX=y; _AX=0x04; geninterrupt(0x33); } int LeftPress(void)鼠标左键按下 { _AX=0x03; geninterrupt(0x33); return(_BX&1); }