procedure TMravenec.Pohyb

Zpět
procedure TMravenec.Pohyb;
var x,y,distance,i,nearest,pom,Ant_See : integer;
    random_angle : integer;
begin
if (move_ant=0) or (move_ant=5) or (move_ant=3) then
begin
 inc(citac);
 if ((citac mod 16)=0) then if live>0 then live:=live-1;
 if naklad>0 then begin
     if ((citac mod 4)=0) then energy:=energy-1;
     end
   else  if ((citac mod 8)=0) then energy:=energy-1;
 if (energy=0) then live:=0;
 if live=0 then Ant_Hill.curr_num_ants_really:= Ant_Hill.curr_num_ants_really -1;
 Application.ProcessMessages;
 Ant_See := What_I_See;
 if (Ant_See=1) then
    begin     // vidi mraveniste
     if (naklad>0) then
        begin
         Ant_Hill.Put_Wood_Into_Hill(naklad,Ant_Hill.curr_size_ant_hill);
         naklad:=0;
         Smer:=Smer+Pi/2;
         Step;
        end
        else Step;
    end
 else if (Ant_See=2) then
    begin
      Step;
    end
 else if (Ant_See=3) then    // kamen
    begin
     repeat
      random_angle:=random(360);
     until random_angle<>0;
      smer:=Pi/180*random_angle;
      delka:=random(20)+20;
      citac:=0;
      Smer:=Smer+Pi;
      Step;
    end
 else if (Ant_See=4) then  // studnu
    begin
      if (energy<=100) then energy:=energy+5  // rovnost jen v dokumentaci 
      else begin
       repeat
        random_angle:=random(360);
       until random_angle<>0;
        smer:=Pi/180*random_angle;
        delka:=50;
        citac:=0;
       // Smer:=Smer+Pi;
        Step;
      end;
    end
 else if (Ant_See=5) then    // misto, kam ma jit
    begin
      move_ant:=2;
    end
 else if (Ant_See=0) then   // nic
  begin

 randomize;
 x:=round(xx);
 y:=round(yy);
 if (move_ant=3) then Go(kam_x,kam_y)
 else
 if ((citac mod inteligence)=0) or (citac>=delka) then
   begin
    distance:=800;
    nearest:=-1;

    if naklad>0 then
      begin
         Find_Ant_Hill;
      end
      else if (energy>50) then begin
        if (uloha=0) then Find_Egg
           else Find_Wood;
        end
        else Find_Well;
   if citac>=delka then
     begin
     if naklad=0 then
       begin
        delka:=random(20)+20;
        citac:=0;
        if (energy>50) then begin
           if (uloha=0) then Find_Egg
              else Find_Wood;
          end
          else Find_Well;
       end
       else
        begin
         Find_Ant_Hill;
        end;
     end;
   end;
  Step;

 end
  else if (Ant_See>=10) and (Ant_See<=100) then  // rovnbost jen v dokumentaci 
 begin// vidi vajicko
   if (naklad=0) and (energy>50) and (live<=90) then
     begin
       naklad:=Ant_See;
       Ant_Hill.Data_Egg[Ant_See-10].where:=4;  // mravenec nese vajicko a to neni nevykresluje
       Find_Ant_Hill;
     end
     else if (naklad=0) then  // malo energie pro noseni vetvisek
        begin

        end;
   Step;
 end       

 else if (Ant_See>=100) then
 begin// vidi vetvicku
   if (naklad=0) and (energy>50) and (live<=90) then
     begin
       naklad:=Ant_See;
       Ant_Hill.Data_Wood[naklad-100].where:=4;  // mravenec nese vetsicku a ta neni nevykresluje
       Ant_Hill.curr_num_carried_woods := Ant_Hill.curr_num_carried_woods+1;
       Ant_Hill.curr_num_woods_really := Ant_Hill.curr_num_woods_really -1;
       Find_Ant_Hill;
     end;
   Step;
 end;
end;

 Zobraz;

 end;