Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Программа эмуляции развития популяций животных

llPatternType;
{***********************************************************}
procedure ini;
begin
 for i:=1 to g do
 begin
  at:=RANDOM(v)+1;
  tg[i].init((random(630)+5),(random(462)+18),at,ct);
  tg[i].show;
 end;
 for i:=1 to m do
 begin
  at:=random(w)+1;
  HR[i].init((random(630)+5),(random(462)+18),at,ch);
  hr[i].show;
 end;
end;
{***********************************************************}
procedure tnew;
begin
 I:=0;
 REPEAT
 I:=I+1;
 begin
  x:=tg[i].getx;
  y:=tg[i].gety;
  AT:=TG[I].DAIAGE;
  CTP:=TG[I].DAIZWET;
  if (z mod 365)=0 then
  BEGIN
   at:=at+1; {Happy New Year!}
   TG[I].INIT(X,Y,AT,CTP);
  END;
  if at>v then                    {Old ?}
  begin
   tg[i].done;
   tg[i].init(0,0,0,0);
   tt:=tt+1;{умершее животное}
   for j:=i+1 to g do
   begin
     x1:=tg[j].getx;
     y1:=tg[j].gety;
     at1:=tg[j].daiage;
     ct1:=tg[j].daizwet;
     tg[j].done;
     tg[j-1].init(x1,y1,at1,ct1);
     tg[j-1].show;
   end;
   TG[G].INIT(0,0,0,0);
   G:=G-1;
   I:=I-1;
   CONTINUE;
  end;
  x:=tg[i].getx;
  y:=tg[i].gety;
  x:=x+(random(3)-1);
  y:=y+(random(3)-1);
  if x<5 then x:=6;if x>635 then x:=634;if y<17 then y:=18;
  if y>480 then y:=479;
  AT:=TG[I].DAIAGE;
  CTP:=TG[I].DAIZWET;
  tg[i].done;
  IF CT<>0 THEN
  BEGIN
   tg[i].init(x,y,at,CTP);
   tg[i].show;
  END;
 END;
 UNTIL I>=G;
end;
{***********************************************************}
procedure trod;
begin
 if (z mod 365)=0 then  {Happy New Year!}
 begin
  t:=0;
  for i:=1 to g do
  begin
   at:=tg[i].daiage;
   if (tmin<=at) AND (AT<=tmax) then t:=t+1;
  end;
  t:=(t div 2);
  x:=0;
  if t>0 then
  begin
   FOR I:=1 TO T DO
   begin
    J:=RANDOM(TP);
    x:=x+j;
   end;
   for y:=g+1 to g+1+x do
   begin
    tg[y].init((random(630)+5),(random(462)+18),0,ct);
    tg[y].show;
    if y>4100 then break;
   end;
   g:=g+1+x;
   if g>4000 then
   begin
    key:=true;
   end;
  end
  else
  begin
  end;
 end;
end;
{***********************************************************}
procedure hnew;
begin
 I:=0;
 REPEAT
 I:=I+1;
 begin
  x:=hr[i].getx;
  y:=hr[i].gety;
  At:=hr[I].DAIAGE;
  CTp:=hr[I].DAIZWET;
  if (z mod 365)=0 then
  BEGIN
   at:=at+1; {Happy New Year!}
   hr[I].INIT(X,Y,At,CTp);
  END;
  if at>w then                    {Old ?}
  begin
   hr[i].done;
   hr[i].init(0,0,0,0);
   for j:=i+1 to m do
   begin
     x1:=hr[j].getx;
     y1:=hr[j].gety;
     at1:=hr[j].daiage;
     ct1:=hr[j].daizwet;
     hr[j].done;
     hr[j-1].init(x1,y1,at1,ct1);
     hr[j-1].show;
   end;
   hr[m].INIT(0,0,0,0);
   m:=m-1;
   I:=I-1;
   CONTINUE;
  end;
  x:=hr[i].getx;
  y:=hr[i].gety;
  x:=x+(random(3)-1);
  y:=y+(random(3)-1);
  if x<5 then x:=6;if x>635 then x:=634;if y<17 then y:=18;
  if y>480 then y:=479;
  AT:=hr[I].DAIAGE;
  CTp:=hr[I].DAIZWET;
  hr[i].done;
  IF CTp<>0 THEN
  BEGIN
   hr[i].init(x,y,at,CTp);
   hr[i].show;
  END;
 END;
 UNTIL I>=m;
