迷宫游戏c语言代码讲解,迷宫游戏C语言代码讲解.doc
/*迷宮游戲 by CDQ*//*vc++ 6.0 編譯成功本程序參照網上一個特殊算法隨機生成迷宮該算法優點:效率高,從入口到出口只有唯一路徑,入口出口自己設定該算法缺點:寬度高度都必須為奇數,只能生成n*m矩陣迷宮*/#include #include #include #include #define Height 31 //迷宮的高度,必須為奇數#define Width 25 //迷宮的寬度,必須為奇數#define Wall 1#define Road 0#define Start 2#define End 3#define Esc 5#define Up 1#define Down 2#define Left 3#define Right 4int map[Height+2][Width+2];void gotoxy(int x,int y) //移動坐標{COORD coord;coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );}void hidden()//隱藏光標{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//賦1為顯示,賦0為隱藏SetConsoleCursorInfo(hOut,&cci);}void create(int x,int y) //隨機生成迷宮{int c[4][2]={0,1,1,0,0,-1,-1,0}; //四個方向int i,j,t;//將方向打亂for(i=0;i<4;i++){j=rand()%4;t=c[i][0];c[i][0]=c[j][0];c[j][0]=t;t=c[i][1];c[i][1]=c[j][1];c[j][1]=t;}map[x][y]=Road;for(i=0;i<4;i++)if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall){map[x+c[i][0]][y+c[i][1]]=Road;create(x+2*c[i][0],y+2*c[i][1]);}}int get_key() //接收按鍵{char c;while(c=getch()){if(c==27) return Esc; //Escif(c!=-32)continue;c=getch();if(c==72) return Up; //上if(c==80) return Down; //下if(c==75) return Left; //左if(c==77) return Right; //右}return 0;}void paint(int x,int y) //畫迷宮{gotoxy(2*y-2,x-1);switch(map[x][y]){case Start:printf("入");break; //畫入口case End:printf("出");break; //畫出口case Wall:printf("※");break; //畫墻case Road:printf(" ");break; //畫路}}void game(){int x=2,y=1; //玩家當前位置,剛開始在入口處int c; //用來接收按鍵while(1){gotoxy(2*y-2,x-1);printf("☆"); //畫出玩家當前位置if(map[x][y]==End) //判斷是否到達出口{gotoxy(30,24);printf("到達終點,按任意鍵結束");getch();break;}c=get_key();if(c==Esc){gotoxy(0,24);
\o "累計分享5次" 5
回復
1樓
2011-12-07 15:46
舉報 |
我也說一句
未來未來
追憶曾經_
團子家族
10
break;}switch(c){case Up: //向上走if(map[x-1][y]!=Wall){paint(x,y);x--;}break;case Down: //向下走if(map[x+1][y]!=Wall){paint
總結
以上是生活随笔為你收集整理的迷宫游戏c语言代码讲解,迷宫游戏C语言代码讲解.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 骁龙845是32位还是64位
- 下一篇: 1000xm3音质什么档次