迷宫探路II

穆穆小妞

穆穆小妞

2016-02-19 13:27

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的迷宫探路II懂设计的网友们快点来了解吧!
    对《迷宫探路》做了一点改进。小人在行走过程中不走回头路,即不重复经过同一点。                      /* crazymaze.c*/
  /* 2003-8-26 */
  #include stdlib.h
  #include time.h
  #include math.h
  #include stdio.h
  #include graphics.h
  #define N 22
  #define M 22
  #define MAXLEN 200;
  int bg[M][N];
  strUCt square{
      int x;
      int y;
      int direc;
  }p[200];
  void makebg(int,int);
  void drawbg(int[][],int,int,int,int,int);
  void drawman(int,int,int);
  void rect(int,int,int,int);void main(){/* main()开始 */
  int step=20;
  int len=10;
  int size=20;
  int x=0,y=0,x0=0,y0=0;
  int i=0,j=0,k=0,count=0;
  int gdriver=DETECT,gmode;
  char ch;
  int direc;
  makebg(M,N);
  /*  registerbgidriver(EGAVGA_driver);
   initgraph(&gdriver,&gmode,"c:urboc2");*/
  initgraph(&gdriver,&gmode,"c:c20gi");
  cleardevice();
  setwritemode(XOR_PUT);
  settextstyle(1,0,3);
  setcolor(GREEN);
  outtextxy(100,180,"Press Q to quit");
  setcolor(BLUE);
  setfillstyle(LINE_FILL,BLUE);drawbg(bg,M,N,size,0,0);
  setcolor(GREEN);
  outtextxy(60,120,"PRESS KEY 1 :YOU ,");
  outtextxy(70,150,"OTHER KEY :AUTOMATIC");
  setcolor(WH99vE);
  x+=len;y+=len;
  drawman(x,y,len);
  x0=x;y0=y;
  if((ch=getch())=='1'){
  /* 人工控制 */
  while((ch=getch())!='q'){
    delay(800);
    drawman(x,y,len);
    switch(ch){
      case 'a':
          if(j0&&bg[i][j-1]==0){
              if(xstep){x-=step;j--;};
          }
          break;
      case 's':
          if(iM-1&&bg[i+1][j]==0){
              if(y479-step){y+=step;i++;};
          }
          break;
      case 'd':
          if(jN-1&&bg[i][j+1]==0){
              if(x639-step){x+=step;j++;}
          }
          break;
      case 'w':
          if(i0&&bg[i-1][j]==0){
              if(ystep){y-=step;i--;}
          }
          break;
      default :break;
    }
    drawman(x,y,len);
   if(i=M-1&&j=N-1){
      settextstyle(4,0,3);
      setcolor(RED);
      outtextxy(150,260,"YOU WIN!");
    }
    setcolor(WH99vE);
  }
   closegraph();
  }/* 人工控制结束 */
  
  else{
  /* 电脑控制 */
  /* direc表示上一步运动方向 */
  /* 并表示下一步运动方向 */
  /* 0~3分别表示 西、北、东、南 */direc=2;
  i=j=0;k=0;
  while(iM-1jN-1){
      switch(direc){
      case 0:
          /* 以3,0,1,2的次序尝试 */
          if(iM-1&&bg[i+1][j]==0){
              y+=step;i++;
              direc=3;
          }
          else if(j0&&bg[i][j-1]==0){
              x-=step;j--;
              direc=0;
          }
          else if(i0&&bg[i-1][j]==0){
              y-=step;i--;
              direc=1;
          }
          else {
              x+=step;j++;
              direc=2;
          }
          p[k].x=x;
          p[k].y=y;
          p[k].direc=direc;
          if(k0){
              count=k-1;
              while(count=0
              &&(p[count].x!=p[k].XP[count].y!=p[k].y))
              count--;
              if(count=0){
                  k=count;
                  p[k].direc=direc;
                  i=(p[k].y-len)/step;
                  j=(p[k].x-len)/step;
              }
          }
          k++;
          break;
      case 1:
          if(j0&&bg[i][j-1]==0){
              x-=step;j--;
              direc=0;
          }
          else if(i0&&bg[i-1][j]==0){
              y-=step;i--;
              direc=1;
          }
          else if(jN-1&&bg[i][j+1]==0){
              x+=step;j++;
              direc=2;
          }
          else{
              y+=step;i++;
              direc=3;
          }
          p[k].x=x;
          p[k].y=y;
          p[k].direc=direc;
          if(k0){
              count=k-1;
              while(count=0
              &&(p[count].x!=p[k].xp[count].y!=p[k].y))
              count--;
         &
  
展开更多 50%)
分享

猜你喜欢

迷宫探路II

编程语言 网络编程
迷宫探路II

迷宫探路

编程语言 网络编程
迷宫探路

s8lol主宰符文怎么配

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

迷宫

编程语言 网络编程
迷宫

不思议迷宫冒险迷宫村怎么开启

不思议迷宫 手游攻略 手机游戏
不思议迷宫冒险迷宫村怎么开启

lol偷钱流符文搭配推荐

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

梦见迷宫

周公解梦 解梦
梦见迷宫

魔幻迷宫攻略

电脑网络
魔幻迷宫攻略

lolAD刺客新符文搭配推荐

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

如何单步执行外部程序

如何单步执行外部程序

全面解析WAP技术

全面解析WAP技术
下拉加载更多内容 ↓