Исходный код:
- // the Conwey's Game of Life by Yulik
- uses
- CRT; {без него мы бы не увидели ничего на экране, всЄ бы быстро промелькнуло}
- const
- SizeX = 20; {константа, размер длины двумерного массива}
- SizeY = 15; {константа, размер высоты двумерного массива}
- type
- tField = array[0..SizeX-1,0..SizeX-1] of byte; {тип}
- var
- F, G: tField; {объ¤вление названи¤ двух массивов}
- procedure Show(A: tField); {процедура вывода массива на экран, массив ј, который мы не запоминаем}
- var
- i, j: integer; {локальные переменные}
- begin
- for i:=0 to SizeX-1 do begin {проходимс¤ по элементам строки}
- for j:=0 to SizeY-1 do {столбца}
- write(a[i,j]); {вывод на экран}
- writeln; {переход на следующую строку}
- end;
- end;
- procedure InRandom(var A: tField); {процедура ввода элементов массива}
- var
- i, j: integer;
- begin
- for i:=0 to SizeX-1 do
- for j:=0 to SizeY-1 do
- a[i,j]:=random(2); {случайные числа от 0 до 1}
- end;
- procedure Process(A: tField; var B: tField); {процедура процесса}
- var
- i, j, s, ip : integer;
- begin
- for i:=0 to sizeX-1 do begin
- ip:= (i+1) mod SizeX; {чтобы наш счетчик не уходил за границы, прибавим 1 и найдем остаток от делени¤ на длину массива}
- for j:=0 to sizeY-1 do begin
- s:= a[i,j+1]+a[i,j-1]+a[ip,j]+a[i-1,j]+a[ip,j+1]+a[i-1,j-1]+a[i-1,j+1]+a[ip,j-1]; {суммируем всех соседей клетки}
- case s of
- 2: b[i,j]:=a[i,j]; {если 2 соседа, то оставл¤ем клетку как она есть}
- 3: b[i,j]:=1 {если 3 - оживл¤ем клетку}
- else b[i,j]:=0; {иначе клетка погибает, то есть равна 0}
- end;
- end;
- end;
- end;
- Begin
- InRandom(F); {формируетс¤ массив из случайных чисел 0 и 1}
- while true do begin {пока это правда, выводим на экран массив F }
- Show(F); {F - исходный массив}
- If ReadKey=#27 then break; {приостановка времени, клавиша выхода esc}
- Process(F,G); {массивы F и G}
- Show(G); {массив G - это новый получившийс¤ массив}
- If ReadKey=#27 then break;
- Process(G,F); {массивы F и G мен¤ютс¤ местами}
- end;
- end.
No comments:
Post a Comment