| Code: | function [dRow,dCol,action,mark] = solver( ...
mainMap,foodMap,myAntMap,opAntMap, ...
myScentMap,opScentMap,myDeathMap,opDeathMap)
if mainMap(3,3)==1
[dRow,dCol] = aller_vers_sucre(mainMap,foodMap,myAntMap);
action = 0;
elseif foodMap(3,3)>0
[dRow,dCol] = aller_vers_nid(mainMap,myScentMap);
action = 1;
else
[dRow,dCol] = aller_vers_sucre(mainMap,foodMap,myAntMap);
action = 0;
end
mark = marquer_case(mainMap,myScentMap);
function [dRow,dCol] = aller_vers_nid(mainMap,myScentMap)
[a,b]=find(mainMap==1,1);
if ~isempty(a)
[dRow,dCol] = aller_vers_case(a,b,mainMap);
else
if sum(myScentMap(:))==0
[dRow,dCol] = aller_vers_case(floor(rand*(5-eps))+1,floor(rand*(5-eps))+1,mainMap);
else
[a,b]=max(myScentMap(:));
a=mod(b-1,5)+1;
b=floor((b-1)/5)+1;
[dRow,dCol] = aller_vers_case(a,b,mainMap);
end
end
function [dRow,dCol] = aller_vers_sucre(mainMap,foodMap,myAntMap)
[a,b]=find((foodMap-myAntMap>0)&(mainMap~=1),1);
if ~isempty(a)
[dRow,dCol] = aller_vers_case(a,b,mainMap);
else
[dRow,dCol] = aller_vers_case(floor(rand*(5-eps))+1,floor(rand*(5-eps))+1,mainMap);
end
function [dRow,dCol] = aller_vers_case(a,b,mainMap)
if a<3
dRow = -1;
elseif a==3
dRow = 0;
else
dRow = 1;
end
if b<3
dCol = -1;
elseif b==3
dCol = 0;
else
dCol = 1;
end
while isnan(mainMap(3+dRow,3+dCol))
dRow=floor(3*rand)-1;
dCol=floor(3*rand)-1;
end
function mark = marquer_case(mainMap,myScentMap)
if ~isempty(find(mainMap(2:4,2:4)==1,1))
mark = 100;
elseif ~isempty(find(myScentMap(2:4,2:4)>0,1))
mark = 10;
else
mark=0;
end
|