王者光耀第三次

1、思路描述:
我是负责小兵的AI部分,其实小兵的移动和攻击和英雄有许多相似之处,理应继承于同一个基类,但是我们偷了个懒,就没用继承。而小兵AI的重点就在于什么时候移动,什么时候停止。我是在小兵前面有敌人时让小兵停止移动并开始攻击,这里我就套用了英雄的移动和攻击函数,不同之处在于需要先判断小兵前面有没有敌人,还有小兵的攻击距离为一。
2、代码说明:代码相较于上次有所改进。

void kar::Gmove(kar **x)
{
	ed=clock();
	if(ed-bg<1000)return ;
	bg=ed;
	pos *itsp;
	int p=0,flag=1,i;
	for(i=10;i<29;i++)
	{
		if(x[i]==NULL)continue;
		itsp=new pos(x[i]->nowpos);
		itsp->ix+=x[i]->dir;
		for(p=0;p<29;p++)
		{
			if(x[p]==NULL)continue;
			if(x[p]->camp!=x[i]->camp&&x[p]->nowpos==*itsp)
			{
				x[p]->attacked(x[i]->attack);//如果前方有敌人就进行攻击
				break;
			}
		}//判断小兵前方有无敌人
		delete itsp;
		if(x[i]->blood<=0)
		{
			delete x[i];x[i]=NULL;continue;
		}
		if(p==29)x[i]->move(x[i]->dir);//如果把存放小兵的指针数组扫描完没有发现前方有敌人就移动
	}
}
3、各阶段花费时间:

在第一阶段,讨论时间为3到4个小时,对小兵的类的构建用了两个小时。
在第二阶段,采取边讨论边敲代码的方式,讨论了三个小时,回去又接着敲了小兵的移动又敲了两三个小时。
在第三阶段,对小兵移动和攻击进行改进,又花了三个小时。
4、遇到的困难:
虽然我不是负责通过键盘来操控英雄部分的,但是我为了能学到怎么一秒移动一格,我去百度了一下,然后就了解到了clock()的用法。

posted @ 2018-06-28 20:50  b6666666666666666b  阅读(129)  评论(0编辑  收藏  举报