function TAnt.What_I_See : integer

Zpět
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;