На главную
Программы
Статические | Полезные

Динамические программы

Игра Жизнь

Игра Жизнь

Эту игру придумал математик ДЖ. Конуэй.

Все происходит на бесконечном клетчатом поле. В каждой клетке может находится организм. Развитие поколения происходит дискретно под действием определенных "генетических законов". Конуэй тщательно подбирал свои правила "на практике", добиваясь, чтобы они по возможности удовлетворяли трем условиям:

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

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

  3. Должны существовать простые начальные конфигурации, которые в течение значительного промежутка времени растут, претерпевают разнообразные изменения и заканчивают свою эволюцию одним из следующий трех способов: полностью исчезают (либо из-за перенаселенности, то есть слишком большой плотности фишек, либо наоборот, из-за разреженности фишек, образующих конфигурацию); переходят в устойчивую конфигурацию и перестают изменяться вообще или же, наконец, выходят на колебательный режим, то есть бесконечный цикл превращений с определенным периодом.

Игра Жизнь

Короче говоря, правила должны быть такими, чтобы поведение популяции было непредсказуемым.

Каждая клетка имеет 8 соседей.

Правила игры сводятся к следующему:

  1. ВЫЖИВАНИЕ. Каждая живая клетка, имеющая две или три соседние живые клетки, выживает и переходит в следующее поколение.

  2. ГИБЕЛЬ. Каждая живая клетка, у которой больше трех соседей, погибает, из-за перенаселенности. Каждая живая клетка, вокруг которой свободны все соседние клетки или же занята всего одна клетка, погибает от одиночества.

  3. РОЖДЕНИЕ. Если число живых клеток, с которыми граничит какая-нибудь пустая клетка, в точности равно трем (не больше и не меньше), то на этой клетке происходит рождение нового "организма".

Игра Жизнь

Гибель и рождение всех "организмов" происходит одно временно. Вместе взятые, они образуют одно поколение или, как можно выразится, один "ход" в эволюции начальной конфигурации.

Популяция непрестанно претерпевает необычные, нередко очень красивые и всегда неожиданные изменения.

Программа позволяет играть на поле 200*200. Можно выбирать интересные готовые конфигурации и изменять правила. На последнем снимке изображено, во что превращается слово "ЖИЗНЬ" в 196 поколении.

Скачать (67 Кб)

Молекула метана

Молекула метана Со второго семестра нас стали считать уже взрослыми и задания мы стали выбирать уже сами. Я написал модель молекулы метана. Молекулу можно вращать, изменять размеры атомов и расстояние между ними. Также можно вращать источник света и изменять интенсивность освещения.

Скачать (29 Кб)


Многогранники

В одно время с молекулой метана была написана и эта программа. Нужно было изобразить пересечение многогранника плоскостью. К сожалению, исходный код я случайно удалил и не смог доработать программу – удалить невидимые ребра.

Куб Икосаэдр Сфера

Скачать (70 Кб)

Редактор значков

Редактор значков Летом 2002 года я написал свою первую серьезную программу. Она занимала около 2000 строчек. Для меня это тогда было очень много! К тому же, ничего про формат ICO-файлов я не знал и экспериментально разбирался в их устройстве.

Это было после 10 класса, и тогда Сергей Залманович еще не научил меня хорошему стилю оформления программ (потому что я еще не успел поучиться в университете). Я сейчас даже представить не могу, как можно было так писать: после запятых никогда не было пробелов, и не объявлялись никакие константы. Правда, отступы тогда я уже делал, иначе просто не смог бы такую программу написать. До сих пор помню, как мучился с кнопками и всем остальным. Ведь каждая координата каждой кнопки упоминается в программе не один раз. Для того, чтобы подобрать хорошее положение кнопки нужно было изменять числа во всех этих местах! С гораздо меньшими трудностями я писал игру Жизнь на втором курсе.

ico Например, с помощью этой программы я нарисовал такой значок для Turbo Pascal.

К сожалению, исходник когда-то потерялся. Я даже не понимаю, как сохранилась сама программа. Ей можно пользоваться с помощью клавиатуры, совершенно обходясь без мыши. В программе даже есть несколько секретов. Один действует, если одновременно нажать Ctrl+Alt+Shift и обе кнопки мыши. Было еще что-то, но я уже не помню.

Скачать (28 Кб)

Доска Гальтона

Доска Гальтона На первом курсе у меня было задание изобразить доску Гальтона с движущимися по ней (одновременно несколькими) шариками. При встрече препятствия шарик с равной вероятностью продолжает путь направо или налево. Распределение шариков по ячейкам должно подчиняться определенному закону.


Скачать (40 Кб)


Поверхности

Поверхности На лекциях по программированию на первом курсе в качестве примера использования графики в Turbo Pascal мы писали (в тетрадях) программу, которая строит поверхности для функции двух переменных. Поверхности На одной лекции мы вывели все формулы, но программу написать не успели. Дома я попробовал написать ее самостоятельно. Было очень интересно потом сравнивать, что некоторые вещи я написал точно так же, как Сергей Залманович, и подмечать то, что он реализовал лучше.

В функции я добавил параметр (время), и получилась динамическая поверхность. Очень интересно смотреть, как она вся колышется и изгибается.

Скачать (60 Кб)

Шарики

По экрану летают шарики и сталкиваются друг с другом. Получается Броуновское движение. Можно задать один большой шарик и много маленьких и смотреть, как все вокруг суетсятся, а большой шарик перемещается спокойно и неспешно.

Шарики Шарики

Скачать (46 Кб)


© Ярослав Музыкантов muzykantov@mail.ru