贪吃蛇AI操控
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
char a[200][200];
int number=10,n,m,cox,coy,r;
struct date
{
int h,s;
}p[200200];
void f()
{
for(int i=2;i<=number;i++)
{
a[p[i].h][p[i].s]='*';
}
a[p[1].h][p[1].s]='@';
}
inline bool ina()
{
int u=p[1].h;
int i=p[1].s;
if(u==1 || u==45)
return 0;
if(i==1 || i==80)
return 0;
return 1;
}
inline void create1()
{
srand(time(NULL));
m=rand()%43+2;
n=rand()%78+2;
a[m][n]='$';
}
inline bool finds()
{
for(int i=1;i<=number;i++)
if(p[i].h==m&&p[i].s==n)
return 1;
return 0;
}
void move()
{
if(m>p[1].h)
{
r=2;
}
else if(m==p[1].h)
{
if(n>p[1].s)
r=4;
else if(n==p[1].s)
r=0;
else
r=3;
}
else
{
r=1;
}
if(r==1) //w
{
a[p[number].h][p[number].s]=' ';
for(int i=number;i>=2;i--)
p[i].h=p[i-1].h,p[i].s=p[i-1].s;
p[1].h--;
cox=p[number].h;
coy=p[number].s;
f();
}
if(r==2) //s
{
a[p[number].h][p[number].s]=' ';
for(int i=number;i>=2;i--)
{
p[i].h=p[i-1].h;
p[i].s=p[i-1].s;
}
p[1].h++;
cox=p[number].h;
coy=p[number].s;
f();
}
if(r==3) //a
{
a[p[number].h][p[number].s]=' ';
for(int i=number;i>=2;i--)
{
p[i].h=p[i-1].h;
p[i].s=p[i-1].s;
}
p[1].s--;
cox=p[number].h;
coy=p[number].s;
f();
}
if(r==4) //d
{
a[p[number].h][p[number].s]=' ';
for(int i=number;i>=2;i--)
{
p[i].h=p[i-1].h;
p[i].s=p[i-1].s;
}
p[1].s++;
cox=p[number].h;
coy=p[number].s;
f();
}
if(finds()==1)
{
number++;
if(p[number-1].h!=2)
p[number].h=p[number-1].h-1,p[number].s=p[number-1].s;
else
{
if(p[number-1].s!=2)
p[number].h=p[number-1].h,p[number].s=p[number-1].s-1;
else
p[number].h=p[number-1].h+1,p[number].s=p[number-1].s;
}
create1();
}
if(ina()==0)
{
a[p[1].h][p[1].s]=='*';
for(int i=1;i<number-1;i++)
{
p[i].h=p[i+1].h;
p[i].s=p[i+1].s;
}
p[number].h=cox;
p[number].s=coy;
f();
move();
}
}
inline void create()
{
for(int i=1;i<=45;i++)
{
for(int j=1;j<=80;j++)
{
a[i][j]=' ';
if(i==1 || i==45)
a[i][j]='*';
if(j==1 ||j==80)
a[i][j]='*';
}
}
}
inline void print()
{
for(int i=1;i<=45;i++)
{
for(int j=1;j<=80;j++)
printf("%c",a[i][j]);
printf("\n");
}
}
int main()
{
create();
create1();
for(int j=40;j<=49;j++)
{
a[20][j]='*';
p[j-39].h=20;
p[j-39].s=j;
}
a[20][40]='@';
print();
while(1)
{
system("cls");
srand(time(NULL));
int rn=rand()%5+1;
for(int i=1;i<=rn;i++)
move();
print();
}
system("pause");
}