Моделирование схемы Жизнь
Рефераты >> Программирование и компьютеры >> Моделирование схемы Жизнь

Движущиеся фигуры. Например:

3.3. В ходе выполнения работы были закреплены навыки программирования на языке Pascal: использование стандартных функций модуля crt.tpu, применение элементов графики из модуля graph.tpu, написание и подключение собственных модулей (mono3d.tpu), работа с компилятором и пр.

4. Приложение

Текст программы «Жизнь» (файл life.pas)

uses

crt,graph,mono3d;

var

A,B:array[0 51,0 31]of boolean;

i,j,VP,step,live,dead,born:integer;

s,stri:string;

label l;

Function Nears(x,y:integer):integer;

{}

{} var

{} i,j,s:integer;

{}

Begin

{}

{} s:=0;

{} for i:=x-1 to x+1 do

{} for j:=y-1 to y+1 do

{} if a[i,j] then s:=s+1;

{} if a[x,y] then s:=s-1;

{} Nears:=s;

{}

End;

Function Change:Boolean;

Begin

{}

{} born:=0;

{} dead:=0;

{} Change:=False;

{}

{} for i:=1 to 50 do

{} for j:=1 to 30 do

{} begin

{} {}

{} {} if A[i,j] then

{} {} begin

{} {} {} if ((Nears(i,j)<2) or (Nears(i,j)>3)) then

{} {} {} begin

{} {} {} {} B[i,j]:=False;

{} {} {} {} dead:=dead+1;

{} {} {} {} Change:=True;

{} {} {} end;

{} {} end

{} {} else

{} {} begin

{} {} {} if Nears(i,j)=3 then

{} {} {} begin

{} {} {} {} B[i,j]:=True;

{} {} {} {} born:=born+1;

{} {} {} {} Change:=True;

{} {} {} end;

{} {} end;

{} {}

{} end;

{}

End;

Procedure Setup;

{}

{} var

{} i,j:integer;

{}

Begin

{}

{} Randomize;

{} for i:=1 to 50 do

{} for j:=1 to 30 do

{} if Random(2)=0 then A[i,j]:=True;

{}

End;

Procedure Draw;

{}

{} var

{} i,j:integer;

{}

Begin

{}

{} Rectangle(0,0,639,349);

{} for i:=0 to 51 do

{} for j:=0 to 31 do

{} begin

{} {}

{} {} if A[i,j] then SetFillStyle(1,10)

{} {} else SetFillStyle(9,1);

{} {} Bar(55+10*i,10+8*j,65+10*i,18+8*j);

{} {} Rectangle(55+10*i,10+8*j,65+10*i,18+8*j);

{} end;

{}

End;

Procedure Copy;

{}

{} var

{} i,j:integer;

{}

Begin

{}

{} for i:=1 to 50 do

{} for j:=1 to 30 do

{} A[i,j]:=B[i,j];

{}

End;

Procedure Print;

Begin

{}

{} Str(step:3,s);

{} stri:='Шаг # '+s;

{} Str(live:3,s);

{} stri:=stri+' Клеток '+s;

{} outtextxy(55,300,stri);

{} Str(born:3,s);

{} stri:='Появилось '+s;

{} Str(dead:3,s);

{} stri:=stri+' Погибло '+s;

{} outtextxy(55,315,stri);

{}

{}

End;

Procedure Count;

{}

{} var

{} i,j:integer;

{}

Begin

{}

{} live:=0;

{} for i:=1 to 50 do

{} for j:=1 to 30 do

{} if A[i,j] then live :=live+1;

{}

End;

BEGIN

Setup;

i:=9;

j:=1;

InitGraph(i,j,'c:\dos');

SetColor(9);

While Change do

begin

{} step:=step+1;

{} FlipVP(VP);

{} Draw;

{} Count;

{} Print;

{} Copy;

{} Delay(22);

{} if KeyPressed then

{} if ReadKey<>''then

{} goto l;

end;

l:

ReadKey;

CloseGraph;

ClrScr;

END.


Страница: