贪吃蛇AI操控

贪吃蛇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");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值