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

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;

-11-

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

-12-

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;

-13-

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;

-14-

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<m) and (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

-15-

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;

{***********************************************************}

-16-

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);

-17-

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('Помет: ');{рождаемость}

-18-

readln(hp);

gotoxy(2,5);

write('Min детородный: '); {естественная смертность}

Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.