董乘宇--迷宫程序1.10版

鲁能李晓

鲁能李晓

2016-02-19 13:10

今天图老师小编给大家精心推荐个董乘宇--迷宫程序1.10版教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~
程序目的:
  输入一个任意大小的迷宫,用栈求出一条走出迷宫的路径,并
  显示在屏幕上。
  程序实现:
  可以实现载入迷宫和保存迷宫,附带文件中有4个测试迷宫路径的
  文件test1~4.dd。请将这些文件拷贝到TC当前目录下,或者在载
  入时写明完全路径。由于屏幕大小的限制,当用户自己输入迷宫
  时一定要注重:迷宫大小是有限制的,不小于4*3,不大于30*20。
  否则会出现错误信息。输入开始时全是墙,用上下左右键移动,
  用Del键删除墙,形成通路,用Enter键添加墙。输入结束时可以
  将迷宫保存下来,以dd为扩展名。输入完毕时用F9键来得到结果,
  找到路径时,屏幕下方会出现Path found,否则出现Path not found。
   程序经Turbo C 2.0编译调试成功。运行时不用添加任何运行库。
   不可以在VC上编译。
   下载DOS版和windows版的迷宫游戏全部代码
   用户名:migong
   ----------------------------------------------------------------------------------
   /*
   MazePath Demo BY Turbo C 2.0
   Copyright(c) RoverUnion. All right reserved.
   Filename: Maze.c
   Author Dongchengyu.
   Ver 1.10
   */
   #include stdio.h
   #include stdlib.h
   #include malloc.h
   #include conio.h
   #include dos.h
   #define OK 1
   #define ERROR 0
   #define TRUE 1
   #define FALSE 0
   #define F9 0x43
   #define Esc 0x1b
   #define Del 0x53
   #define Home 0x47
   #define End 0x4f
   #define Space 0x20
   #define Up 0x48
   #define Down 0x50
   #define Left 0x4b
   #define Right 0x4d
   #define Enter 0x0d
   #define F2 0x3c
   #define F3 0x3d
   #define STACK_IN99v_SIZE 200
   #define STACKINCREMENT 10
   typedef int Boolean;
   typedef int Status;
   typedef strUCt {
   int x;
   int y;
   } PosType;
   typedef struct {
   int ord;
   PosType seat;
   int di;
   } SElemType;
   typedef struct {
   int td;
   int foot;
   int mark;
   } MazeType;
   typedef struct {
   SElemType *base;
   SElemType *top;
   int stacksize;
   } Stack;
   int Maze[20][30];
   MazeType maze[20][30];
   PosType StartPlace;
   PosType EndPlace;
   int count;
   int m,n;
   Boolean b_start=FALSE,b_end=FALSE;
   void CreatMaze(void);
   Status SaveMaze(char *filename);
   Status LoadMaze(char *filename);
   void Error(char *message);
  
  Status InitStack(Stack *s);
   Status DestroyStack(Stack *s);
   Status ClearStack(Stack *s);
   Boolean StackEmpty(Stack *s);
   int StackLength(Stack *s);
   Status Push(Stack *s,SElemType e);
   SElemType Pop(Stack *s,SElemType e);
   Status GetTop(Stack *s,SElemType *e);
   Status StackTraverse(Stack *s,Status (* visit)(SElemType *se));
   Boolean Pass(PosType curpos);
   void MarkPrint(PosType seat);
   void FootPrint(PosType curpos);
   PosType NextPos(PosType seat,int di);
   Status MazePath(PosType start,PosType end);
   void CreatMaze(void)
   /* Form the maze. */
   {
   void Error(char *message);
   Status SaveMaze(char *filename);
   Status LoadMaze(char *filename);
   int i,j;
   int x,y;
   char c;
   char savename[12],loadname[12];
   Boolean flag=FALSE,load=FALSE;
   clrscr();
   printf("Menu:");
   printf("1.Load Mazefile:(*.dd)");
   printf("2.Input Maze:");
   printf("Input your choice: ");
   do
   {
   c=getch();
   switch(c)
   {
   case ''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''': putch(''''''''''''''''''''''''''''''''1''''''''''''''''''''''''''''''''); break;
   case ''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''': putch(''''''''''''''''''''''''''''''''2''''''''''''''''''''''''''''''''); break;
   case Esc: sleep(1); exit(1);
   default: break;
   }
   }
   while(c!=''''''''''''''''''''''''''''''''1''''''''''''''''''''''''''''''''&&c!=''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''') ;
   if(c==''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''')
   {
   printf("LoadName: ");
   scanf("%s",loadname);
   if(LoadMaze(loadname))
   {
   sleep(1); load=TRUE;
   }
   else { gotoxy(1,9); printf("Load fail! "); }
   }
   if(!load)
   {
   printf("Input the maze''''''''''''''''''''''''''''''''s size:");
   printf("Input Length :");
   scanf("%d",&m);
   printf("Input Width :");
   scanf("%d",&n);
   if(m4n4) Error("Input");
   if(m30n20) Error("Maze too large");
   for(i=0;i30;i++)
   for(j=0;j20;j++)
   Maze[j][i]=2;
   StartPlace.x=0;
   StartPlace.y=0;
   EndPlace.x=0;
   EndPlace.y=0;
   clrscr();
   printf("");
   for(i=1;i=n;i++)
   {
   for(j=1;j=m;j++)
   {
   printf(" #");
   Maze[i-1][j-1]=0;
   }
   printf("");
   }
   }
   gotoxy(65,5);
  
  printf("''''''''''''''''''''''''''''''''#'''''''''''''''''''''''''''''''':Wall");
   gotoxy(65,7);
   printf("Start:Home");
   gotoxy(65,9);
   printf("End:End");
   gotoxy(65,11);
   printf("Delete Wall:Del");
   gotoxy(65,13);
   printf("Enter Wall:Enter");
   gotoxy(65,15);
   printf("Save Maze:F2");
   gotoxy(65,17);
   printf("Complete:F9");
   gotoxy(65,19);
   printf("Exit:Esc");
   gotoxy(4,3);
   x=4;y=3;
   do
   {
   c=getch();
   switch(c)
   {
   case Up: if(y3) { y--; gotoxy(x,y); }
   break;
   case Down: if(yn) { y++; gotoxy(x,y); }
   break;
   case Left: if(x4) { x-=2; gotoxy(x,y); }
   break;
   case Right: if(x2*m-2) { x+=2; gotoxy(x,y); }
   break;
   case Del: if(y-2==StartPlace.y&&x/2-1==StartPlace.x) b_start=FALSE;
   if(y-2==EndPlace.y&&x/2-1==EndPlace.x) b_end=FALSE;
   putch('''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''); Maze[y-2][x/2-1]=1; gotoxy(x,y);
   break;
   case Enter: if(y-2==StartPlace.y&&x/2-1==StartPlace.x) break;
   if(y-2==EndPlace.y&&x/2-1==EndPlace.x) break;
   putch(''''''''''''''''''''''''''''''''#''''''''''''''''''''''''''''''''); Maze[y-2][x/2-1]=0; gotoxy(x,y);
   break;
   case Home: if(Maze[y-2][x/2-1]&&!b_start)
   {
   StartPlace.x=x/2-1;
   StartPlace.y=y-2;
   putch(''''''''''''''''''''''''''''''''S'''''''''''''''''''''''''''''''');
   gotoxy(x,y);
   b_start=TRUE;
   }
   break;
   case End: if(Maze[y-2][x/2-1]&&!b_end)
   {
   EndPlace.x=x/2-1;
   EndPlace.y=y-2;
   putch(''''''''''''''''''''''''''''''''E'''''''''''''''''''''''''''''''');
   gotoxy(x,y);
   b_end=TRUE;
   }
   break;
   case Esc: gotoxy(2,22); printf("exit"); sleep(1); exit(1);
   case F9: if(b_start&&b_end) flag=TRUE; break;
   case F2: gotoxy(2,22);
   printf("Savename:");
   scanf("%s",savename);
   gotoxy(2,22);
   if(SaveMaze(savename)) printf("Save OK! ");
   else printf("Save fail! ");
   sleep(1);
   gotoxy(2,2
展开更多 50%)
分享

猜你喜欢

董乘宇--迷宫程序1.10版

编程语言 网络编程
董乘宇--迷宫程序1.10版

1.10 Global.asa文件的使用及Chat程序

Web开发
1.10 Global.asa文件的使用及Chat程序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

迷宫

编程语言 网络编程
迷宫

孕妇乘邮轮

电脑网络
孕妇乘邮轮

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

怎样做超简单版宇圆最好吃

电脑网络
怎样做超简单版宇圆最好吃

董泽国画作品

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
董泽国画作品

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Windows 7系统中全新的游戏管理器

Windows 7系统中全新的游戏管理器

STRUTS 入门教学(1)

STRUTS 入门教学(1)
下拉加载更多内容 ↓