Помощь - Поиск - Пользователи - Календарь
Полная версия: реализация игры жизнь.
Форум «Всё о Паскале» > Pascal, Object Pascal > Написание игр
Aljona
Существует простая и интересная игра Жизнь. Помогите написать простую реализацию с использованием двух массивов, всю ночь сидела, ничего не вышло.
Напомним правила игры "Жизнь". На клетчатом листе стоит несколько фишек. Их расположение во всех клетках одновременно меняется следующим образом. Если в клетках, соседних с данной (по стороне или углу), стоит ровно 3 фишки, то в данную клетку ставится фишка (если ее не было). Если в соседних клетках более 3 или менее 2 фишек, то фишка снимается (если она была). Если в соседних клетках ровно 2 фишки, то состояние клетки не меняется.
Altair
здесь есть программа
Aljona
а вы не могли бы в скобках объяснения процедур написать, а то многие неясны, а с пояснениями было бы проще разобраться, заранее благодарю вас.
Lapp
Цитата(Aljona @ 15.04.2006 20:01) *

Помогите написать простую реализацию с использованием двух массивов, всю ночь сидела, ничего не вышло.

Aljona, я с удовольствием помогу тебе - очень люблю Жизнь (во всех смыслах smile.gif ).
Ты покажи тут результат(ы) своих ночных бдений, и мы найдем ошибки или подумаем, как двигаться вперед.
Rush_
вот что у меня получилось Нажмите для просмотра прикрепленного файла

вот нашел еще один вариант реализации, кто нибудь может мне объяснить как она работает, какие процедуры что выполняют, очень надо, плиз Нажмите для просмотра прикрепленного файла
Clerick
Снова таже самая жизнь.
Помогите разобраться с небольшим кусокм проги, не хочет правильно обработать.

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;


При подсчете соседей для крайних справа и снизу клеток он выводит числа превышающие 8.. Например, 218.. В чем ошибка?
volvo
Цитата
В чем ошибка?
Range-Check отключен? Вот результат... Был выход за пределы матрицы, и не пойман...

У тебя матрица A описана как [1 .. size, 1 .. size] или [0 .. size-1, 0 .. size-1]? Я к тому, почему ты в одном случае от нуля избавляешься:
  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;
Clerick
Все, я разобрался! Матрица была от единицы. Теперь все нормально работает. Спасибо! smile.gif


Добавлено через 5 мин.
Еще вопрос! А как реализовать эту игру графически? Совсем не знаю как работает графика в Паскале. sad.gif
is propecia from budgetmedica re
Cialis Informacion En Espanol
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.