end;
{**********************************************************}
procedure hrod;
begin
 if (z mod 365)=0 then  {Happy New Year!}
 begin
  t:=0;
  for i:=1 to m do
  begin
   at:=hr[i].daiage;
   if (hmin<=at) AND (AT<=hmax) then t:=t+1;
  end;
  t:=(t div 2);
  if t>0 then
  begin
   x:=0;
   FOR I:=1 TO T DO
   begin
    J:=RANDOM(hP);
    x:=x+j;
   end;
   for y:=m+1 to m+1+x do
   begin
    hr[y].init((random(630)+5),(random(462)+18),0,ch);
    hr[y].show;
   end;
   m:=m+1+x;
   if (m>1000) or (m<=0) then
   begin
    key:=true;
   end;
  end;
 end;
end;
{***********************************************************}
procedure dead;{хищники едеят в радиусе 1 пиксель}
begin
 for i:=1 to m do
 begin
  x:=hr[i].getx;
  y:=hr[i].gety;
  j:=0;
  repeat
   j:=j+1;
   x1:=tg[j].getx;
   y1:=tg[j].gety;
   if ((x=x1)and(y=y1))or((x=x1)and(y=y1-1))or((x=x1)
   and(y=y1+1))or((x=x1-1)and(y=y1))or((x=x1-1)and(y=y1-1))
   or((x=x1-1)and(y=y1+1))or((x=x1+1)and(y=y1))or((x=x1+1)and
   (y=y1-1))or((x=x1+1)and(y=y1+1))then
   begin
    tg[j].done;
    tg[j].init(0,0,0,0);
    tt:=tt+1;
    k:=j;
    repeat
     k:=k+1;
     x1:=tg[k].getx;
     y1:=tg[k].gety;
     at1:=tg[k].daiage;
     ct1:=tg[k].daizwet;
     tg[k].done;
     tg[k-1].init(x1,y1,at1,ct1);
     tg[k-1].show;
    until k>=g;
    TG[G].INIT(0,0,0,0);
    G:=G-1;
    j:=j-1;
   end
   else
   begin
   end;
  until j>=g;
 end;
end;
{**********************************************************}
procedure havka;
begin
 if ((z mod 365)=0) and (tt>0) then
 begin
  x1:=(tt div  ht);{сколько прокормилось в этом году}
  j:=0;
  y1:=w;{max vozrast}
  if x1=0 then
  begin
   for i:=1 to m do
   begin
    hr[i].init(0,0,0,0);
    hr[i].done;
   end;
  end;
  if (x1<>0) then
  begin
   repeat
    j:=j+1;
    if hr[j].daiage=y1 then
    begin
     hr[j].done;
     hr[j].init(0,0,0,0);
     for i:=j+1 to m do
     begin
      x:=hr[i].getx;
      y:=hr[i].gety;
      at1:=hr[i].daiage;
      ct1:=hr[i].daizwet;
      hr[i].done;
      hr[i-1].init(x,y,at1,ct1);
      HR[i-1].show;
     end;
     hr[m].init(0,0,0,0);
     m:=m-1;
     if m<=0 then
     begin
      key:=true;
      break;
     end;
    end;
    if j>=m then
    begin
     j:=0;
     y1:=y1-1;
    end;
    if m<=0 then break;
   until x1=m
  end;
 end;
end;
{***********************************************************}
procedure tmor;{мор травоядных}
begin
 y:=g-x;
 if x>0 then
 begin
  repeat
   j:=random(g)+1;
   tg[j].done;
   tg[j].init(0,0,0,0);
   tt:=tt+1;
   for i:=j+1 to g do
   begin
    x1:=tg[i].getx;
    y1:=tg[i].gety;
    at1:=tg[i].daiage;
    ct1:=tg[i].daizwet;
    tg[i].done;
    tg[i-1].init(x1,y1,at1,ct1);
    tg[i-1].show;
   end;
   tg[g].done;
   tg[g].init(0,0,0,0);
   g:=g-1;
  until y=g;
 end;
end;
{***********************************************************}
    procedure hmor;{мор хищников}
