Существует простая и интересная игра Жизнь. Помогите написать простую реализацию с использованием двух массивов, всю ночь сидела, ничего не вышло.
Напомним правила игры "Жизнь". На клетчатом листе стоит несколько фишек. Их расположение во всех клетках одновременно меняется следующим образом. Если в клетках, соседних с данной (по стороне или углу), стоит ровно 3 фишки, то в данную клетку ставится фишка (если ее не было). Если в соседних клетках более 3 или менее 2 фишек, то фишка снимается (если она была). Если в соседних клетках ровно 2 фишки, то состояние клетки не меняется.
http://pascal.dax.ru/?sources&cat=8 есть http://pascal.dax.ru/files/pascal/sources/games/life.zip
а вы не могли бы в скобках объяснения процедур написать, а то многие неясны, а с пояснениями было бы проще разобраться, заранее благодарю вас.
вот что у меня получилось
RUSH_LIFE.PAS ( 3.97 килобайт )
Кол-во скачиваний: 995
вот нашел еще один вариант реализации, кто нибудь может мне объяснить как она работает, какие процедуры что выполняют, очень надо, плиз
TVLIFE.PAS ( 10.93 килобайт )
Кол-во скачиваний: 877
Снова таже самая жизнь.
Помогите разобраться с небольшим кусокм проги, не хочет правильно обработать.
function sosedi (m,n:byte):byte;
var im,ip,jm,jp:byte;
begin
im:=m-1;
ip:=m+1;
jm:=n-1;
jp:=n+1;
if im=0 then im:=m;
if ip=m then ip:=0;
if jm=0 then jm:=n;
if jp=n then jp:=0;
sosedi:=a[m,jm]+a[m,jp]+a[ip,n]+a[ip,jm]+a[ip,jp]+a[im,jp]+a[im,jm]+a[im,n];
end;
if im=0 then im:=m; { <--- Здесь, например }
if ip=m then ip:=0; { <--- Вот тут }
im:=m-1;
if im=0 then im:=m;
ip:=m+1;
if ip>size then ip:=1; { <--- size - размер матрицы }
jm:=n-1;
if jm=0 then jm:=size; { <--- size - размер матрицы }
jp:=n+1;
if jp>size then jp:=1;
Все, я разобрался! Матрица была от единицы. Теперь все нормально работает. Спасибо!
Добавлено через 5 мин.
Еще вопрос! А как реализовать эту игру графически? Совсем не знаю как работает графика в Паскале.
Cialis Informacion En Espanol