Курсовая 10-го класса: игра «Жизнь»
После того, как я впервые услышал об автоморфных числах, мне захотелось узнать о них побольше. Когда мы в школе проходили Паскаль, я написал небольшую программу, которая находила эти числа. Но она использовала тип 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 с нуля.
В последней курсовой работе я тоже создавал программу. Но об этом — в следующем рассказе.
Комментарии
1й из первых версий!заранее благодарна
2. Он писал не игру «Жизнь», а редактор логических схем.
Ища поддержки, я отыскал ваш сайт с прекрасной реализацией «жизни» Конвея.
Дело в том, что я давно вынашиваю идею, по-моему, интересного проекта, основанного на правилах этого клеточного автомата, но мне не хватает способностей в программировании для реализации всего этого. Мне было бы интересно как минимум обсудить этот проект с вами, а в лучшем случае — сотрудничать в реализации этой идеи.
Буду рад любому ответу, главное — не получить игнор
Оставьте свой комментарий