Witam , mam problem ponieważ muszę zrobić program “życie w pascalu” który polega na tym że :
Na ekranie losowo pojawiają się kropki koloru np. Jasno szarego (będzie to 1 pokolenie) , gdy obok jakiejś kropki znajdą się dwie takie same kropki w tym samym kolorze , to ta która kropka wokół której pojawiły się dwie inne zamienia kolor na szary (jest to 2 pokolenie) . wtedy tak samo gdy obok tej kropki pojawią się 2 kropki w kolorze szarym , zamienia się w kolor biały ( 3 pokolenie ) ,aż na całym ekranie będą wszystkie białe kropki albo ekran będzie pusty obojętnie.
Nie mogę ogarnąć tego programu . znalazłem takie coś ale to nie jest to czego szukam i potrzebuje.
Ostatecznie żeby nie było tyle roboty , mogą być 2 pokolenia , i nie musi być dużo tych kropek , byle było widać że kolorki się zmieniają gdy jest dwóch takich samych sąsiadów ; ) Nie musi być to program profesjonalny , może być napisany jak najłatwiej AMATORSKO byle coś się tam działo na temat ; ) Z góry dzięki za pomoc ; ) Za działając kod mogę podarować doładowanie 10-20zł do telefonu , symbolicznie
Program gotowy potrzebuje do niedzieli godziny 18 , proszę o pomoc
program zycie;
const ilosc = 50; {ile pokolen mamy ogladac\}
wielkosc = 23; {jak duza ma byc plansza\}
type tablica = array [1..wielkosc, 1..wielkosc] of boolean;
tab = array [1..wielkosc, 1..wielkosc] of integer;
var aktualna, poprzednia: tablica;
oto: tab; {tutaj dla kazdej kropki zliczamy jej sasiadow\}
h, g, n: integer;
procedure zageszczenie (var kolonia: tablica; var otoczenie: tab);
var j, k: integer;
{liczymy liczbe sosiadow dla kazdej komorki\}
begin
{inicjalizujemy tablice, na poczatku zadna tablica nie ma sasiadow\}
for j := 1 to wielkosc do
begin
for k := 1 to wielkosc do
begin
otoczenie [j, k] := 0;
end;
end;
for j := 1 to wielkosc do
begin
for k := 1 to wielkosc do
begin
{jezeli dana komorka zyje to musimy zwiekszyc liczbe sasiadow u jej wszystkich sasiadow\}
if kolonia [j, k] then
begin
if j > 1 then otoczenie [j - 1, k] := otoczenie[j - 1, k] + 1;
if k > 1 then otoczenie [j, k - 1] := otoczenie[j, k - 1] + 1;
if (k > 1) and (j > 1) then otoczenie [j - 1, k - 1] := otoczenie[j - 1, k - 1] + 1;
if (k < wielkosc) and (j < wielkosc) then otoczenie [j + 1, k + 1] := otoczenie[j + 1, k + 1] + 1;
if (k > 1) and (j < wielkosc) then otoczenie [j + 1, k - 1] := otoczenie[j + 1, k - 1] + 1;
if (k < wielkosc) and (j > 1) then otoczenie [j - 1, k + 1] := otoczenie[j - 1, k + 1] + 1;
if j < wielkosc then otoczenie [j + 1, k] := otoczenie[j + 1, k] + 1;
if k < wielkosc then otoczenie [j, k + 1] := otoczenie[j, k + 1] + 1;
end;
end;
end;
end;
procedure losuj (var kolonia: tablica);
var j, k: integer;
{losujemy pierwsze pokolenie\}
begin
{inicjalizacja losowania\}
randomize;
for j := 1 to wielkosc do
begin
for k := 1 to wielkosc do
begin
{aby nie bylo za nudno tylko mniej wiecej co 5. komorka na poczatku bedzie zywa\}
if random(5) = 0 then kolonia [j, k] := true
else kolonia [j, k] := false;
end;
end;
end;
procedure wypisz (var kolonia: tablica);
var j, k: integer;
{wypisyjemy na ekran dane pokolenie\}
begin
for j := 1 to wielkosc do
begin
for k := 1 to wielkosc do
begin
if kolonia [j, k] then write ('*')
else write (' ');
end;
writeln;
end;
end;
procedure nowe_pokolenie (var nowa, stara: tablica; var otoczenie: tab);
var j, k: integer;
{tutaj tworzymy tablice z nowym pokoleniem na podstawie zliczonych wczesniej\}
{ilosci sasiadow danej komorki\}
begin
for j := 1 to wielkosc do
begin
for k := 1 to wielkosc do
begin
nowa [j, k] := false;
if otoczenie [j, k] = 3 then nowa [j, k] := true
else if (otoczenie [j, k] = 2) and stara [j, k] then nowa [j, k] := true;
end;
end;
end;
begin
writeln ('Oto 1. pokolenie:');
losuj (poprzednia);
wypisz (poprzednia);
readln; {czeka na ENTER\}
for n := 2 to ilosc do
begin
writeln ('Oto ', n, '. pokolenie:');
zageszczenie (poprzednia, oto);
nowe_pokolenie (aktualna, poprzednia, oto);
wypisz (aktualna);
{do tablicy 'poprzednia' przpisujemy tablice 'aktulana'\}
for h := 1 to wielkosc do
begin
for g := 1 to wielkosc do poprzednia [h, g] := aktualna [h, g];
end;
readln;
end;
end.