У меня вопрос.
Сначало надо проверить умрет ли клетка или надо сначало оживить от нее соседние клетки ?
Спасибо тогда скоро уже доделаю.
Как проверить правильность раьоты(я реализовал начальный ввод живых клеток с пом. стрелок)
те комбинации и тд.?
Добавлено через 19 мин.
+ для новой надо 3 или от 3 и больше.
Ну, во-первых, функционирование клеточного автомата можно проверить полным перебором: для одной клетки и ее полного окружения - 512 возможных комбинаций.
Кроме того, существует целый ряд устойчивых, пульсирующих и перемещающихся комбинаций. Можно восроизвести их.
Надо только почитать материалы об этой игре.
Одна клетка окружена 8-ю соседними клетками. Следовательно, вокруг нее возможно 256 комбинаций. Кроме того, сама она может находиться в 2-х состояний. Итого: клетка вместе со своим окружением может находиться в 512 различных состояниях, которые все можно проверить полным перебором.
Можно искусственно создать в поле ту или иную комбинацию и посмотреть, как она будет себя вести.
А размер 15 клеток (по одному измерению?) - маловато. Что-то интересное можно увидеть, когда по каждой координате количество клеток измеряется сотнями.
размер 15 клеток\
Нет ты не так меня понял, размер ограничен моей фантазией и мощностью комп.
Спасибо за помощь.
15 клеток это как? 3х5?
Что же касается мощности компа, то, помнится, поле 640х480 вполне себе резво бегало на 486.
Это квадрат 15+15 ;
Я поигрался и всем советую сделать или поигратся.
Здесь игра + ссылки на сайты где есть примеры интересных фигур + Unit ( он реализует список с ключом и 2
коорд x y(коряво правда)).
Спс andriano за помощь еще раз.
-->
life.rar ( 65.44 килобайт )
Кол-во скачиваний: 1519
+ у меня вопрос как сделать что бы не вышебало когда все клетки умирают ?
ps
1 поколение надо задать самому + первая клетка появляется автоматом посередке.
Честно говоря, немного озадачило управление. Есть 2 окна: консольное и графическое. Что-то делать с графическим можно только тогда, когда его загораживает консольное. Странно это.
Еще.
При каждом запуске расставлять клетки - довольно утомительно. Желательно задать вопрос: а нужно ли оно пользователю, и если он не горит желанием возиться с клетками, разбросать из ДПСЧ.
Когда все клетки умирают, очевидно, надо выводить надпись "Game Over".
Когда умирает колония у меня к списку применяется днструктор, потом при обращение к списку возникает
ошибка и выход .
**************
2 окна тк не знаю как сделать что б на одном все было.(это вопрос)
*******************
в приципе можно оформить меню :
сами или случайно.
ps
отключил рисование сетки и увеличил размер до 200 и уменьшил размер клетки гораздо интереснее.
Я не смотрел реализацию, но зачем там списки?
Я как-то даже не могу с ходу придумать, как их можно ам применить.
Обычно возникают проблемы, как сделать второе окно, а не как от него избавиться.
Кстати, как делаешь?
program Life;
uses graph,crt,unitlinkedList ;
const
grDriver : integer = Detect ;
....
var
grMode : integer ;
......
....
....
......
begin
InitGraph (grDriver, grMode, '') ;
Если вопрос о списках - то выбросить.
Зачем делать два прохода - на одном выбирать кандидатов, на другом - смотреть, что с ними делать.
Нодо делать сразу на месте: просмотрел клетку - сделал с ней то, что нужно, смотришь следующую...
А если кпримеру я посмотрел клетку около нее новая клетка, и при просмотре других клеток в этом поколение
новая клетка не должна поддерживать жизнь старых,те она должна быть, но не должна учитыватся в просмотре на "смерть" клеток этого поколения.
//
Я сделал так : занашу коорд. в список новых клеток и присваиваю в массиве этой клетке значение отличное от зн. мертвых и живых клеток.
Потом из списка новых клеток копирую в список клеток и меняю знач. в массиве на зн. живой клетки.
Быстрее и удобнее сделать так:
1. Выделить в памяти два массива, каждый из которых описывает целиком поле.
2. В первом массиве тем или иным образом разбросать клетки.
3. Вывести содержимое первого массива на экран.
4. По содержимому первого массива рассчитать клетки второго массива.
5. Поменять местами указатели на первый и второй массивы.
6. цикл на шаг 3.
В следующий раз сделаю так.
Я думал о массивах, но решил, что придется смотреть каждую клетку(что дольше по времени), но судя по твоим
постам твой способ, действительно, лучше.
Дольше по сравнению с чем?
По идее мы говорим о 2-3 соседях, т.е. средний процент заполлнения поля - 20-40%. При этом можно не проверять ТОЛЬКО те клетки, в близи которых клеток нет вообще. А таких зон совсем мало, если они вообще есть. Т.е. сэкономить на проверке не всех клеток вряд ли удастся.
Честно говоря, проблему о 2 окнах не понял. Что мешает работать в одном окне, как это принято во всех программах?
Кстати, поле у тебя "прямоугольник", "цилиндр" или "тор"? Т.е. есть ли замыкание по краям? Если нет, то ты практически сразу потеряешь все подвижные фигуры.