啊哈磊_编程从这里起步
标题:
神经猫
[打印本页]
作者:
那麼任真
时间:
2019-1-30 11:49
标题:
神经猫
神经猫下载
复制代码
作者:
那麼任真
时间:
2019-1-30 11:50
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
int aa[9][9],mx=4,my=4,min;
char a[9][9];
char bestf;
void tryf(char fx)
{
int i,j,tail,head,ax[1000],ay[1000],astep[1000],flag,tx,ty,px,py;
int faji[6][2]={{-1,0},{0,1},{1,0},{0,-1},{-1,1},{1,1}};
int faou[6][2]={{-1,0},{0,1},{1,0},{0,-1},{-1,-1},{1,-1}};
//记录数组防止一个点在一次寻路中被走多变,从而死循环
for(i=0;i<=8;i++)
for(j=0;j<=8;j++)
aa[i][j]=0;
aa[mx][my]=1;
if(fx=='U')
{ px=-1;py=0;}
else if(fx=='R')
{ px=0;py=1;}
else if(fx=='D')
{ px=1;py=0;}
else if(fx=='L')
{ px=0;py=-1;}
else if(fx=='l')
{ px=-1;py=-1;}
else if(fx=='u')
{ px=-1;py=1;}
else if(fx=='r')
{ px=1;py=1;}
else if(fx=='d')
{ px=1;py=-1;}
if(mx+px<0 || mx+px>8 || my+py<0 || my+py>8) return;
if(a[mx+px][my+py]=='.')
{
tail=1;
head=1;
ax[tail]=mx+px; ay[tail]=my+py; astep[tail]=1;
tail++;
while(head!=tail)
{
flag=0;
for(i=0;i<=5;i++)
{
if(ax[tail]%2==1)
{tx=ax[head]+faji[i][0]; ty=ay[head]+faji[i][1];}
else
{tx=ax[head]+faou[i][0]; ty=ay[head]+faou[i][1];}
if(tx<0 || tx>8 || ty<0 || ty>8) continue;//越界
if(a[tx][ty]=='.' && aa[tx][ty]==0)
{
ax[tail]=tx;ay[tail]=ty;astep[tail]=astep[head]+1;
aa[tx][ty]=1;
tail++;
if(tx==0 || tx==8 || ty==0 || ty==8)
{
flag=1;
break;
}
}
}
if(flag==1)
break;
//printf("%d %d\n",head,tail);
head++;//cong kuozhan chu de dian zai kuozhan
}
if(flag==1)
{
//printf("%d %c\n",astep[tail-1],fx);
if(min>astep[tail-1])
{
min=astep[tail-1];
bestf=fx;
}
}
}
return ;
}
int main()
{
int n=50,x,y,i,j,p,q;
for(i=0;i<=8;i++)
for(j=0;j<=8;j++)
a[i][j]='.';
a[mx][my]='M';
srand((unsigned)time(NULL));
for(i=1;i<=n;i++)
{
x=rand()%9;
y=rand()%9;
if(!(x==mx && y==my)) a[x][y]='@';
}
//
for(i=0;i<=8;i++)
{
if(i%2!=0) printf(" ");
for(j=0;j<=8;j++)
printf(" %c",a[i][j]);
printf("\n");
}
//game start
while(1>0)
{
scanf("%d %d",&x,&y);
while(a[x][y]!='.')
{
printf("input error,please input again ");
scanf("%d %d",&x,&y);
}
a[x][y]='@';
//
system("cls");
for(i=0;i<=8;i++)
{
if(i%2!=0) printf(" ");
for(j=0;j<=8;j++)
printf(" %c",a[i][j]);
printf("\n");
}
//Sleep(1000);
bestf='0';
min=99999999;
tryf('U');
tryf('R');
tryf('D');
tryf('L');
if(mx%2==1)
{
tryf('u');
tryf('r');
}
else
{
tryf('l');
tryf('d');
}
//
if (bestf=='0')
{
printf("You Win\n");
break;
}
a[mx][my]='.';
if(bestf=='U')
{ mx=mx-1;my=my+0;}
else if(bestf=='R')
{ mx=mx+0;my=my+1;}
else if(bestf=='D')
{ mx=mx+1;my=my+0;}
else if(bestf=='L')
{ mx=mx+0;my=my-1;}
else if(bestf=='l')
{ mx=mx-1;my=my-1;}
else if(bestf=='u')
{ mx=mx-1;my=my+1;}
else if(bestf=='r')
{ mx=mx+1;my=my+1;}
else if(bestf=='d')
{ mx=mx+1;my=my-1;}
a[mx][my]='M';
//printf("%d %c\n",min,bestf);
system("cls");
for(i=0;i<=8;i++)
{
if(i%2!=0) printf(" ");
for(j=0;j<=8;j++)
printf(" %c",a[i][j]);
printf("\n");
}
if(mx==0 || mx==8 || my==1 || my==8)
{
printf("Game Over\n");
break;
}
}
system("pause");
return 0;
}
复制代码
作者:
那麼任真
时间:
2019-1-30 11:51
下载
为了凑字数(11111111111111111111111111111111111111)
作者:
那麼任真
时间:
2019-1-30 11:51
下载
为了凑字数(11111111111111111111111111111111111111)
bfs-mao.c
2019-1-30 11:44 上传
点击文件名下载附件
3.65 KB, 下载次数: 2
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2