Сайт Романа ПарпалакаЗаметкиЖизньО лицееКурсовыеКурсовая 10-го класса: игра «Жизнь»

Курсовая 10-го класса: игра «Жизнь»

9 сентября 2005 года

После того, как я впервые услышал об автоморфных числах, мне захотелось узнать о них побольше. Когда мы в школе проходили Паскаль, я написал небольшую программу, которая находила эти числа. Но она использовала тип LongInt (4 байта), и работала только с девятизначными цифрами. Найти такие числа можно и на калькуляторе. В девятом классе я вернулся к проблеме автоморфных чисел и нашел несколько интересных свойств. Например, сумма двух автоморфных чисел с данным количеством цифр равна числу 1000…001, таких чисел всего два и заканчиваются они одно на 5, а другое на 6. Еще я вывел правило, по которому зная одно автоморфное число, можно было найти число с количеством цифр, на единицу большим. И мне захотелось, используя это правило, посчитать большие автоморфные числа. Ведь цифры в них могли чередоваться по какому-нибудь простому правилу.

К тому времени я уже достаточно знал Паскаль. В программе основная часть — это процедура перемножения двух чисел, представленных в массивах. Ее пришлось писать, следуя обычному правилу перемножения чисел в столбик. Алексей Васильевич Бардук, который вел у нас информатику, согласился, чтобы после уроков мы приходили и работали на компьютерах (тогда у меня еще не было компьютера). Программа заработала, но никакой зависимости в появлении цифр мне обнаружить не удалось.

Со мной оставались Денис Пономарёв и Андрей Калин. Мы практиковались в программировании. Вскоре я вспомнил еще одну интересную вещь — игру «Жизнь». О ней я узнал классе в седьмом, и меня это очень заинтересовало. Но я всё проделывал вручную и проверил поведение только небольших конфигураций. А теперь у меня появилась реальная возможность запрограммировать «Жизнь» и провести более серьезные исследования. Я ее упускать не стал. Самый первый вариант программы выводил на поле размером 10*10 клеток эволюцию простейшей конфигурации — мигалки. Андрей тоже написал свой вариант. Но у него где-то была ошибка, и из одной единственной точки у него рождалась целая колония, которая с каждым ходом становилась всё больше и больше. Мы с Андреем решили совершенствовать мою версию.

Разработка программы

Программу писали на Паскале, а у него скудные средства для разработки интерфейса, поэтому многое приходилось писать вручную. Через некоторое время Андрей перестал ее дорабатывать. Такие возможности, как поддержка мыши, копирование и вставка, вывод списка файлов и папок при открытии файла реализовал я. Когда мне приходила идея, я ее воплощал в жизнь, и, таким образом, разработка программы велась с достаточно большими перерывами.

К середине 10 класса я так и не нашел тему для курсовой. Татьяна Ивановна Антоненко предлагала работу по фотоэффекту. Мне она казалась слишком простой по сравнению со «световым давлением». И я решил выполнить работу по информатике по игре «Жизнь». Работа состояла из двух смысловых частей: в одной я излагал известные сведения об игре «Жизнь» и о клеточных автоматах, а в другой — конфигурации, найденные мною и полученные выводы.

Андрей написал тогда редактор логических схем. Сначала это была программа на Паскале. Потом он ее переписал на C++ Builder с использованием объектно-ориентированного программирования. Идея очень хорошая, но, к сожалению, Андрей потом забросил разработку. Однако можно было хотя бы обновить интерфейс.

Я нашел в интернете замечательную программу Mirek's Cellebration. Мой вариант не мог идти ни в какое сравнение с ней ни по быстродействию, ни по функциональности. Так как она разрабатывалась для MS-DOS, то ограничение на память в 640 Кб было существенным, из-за этого размер поля был маленьким. Чтобы на конференции «Способность. Труд. Талант.» выглядеть более-менее прилично, я решил написать «Жизнь» на Delphi для Windows. Получившаяся программа Life 2.0 была тоже медленной, да и, к тому же, малофункциональной.

На конференции работа заняла только третье место. Возможно, ее не оценили до конца. И я полностью для себя не решил, на что следовало обратить внимание при защите: на клеточные автоматы и возможности их применения, или на особенности реализации программы.

На конференции "Способность. Труд. Талант."

После конференции я продолжал практиковаться в программировании, дорабатывая программу. Весь основной цикл расчетов я переписал на ассемблере с использованием прямого доступа в видеопамять для вывода графики, это значительно увеличило быстродействие. Потом я придумал совершенно другой алгоритм, отладил его, а потом написал на ассемблере. Он лег в основу The Game Of Life 3, написанной на Delphi с нуля.

В последней курсовой работе я тоже создавал программу. Но об этом — в следующем рассказе.

Поделиться

Читайте также

Программы
The Game Of Life Реализация игры «Жизнь».
The Game of Life 3.6 beta
Я нашел время и довел свою программу The Game of Life до состояния, которое можно опубликовать. Да и интерес к игре «Жизнь», судя по всему, не ослабевает.
2009
Энциклопедия последовательностей целых чисел
Энциклопедия последовательностей целых чисел. Как-то на спецкурсе по теории групп мы занимались уравнением классов.
2006

Комментарии

#1. 1 декабря 2007 года, 16:27. Елена пишет:
замечатеоьная программа,было бы очень интересно посмотреть на исходные файлы на делфи хотя бы
1й из первых версий!заранее благодарна
#2. 1 декабря 2007 года, 20:06. пишет:
А Вы думаете, что исходники Вам помогут? Интерфейс разрабатывался стандартным для Делфи способом. Главный алгоритм там на ассемблере. Ранние версии файлов не сохранялись. Комментариев практически нет. Или Вы хотите разбираться в ассемблерном коде?
#3. 23 июня 2009 года, 10:40. пишет:
Сможете прислать или выставить сюда исходник игры жизнь с использованием ООП. Буду очень благодарен!!!
#4. 23 июня 2009 года, 12:00. пишет:
Не могу. Я ООП не использовал.
#5. 23 июня 2009 года, 12:11. пишет:
«Потом он ее переписал на C++ Builder с использованием объектно-ориентированного программирования.» Ты же писал…
#6. 24 июня 2009 года, 21:33. пишет:
Андрей написал тогда редактор логических схем. Сначала это была программа на Паскале. Потом он ее переписал на C++ Builder с использованием объектно-ориентированного программирования.
1. Писал мой приятель, а не я.
2. Он писал не игру «Жизнь», а редактор логических схем.
#7. 7 мая 2019 года, 01:06. Никита пишет:
Здраствуйте, Роман
Ища поддержки, я отыскал ваш сайт с прекрасной реализацией «жизни» Конвея.
Дело в том, что я давно вынашиваю идею, по-моему, интересного проекта, основанного на правилах этого клеточного автомата, но мне не хватает способностей в программировании для реализации всего этого. Мне было бы интересно как минимум обсудить этот проект с вами, а в лучшем случае — сотрудничать в реализации этой идеи.

Буду рад любому ответу, главное — не получить игнор

Оставьте свой комментарий


Формулы на латехе: $$f(x) = x^2-\sqrt{x}$$ превратится в $$f(x) = x^2-\sqrt{x}$$.
Выделение текста: [i]курсивом[/i] или [b]жирным[/b].
Цитату оформляйте так: [q = имя автора]цитата[/q] или [q]еще цитата[/q].
Других команд или HTML-тегов здесь нет.