function TAnt.What_I_See : integer
function TAnt.What_I_See : integer;
var vzdalenost,i : integer;
px,py,ox,oy,rx,ry : integer;
begin
with Ant_Hill do
begin
What_I_See:=0;
px:= round(xx + cos(smer)*16); // co uvidi v nasledujicim kroku pred sebou
py:= round(yy + sin(smer)*16);
ox:= round(xx + cos(smer-Pi/4)*8); // co uvidi v nasledujicim kroku na levo
oy:= round(yy + sin(smer-Pi/4)*8);
rx:= round(xx + cos(smer+Pi/4)*8); // co uvidi v nasledujicim kroku na pravo
ry:= round(yy + sin(smer+Pi/4)*8);
if (Data_Images[(px div 32),(py div 32)] =3) or (Data_Images[(ox div 32),(oy div 32)]=3) or (Data_Images[(rx div 32),(ry div 32)]=3)
then What_I_See:=3; // vidi kamen
if (Data_Images[(px div 32),(py div 32)]=2) or (Data_Images[(ox div 32),(oy div 32)]=2) or (Data_Images[(rx div 32),(ry div 32)]=2)
then What_I_See:=2; // vidi travu
if ((abs(px-curr_pos_ant_hill_x))< (curr_size_ant_hill div 2)) and ((abs(py-curr_pos_ant_hill_y))< (curr_size_ant_hill div 2))
then
begin // mraveniste
vzdalenost:=round(sqrt((px-curr_pos_ant_hill_x)*(px-curr_pos_ant_hill_x)+(py-curr_pos_ant_hill_y)*(py-curr_pos_ant_hill_y)));
if vzdalenost<(curr_size_ant_hill div 2) then What_I_See:=1;
end;
if (naklad=0) and (uloha=0) then // vidi vajicko a nema naklad a nosi vajicka
for i:=0 to curr_num_eggs-1 do
begin
if Data_Egg[i].where=2 then
begin
if (px>=Data_Egg[i].x) and (px<=(Data_Egg[i].x +14)) and
(py>=Data_Egg[i].y) and (py<=(Data_Egg[i].y +14))
then begin
What_I_See:=i+10; //naklad:=What_I_See;
end;
if (ox>=Data_Egg[i].x) and (ox<=(Data_Egg[i].x +14)) and
(oy>=Data_Egg[i].y) and (oy<=(Data_Egg[i].y +14))
then begin
What_I_See:=i+10; //naklad:=What_I_See;
end;
if (rx>=Data_Egg[i].x) and (rx<=(Data_Egg[i].x +14)) and
(ry>=Data_Egg[i].y) and (ry<=(Data_Egg[i].y +14))
then begin
What_I_See:=i+10; //naklad:=What_I_See;
end;
end;
end;
if (naklad=0) and (uloha>0) then // vidi vetsicku a nema naklad a nosi vetvicky
for i:=0 to curr_num_woods-1 do
begin
if Data_Wood[i].where=2 then
begin
if (px>=Data_Wood[i].x) and (px<=(Data_Wood[i].x +14)) and
(py>=Data_Wood[i].y) and (py<=(Data_Wood[i].y +14))
then begin
What_I_See:=i+100;
end;
if (ox>=Data_Wood[i].x) and (ox<=(Data_Wood[i].x +14)) and
(oy>=Data_Wood[i].y) and (oy<=(Data_Wood[i].y +14))
then begin
What_I_See:=i+100;
end;
if (rx>=Data_Wood[i].x) and (rx<=(Data_Wood[i].x +14)) and
(ry>=Data_Wood[i].y) and (ry<=(Data_Wood[i].y +14))
then begin
What_I_See:=i+100;
end;
end;
end;
if ((px>position_well_x) and (px<=position_well_x+32) and (py>position_well_y) and (py<=position_well_y+32)) or
((ox>position_well_x) and (ox<=position_well_x+32) and (oy>position_well_y) and (oy<=position_well_y+32)) or
((rx>position_well_x) and (rx<=position_well_x+32) and (ry>position_well_y) and (ry<=position_well_y+32)) then
begin
What_I_See:=4; //vidi studni
end;
if (move_ant=3) then
if ((px>kam_x) and (px<=kam_x+24) and (py>kam_y) and (py<=kam_y+24)) or
((ox>kam_x) and (ox<=kam_x+24) and (oy>kam_y) and (oy<=kam_y+24)) or
((rx>kam_x) and (rx<=kam_x+24) and (ry>kam_y) and (ry<=kam_y+24)) then
begin
What_I_See:=5; //vidi studni
end;
end;
end;
|