王者光耀第三次

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()的用法。

转载于:https://www.cnblogs.com/menmamizigeda/p/9240614.html

你可能感兴趣的:(王者光耀第三次)