读书人

关于迷宫的有关问题,

发布时间: 2012-03-26 15:46:56 作者: rapoo

关于迷宫的问题,急急急
请教:
#include <stdio.h>

int p=0;
int a[99];


void push(int ph)
{
a[p]=ph;
p++;
}
int pop()
{
if(p==0){
return 0;
}
p--;
return a[p];
}
int pharray[9][9];
void main()
{
int i;
int j;
int s;
int g;


int pharray[10][10]={
{1,1,1,1,1,1,1,1,1,1},
{1,0,1,0,0,0,0,1,0,1},
{1,0,0,1,0,0,0,1,0,1},
{1,0,0,0,1,1,1,0,0,1},
{1,0,1,1,1,0,0,0,1,1},
{1,0,0,0,1,0,0,0,0,1},
{1,0,1,0,0,0,1,0,0,1},
{1,0,1,1,1,0,1,1,0,1},
{1,1,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1}
};


gotoxy(40,40);
i=1;
j=1;
pharray[j][i]=31;
again:
if(pharray[j+1][i]==0&&(i!=8||j!=8))
{
pharray[j+1][i]=31;
push(j*10+i);
j=j+1;
goto again;}
else
if(pharray[j][i+1]==0&&(i!=8||j!=1))
{pharray[j][i+1]=16;
push(j*10+i);
++i;
goto again;}
else
if(pharray[j][i-1]==0&&(i!=8||j!=1))
{(pharray[j][i-1]=17);
push(j*10+i);
i=i-1;
goto again;}
else
if(pharray[j-1][i]==0&&(i!=8||j!=1))
{
pharray[j-1][i]=30;
push(j*10+i);
j=j-1;
goto again;}
else
if(i!=8&&j!=1)
{
if(pharray[i+1][j]==1 && pharray[i][j+1]==1 && pharray[i][j-1]==1 &&
pharray[i-1][j]==1)
{
printf( "There is no path! ");
return;}
else
pharray[j][i]=18;
s=pop();
j=s/10;
i=s%10;
goto again;}
else
push(18);
for(i=0;i <10;i++)
{
for(j=0;j <10;j++)
printf( "%c ",pharray[i][j]);
printf( "\n ");}
for(g=0;g <5;g++){
gotoxy(2*(a[g]%10+1)-2,a[g]/10);
sleep(1);
}
for(g=4;g <9;g++)
{

gotoxy((a[g]%10+1),a[g]/10+1);
sleep(1);


}
for(g=9;g <15;g++)
{
gotoxy((a[g]%10+7)-6,a[g]/10+1);
sleep(1);
}


printf( "\n ");
printf( "\n\n\n\n\n\n\n\n ");
printf( " The path is: ");
for(g=0;g <p;g++)
{
printf( "%d ",a[g]);
printf( "_ ");
}
}


这是我的一段程序,我想使这个迷宫更加完美,请教怎么使迷宫整体移动到窗口的中间,而且怎样给迷宫添色?????

[解决办法]
什么环境下的代码?
[解决办法]
这goto语句用的,看见就晕乎。

如果是在控制台上编程的话
#include <graphic.h> 可以使你的迷宫着色,
至于窗口中间位置显示,可以在打印迷宫行之间添加空格
[解决办法]
没有这个类库吗?
[解决办法]
忘记说明,这是turboc中的库
如果采用不同的编译器,参考用户手册。

读书人网 >C语言

热点推荐