|
已有程序中只是寻找最近的敌人,请问如何在此基础上实现 能否秒杀、及其属性相克的问题。。。附:能秒杀的最优先,属性相克的其次,都不是的话就是第一次找到的敌人坐标。
typedef struct bingzhong
{
int hp;//血量
int gongjili;//攻击力
int bz;//兵种
int fw;//攻击范围
int x;//最近敌军的纵向坐标
int y;//最近敌军的横向坐标
int xingdongli;//一次能移动的次数
int bushu;//是否被移动过的标志
}Bing;//定义士兵
void search(Bing head[][N],int hang)
{
int i=0,j=0;
for(i=0;i<hang;i++)
for(j=0;j<N;j++)
if(head[j].bz>0)
search1(head[0],hang,&head[j],i,j);
}
void search1(Bing head[][N],int hang,Bing* s,int x,int y)
{
int x1=0,y1=0,juli=0,i=0,j=0,biaoshi=10000;
if(s->bz>0 && s->bz<4)
{
for(i=hang-1;i>=0;i--)
for(j=39;j>=0;j--)
if(head[j].bz>3 && head[j].bz<7)
{
juli=abs(i-x)+abs(j-y);
if(juli<biaoshi)
{
biaoshi=juli;
s->x=i;
s->y=j;
}
}
}
if(s->bz>3 && s->bz<7)
{
for(i=0;i<hang;i++)
for(j=0;j<N;j++)
if(head[j].bz>0 && head[j].bz<4)
{
juli=abs(i-x)+abs(j-y);
if(juli<biaoshi)
{
biaoshi=juli;
s->x=i;
s->y=j;
}
}
}
}//寻找最近敌方士兵
|
|