发新话题
打印

迷宫问题

迷宫问题

大家好,我是一个菜鸟,现在正在学习数据结构,希望大家指点我,我编写了一个走迷宫的程序,希望大家指点。源程序如下:(可以动态实现)
#include"time.h"
#include "stdio.h"
#include "graphics.h"
#include "conio.h"
#define null 0
int a[11][15]={ ,       /定义迷宫,这是我们课程设计,所以就用老师给的了/
                ,       /0代表墙,1代表可以通行/  
                ,
                ,
                ,
                ,
                ,
                ,
                ,
                ,
               
               };
struct moving       /定义走动方向/
{int x;
int y;
}move[9]=,,,,,,,,};
typedef struct Position *PPosition;
struct Position    /定义结构体/
{
  int x;
  int y;
  int direction;
  PPosition link;
};
struct LinkPosition    /引入一层封装,其实就是好定义空栈罢了/
{
  PPosition top;
};
typedef struct LinkPosition *PLinkPosition;
PLinkPosition createEmptyPosition(void)  /建立空栈/
{
  PLinkPosition plposition;
  plposition=(PLinkPosition)malloc(sizeof(struct LinkPosition));
  plposition->top=null;
  return(plposition);
}
void push(PLinkPosition plposition,int x,int y)    /压栈/
{
  PPosition p;
  p=(PPosition)malloc(sizeof(struct Position));
  p->x=x;
  p->y=y;
  p->direction=1;
  p->link=plposition->top;
  plposition->top=p;
}
void pop(PLinkPosition plposition)   /弹栈/
{
  PPosition p;
  p=plposition->top;
  plposition->top=plposition->top->link;
  free(p);
}
int judge(PLinkPosition plposition)   /判断这个位置是不是栈中已有的/
{int m,n;
PPosition p;
m=plposition->top->x;
n=plposition->top->y;
p=plposition->top->link;
  while(p!=null)
    {if(p->x!=m||p->y!=n)p=p->link;
       else
         {return(0);
          break;
         }
    }
return(1);
}
void maze(void)    /画迷宫/
{
int i,j;
setbkcolor(1);
setcolor(4);
rectangle(90,50,540,380);
for(i=80;i<380;i=i 30)
   line(90,i,540,i);
for(i=120;i<540;i=i 30)
   line(i,50,i,380);
for(i=0;i<11;i  )
   {for(j=0;j<15;j  )
      if(a[j]==1)floodfill(105 j*30,65 i*30,4);
   };
}
void erasermouse(PLinkPosition plposition)    /擦除所走过的点/
{
int x1,y1;
x1=105 30*(plposition->top->y-1);
y1=65 30*(plposition->top->x-1);
setcolor(15);
line(x1-10,y1,x1 10,y1);
line(x1,y1-10,x1,y1 10);
setcolor(4);
}
void mouse(PLinkPosition plposition)  /画出当前位置/
{
int x1,y1;
x1=105 30*(plposition->top->y-1);
y1=65 30*(plposition->top->x-1);
line(x1-10,y1,x1 10,y1);
line(x1,y1-10,x1,y1 10);
}
void TIMEDELAY()      /时间延迟函数,这样动态实现时才可以看清/
{
clock_t time;
time=5 clock();
while(time>clock());
}

main()
{
PLinkPosition plposition,answer;
PPosition p;
int i,j,d,m,n,m1,n1,x1,y1,driver=VGA,mode=VGAHI;
int c[13][17]=;            
clock_t times;
initgraph(

TOP

发新话题