小白鼠钻迷宫.c

来自「程序实例」· C语言 代码 · 共 93 行

C
93
字号
#include < stdlib.h>
#include < time.h>
#include < stdio.h>
#include < conio.h>
main()
{int x,y,a[72][22];
 char o;
 int c,d,four,k=0,i,end,step;
 randomize();
/* printf("Do you want it run or step?(0/1)");
 scanf("%d",&step);*/
 clrscr();
 for(x=0;x < 72;x++){
    for (y=0;y <  22;y++){
        if ((y==0)||(x==0)||(x==71)||(y==21)) {
            a[x][y]=11;
            continue;}
        if (random(3)==0) {
            a[x][y]=11;
            gotoxy(x,y);
            printf("#");
            }
        else
            a[x][y]=1;
    }
}

for(y=1;y <  10;y++)
    { a[1][y]=1;
    gotoxy(1,y);
    printf(" ");
    a[70][21-y]=1;
    gotoxy(70,21-y);
    printf(" ");
}
x=1;
y=1;
end=0;
gotoxy(1, 23);
printf("Step?(1/0) ");scanf("%d", &step);
//Above is to prepare the Maze. Now, our little mouse is comming.

while((x < 70)||(y < 20)) {

    c=x;d=y;four=0;
    do{
        k++;
        if ((a[x+1][y]==1)||((a[x+1][y]%7==0)&&(a[x][y]%2!=0)&&(four==1)))
        {
            a[x][y]=a[x][y]*2;
            x=x+1;
            break;
        }
        if ((a[x][y+1]==1)||((a[x][y+1]%5==0)&&(a[x][y]%3!=0)&&(four==1)))
        {
            a[x][y]=a[x][y]*3;
            y=y+1;
            break;
            }
        if ((a[x][y-1]==1)||((a[x][y-1]%3==0)&&(a[x][y]%5!=0)&&(four==1)))
        {
            a[x][y]=a[x][y]*5;
            y=y-1;
            break;}
        if ((a[x-1][y]==1)||((a[x-1][y]%2==0)&&(a[x][y]%7!=0)&&(four==1)))
            {a[x][y]=a[x][y]*7;
            x=x-1;
            break;
        }
        four++;
        if (four == 2){
            gotoxy(25, 23); printf("Cannot go out!");
            end=1;
            break;}

        if (k>3000) {
            gotoxy(30, 23); printf("Too long!");
            end=1;
            break;}
     }while(1);
     if (end==1) break;
    /* gotoxy(x,y);printf("*");*/
     gotoxy(c,d);printf("-");
     gotoxy(16, 23); printf("step:%d ", k);
     gotoxy(x,y); printf("*");
     if (step==1) getch();
 }/* no end point*/
 if (end==1) printf("Error.");
 else printf("ok!");
 getch();
}/*end main()*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?