程序设计说明书
- 格式:doc
- 大小:33.50 KB
- 文档页数:7
程序设计说明书
------游戏迷宫
一、 程序设计思想:
此程序是一款为年轻人设计的脑筋游戏,它可以按照我们的意愿在屏幕上自如地移动,是人工智能领域中的经典问题。利用计算机强大的计算机能力和庞大的存储空间可以采用讨论问题每一步走法,并存储形成的状态。当某一走法不可能达到目标时,可以回溯到并选择另一种走法。采用这种方法可以节省编程者的劳动。对于简单的问题能够轻松得到答案。但是在此处,由于求胜过程中出现的中间状态实在太多,在通常使用微机上仍可能出现内存不足的问题,这就迫使要考虑让计算机多一点逻辑上的选择判断消除大量不必要的中间状态,尽量达到要求,也就是采用人工智能的方法来解决问题。
二、程序
1. #include
#include
#include
#include
#include
2. main()
{
int a[32][22];
char o;
int c,d,four,k=0,end,step;
int j[500][3];
int x=0,y,i,gd=9,gm=2;
3. initgraph(&gd,&gm,"");
for(i=0;i<500;i++)
{
j[i][0]=random(670);
j[i][1]=random(480);
j[i][2]=1;
}
for(i=0;i<100;i++)
{
circle(j[i][0],j[i][1],2);
setfillstyle(1,15);
floodfill(j[i][0],j[i][1],15);
}
for(i=100;i<300;i++)
{
circle(j[i][0],j[i][1],1); setfillstyle(1,15);
floodfill(j[i][0],j[i][1],15);
}
for(i=300;i<500;i++)
putpixel(j[i][0],j[i][1],15);
while(!bioskey(1))
{
x=(x==8)?1:++x;
for(i=0;i<100;i++)
{
y=random(9)+1;
setcolor(0);
circle(j[i][0],j[i][1]+(j[i][2]-1)*3,2);
setfillstyle(1,0);
floodfill(j[i][0],j[i][1]+(j[i][2]-1)*3,0);
if(y%2==0)
{
if(j[i][0]-3>=0)
j[i][0]-=3;
}
else
{
if(j[i][0]+3<=480)
j[i][0]+=3;
}
setcolor(15);
circle(j[i][0],j[i][1]+j[i][2]*3,2);
setfillstyle(1,15);
floodfill(j[i][0],j[i][1]+j[i][2]*3,15);
delay(50);
j[i][2]++;
if(j[i][1]+j[i][2]*3>=480)
{
setcolor(0);
circle(j[i][0],j[i][1]+(j[i][2]-1)*3,2);
setfillstyle(1,0);
floodfill(j[i][0],j[i][1]+(j[i][2]-1)*3,0);
j[i][0]=random(670);
j[i][1]=0;
j[i][2]=1;
}
}
if(x%2==0)
{ for(i=100;i<300;i++)
{
y=random(9)+1;
setcolor(0);
circle(j[i][0],j[i][1]+(j[i][2]-1)*3,1);
setfillstyle(1,0);
floodfill(j[i][0],j[i][1]+(j[i][2]-1)*3,0);
if(y%2==0)
{
if(j[i][0]-3>=0)
j[i][0]-=3;
}
else
{
if(j[i][0]+3<=480)
j[i][0]+=3;
}
setcolor(15);
circle(j[i][0],j[i][1]+j[i][2]*3,1);
setfillstyle(1,15);
floodfill(j[i][0],j[i][1]+j[i][2]*3,15);
delay(50);
j[i][2]++;
if(j[i][1]+j[i][2]*3>=480)
{
setcolor(0);
circle(j[i][0],j[i][1]+(j[i][2]-1)*3,1);
setfillstyle(1,0);
floodfill(j[i][0],j[i][1]+(j[i][2]-1)*3,0);
j[i][0]=random(670);
j[i][1]=0;
j[i][2]=1;
}
}
}
if(x%4==0)
{
for(i=300;i<500;i++)
{
putpixel(j[i][0],j[i][1]+(j[i][2]-1)*3,0);
putpixel(j[i][0],j[i][1]+j[i][2]*3,15);
delay(50);
j[i][2]++;
if(j[i][1]+j[i][2]*3>=480) {
putpixel(j[i][0],j[i][1]+(j[i][2]-1)*3,0);
j[i][0]=random(670);
j[i][1]=0;
j[i][2]=1;
}
}
}
}
4.cleardevice();
settextstyle(3,0,5);
5.setcolor(4);
outtextxy(50,100,"Welcome to game park !");
6.getch();
getch();
closegraph();
randomize();
7.printf("\nDo you want it run or step?(0/1)");
scanf("%d",&step);
clrscr();
for(x=0;x < 32;x++){
for (y=0;y < 22;y++){
if ((y==0)||(x==0)||(x==21)||(y==21)) {
a[x][y]=11;
continue;}
if (random(3)==0) {
a[x][y]=11;
gotoxy(x,y);
printf("\200");
}
else
a[x][y]=1;
}
}
for(y=1;y < 10;y++)
{ a[1][y]=1;
gotoxy(1,y);
printf(" ");
a[20][21-y]=1;
gotoxy(20,21-y);
printf(" ");
}
x=1; y=1;
end=0;
8. gotoxy(1, 23);
printf("Step?(1/0) ");scanf("%d", &step);
if(step==1)
{
9. gotoxy(45,10);
printf("The little mouse is coming!");
}
10. while((x < 20)||(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;
}