begin
 y:=m-x;
 if x>0 then
 begin
  repeat
   j:=random(m)+1;
   hr[j].done;
   hr[j].init(0,0,0,0);
   for i:=j+1 to m do
   begin
    x1:=hr[i].getx;
    y1:=hr[i].gety;
    at1:=hr[i].daiage;
    ct1:=hr[i].daizwet;
    hr[i].done;
    hr[i-1].init(x1,y1,at1,ct1);
    hr[i-1].show;
   end;
   hr[m].done;
   hr[m].init(0,0,0,0);
   m:=m-1;
  until m=y;
 end;
end;
{***********************************************************}
procedure zasux;{засуха}
begin
 tree:=tree - random(round(tree/10));
end;
{***********************************************************}
procedure quit;
begin
 window(1,1,80,25);
 fon(black);
 clrscr;
 GOTOXY(1,24);
 txt(White);
 WRITELN(' --------------------------------------------------
           ----------------------------');
 txt(yellow);
 WRITELN('  Antony Sokolov  |  FidoNet 2:5078/20.4 AKA
            2:5078/20.666 AKA 2:5078/22.666');
 txt(White);
 WRITELN(' --------------------------------------------------
           ----------------------------');
end;
{***********************************************************}
procedure herb;{травоядные}
begin
  colorwind(3,20,77,25,black,yellow);
  gotoxy(32,1);
  writeln('Правила ввода для травоядных');
  gotoxy(2,2);write('Кол-во травоядных не более 3000.');
  write('   Корм на месяц в килограммах. ');gotoxy(2,3);
    write('Помет - кол-во детенышей. ');write('Цвет вывода от 1
         до 15');
  colorwind(40,10,65,19,black,green);
  gotoxy(6,1);
  txt(Yellow);
  write('Травоядные');
  gotoxy(2,2);
  write('Кол-во:         ');  {начальное кол-во травоядных}
  readln(g);
  txt(yellow);
  gotoxy(2,3);
  write('Корм :          ');{кол-во корма в год на одного
                             травоядного}
  readln(ttt);
  ttt:=ttt/1000;
  gotoxy(2,4);
  write('Помет:          ');   {рождаемость}
  readln(tp);
  gotoxy(2,5);
  write('Min детородный: ');
  read(tmin);
  gotoxy(2,6);
  write('Max детородный: ');
  read(tmax);
  gotoxy(2,7);
  write('Max возрaст:    ');
  read(v);
  gotoxy(2,8);
  write('Цвет вывода:    ');
  read(ct);
  colorwind(3,20,77,25,black,black);
end;
{***********************************************************}
procedure beast; {хищники}
begin
  colorwind(3,20,77,25,black,yellow);
  gotoxy(32,1);
  writeln('Правила ввода для хищников');
  gotoxy(2,2);write('Кол-во хищников не более 1000.');
  write('  Корм - кол-во травоядных в год. ');gotoxy(2,3);
  write('Помет - кол-во детенышей. ');write('Цвет вывода от 1
         до 15');
  colorwind(40,10,65,19,black,red);
  gotoxy(8,1);
  txt(Yellow);
  write('Хищники');
  gotoxy(2,2);
  txt(yellow);
  write('Кол-во:         ');
  readln(m);
  gotoxy(2,3);
  write('Корм:           ');{начальное кол-во хищников}
  readln(ht);
  gotoxy(2,4);
  write('Помет:          ');{рождаемость}
  readln(hp);
  gotoxy(2,5);
  write('Min детородный: '); {естественная смертность}
  read(hmin);
  gotoxy(2,6);
  write('Max детородный: '); {естественная смертность}
  read(hmax);
  gotoxy(2,7);
  write('Max возраст:    '); {естественная смертность}
  read(w);
  gotoxy(2,8);
  write('Цвет вывода:    ');
  read(ch);
  colorwind(3,20,77,25,black,black);
end;
{***********************************************************}
procedure env  ; {среда обитания}
begin
  colorwind(3,20,77,25,black,yellow);
  gotoxy(32,1);
  writeln('Правила ввода для среды');
  gotoxy(2,2);write('Кол-во травы не менее 1000.');
  write('Процент восстановления любой.');gotoxy(2,3);
  write('Катас
1234
скачать работу

Программа эмуляции развития популяций животных

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