| Code: | function [dRow,dCol,action,mark] = solver(mainMap,foodMap,myAntMap,opAntMap, ...
myScentMap,opScentMap,myDeathMap,opDeathMap)
action = 0;
if opAntMap(3,3)>0
action = -1; %-1 attack, 1 carry
end
if foodMap(3,3)>0
action = 1;
end
if mainMap(3,3)==1
action = 0;
end
dRow=0;
dCol=0;
GreatScentj=-1;
GreatScenti=-1;
LessScentj=-1;
LessScenti=-1;
MyHormigueroj=-1;
MyHormigueroi=-1;
nearFoodi=-1;
nearFoodj=-1;
distFood= 100;
GreatScent=-1;
LessScent=10000;
for i = 1:5
for j = 1:5
if i~=j
if myScentMap(i,j) > GreatScent
GreatScent=myScentMap(i,j);
GreatScentj=j;
GreatScenti=i;
end
if myScentMap(i,j) < LessScent
LessScent=myScentMap(i,j);
LessScentj=j;
LessScenti=i;
end
if mainMap(i,j)==1
MyHormigueroj=j;
MyHormigueroi=i;
end
if foodMap(i,j)>1
if (MyHormigueroj~=j) && (MyHormigueroi~=i )
if sqrt((i-3)*(i-3)+(j-3)*(j-3))<distFood
distFood=sqrt((nearFoodi-3)*(nearFoodi-3)+(nearFoodj-3)*(nearFoodj-3));
nearFoodi=i;
nearFoodj=j;
end
end
end
end
end
end
if action > -1
if action == 1
if MyHormigueroi~=-1
oi=MyHormigueroi;
oj=MyHormigueroj;
else
oi=GreatScenti;
oj=GreatScentj;
end
else
if nearFoodi~=-1
oi=nearFoodi;
oj=nearFoodj;
else
oi=round(rand*2) - 1;
oj=round(rand*2) - 1;
%oi=LessScenti;
%oj=LessScentj;
end
end
oj=oj-3;
oi=oi-3;
oj=sign(oj);
oi=sign(oi);
dRow = oi;
dCol = oj;
if isnan(mainMap(3+oi,3+oj))
oi = round(rand*2) - 1;
oj = round(rand*2) - 1;
end
while (isnan(mainMap(3+oi,3+oj)))
if (oi==0) && (oj==1)
oi=1;
oj=1;
elseif (oi==1) && (oj==1)
oi=1;
oj=0;
elseif (oi==1) && (oj==0)
oi=1;
oj=-1;
elseif (oi==1) && (oj==-1)
oi=0;
oj=-1;
elseif (oi==0) && (oj==-1)
oi=-1;
oj=-1;
elseif (oi==-1) && (oj==-1)
oi=-1;
oj=0;
elseif (oi==-1) && (oj==0)
oi=-1;
oj=1;
elseif (oi==-1) && (oj==1)
oi=0;
oj=1;
end
if (oi==dRow) && (oj==dCol)
break;
end
end
dRow = oi;
dCol = oj;
end
mark=5;
end
|