The Game of Life 3.6 beta
13 сентября 2009 года, 19:28
Я нашел время и довел свою программу The Game of Life до состояния, которое можно опубликовать. Да и интерес к игре «Жизнь», судя по всему, не ослабевает. Итак, представляю новую версию The Game of Life 3.6 beta.
Что нового?
- Поддержка OpenGL. Если у вашего компьютера (относительно) мощная видеоплата, ее ресурсы будут использоватсья при прорисовке.
- Многочисленные улучшения интерфейса, в том числе сообщения на русском или английском языке (в зависимости от языка, установленного в системе), а также
32-битные иконки из набора Silk Icons. - Поддержка распространенных форматов файлов (RLE, LIF) с конфигурациями «Жизни».
Наконец-то создана справочная система. Я включил в справочную систему Словарь «Жизни», собранный Стивеном Сильвером и переведенный Николаем Белюченко.- Теперь при копировании и вставке используется буфер обмена Windows и текстовое представление информации. Благодаря этому можно, например, скопировать
какую-нибудь конфигурацию из вышеупомянутого словаря и вставить ее в программу.
Системные требования
Особых системных требований у программы нет. Работает в операционных системах Windows 2000, XP, Vista, 7. Windows 9x
Планы на будущее
Перед выпуском финальной версии 3.6 я хочу:
- исправить баги, если таковые будут найдены;
- перевести справку на английский;
- перерисовать некоторые иконки;
- переделать на сайте раздел, посвященный игре «Жизнь».
Если у меня останутся энтузиазм и время, то в версии 4.0 я полностью переделаю алгоритм расчетов (текущий я писал семь лет назад на ассемблере) и постараюсь избавиться от ограничений на размер поля.
Комментарии
Всегда обожал эту игру, даже сам писал реализации.
Твоя — неплохая (хотя ту же скорость лучше, конечно, не задержкой выставлять, а временем, отведенным на каждый «ход»). Внедренная энциклопедия — тоже хорошо, хотя я в свое время хотел сделать полноценную библиотеку известных объектов с описаниями, разбитых по темам, для простой вставки на поле.
Ну и не сильно понимаю проблему избавиться от ограничений на размер поля.
По поводу ограничений на размер поля. В текущем алгоритме есть два списка: фишки и пустые клетки, на которых могут появиться фишки. Еще есть несколько вспомогательных списков, заполняемых при выполнении хода. Каждый раз для каждой фишки необходимо определять количество соседей. Для этого я использую двумерный массив 1000*1000, соответствующий полю. В текущей реализации алгоритма на ассемблере двумерный массив должен иметь фиксированную ширину (1000). Если ширина переменная, на нее уйдет регистр, которых всегда не хватает, либо увеличится количество обращений к памяти. Плюс еще один регистр либо одно обращение к памяти в теле цикла потратится в переходе от статического массива к динамическому на хранение указателя на начало массива (подробнее об этом эффекте здесь:
Единственное, что я могу сделать — увеличить размер поля, например, до 2000*2000. В общем, гораздо проще придумать новый алгоритм, чтобы он не использовал двумерных массивов.
Почти столько же я хардкорным программированеим не занимался, поэтому у меня в голове крутится одна сумасшедшая мысль, но это вообще идиотизм, я не буду ее озвучивать :)
Оставьте свой комментарий