Old-DOS.ru

The Game of Life — Игра Жизнь

ПРОГРАММИРОВАНИЕ
Главная страница Файлы Игры Поиск Форум Wiki Библиотека Галерея Гостевая Ссылки О проекте

Логин:
Пароль:


Регистрация
Восстановление пароля




+ ОПЕРАЦИОННЫЕ СИСТЕМЫ
   + DOS
      • IBM PC DOS
      + MS-DOS
         • SDK
      • DR-DOS
      • FreeDOS
      • Сборки на базе DOS
      • Расширители DOS
      • Другие платформы
   + OS/2
      • SDK
   + Windows
      + Windows 1.x-3.x
         • Патчи и дополнения к Win1.x-3.x
      + Windows 9x
         • Патчи и дополнения к Win9x
      + Windows NT
         • Патчи и дополнения к WinNT+
      • Сборки на базе Windows
      • SDK
   • Linux/Unix
   • СР/М
   • Другие операционные системы
   • Загрузочные диски
   • Готовые образы операционных систем
   • Многозадачные оболочки
   + Системные программы
      • Твикеры
      • Русификаторы
      + Утилиты
         • Оборудование
         • Работа с CD/DVD
         • Инсталляторы
         • Автоматизация, скрипты, BAT-файлы
         • Системные
         + Инструменты
            • Turbo Pascal Pentium II DIV BUG fixing
         • Прочее
      • Замедлители
      • Тесты оборудования и системы
      • Обновления
   + Драйверы
      • Звук
      • Видео
      • Мыши
      • CD/DVD
      • Клавиатура
      • Принтеры
      • USB
      • Сеть
      • Память
      • Материнские платы
      • Периферия
      • Другое
   • OS BuildList
+ ЭМУЛЯТОРЫ И СИМУЛЯТОРЫ
   • Эмуляторы калькуляторов
   • Консоли
   • Эмуляторы компьютеров
   • Инструменты для эмуляторов
+ ПРОГРАММИРОВАНИЕ
   + Assembler
      • Disassembler
   • Pascal/Delphi
   • C/C++
   • Basic/Visual Basic
   • Фортран
   • SDK & DDK, etc.
   • Декомпиляторы
   • Форт
   • Генераторы блок-схем
   • Лисп
   • Пролог
   • Java
   + Отладчики программ (DEBUGGERs)
      • Трассировщики
   • Другие языки программирования
   • Справочники и учебники
+ BIOS, прошивки
   • Прошивки
   • Редакторы BIOS
   • Прошивальщики
+ ДИСКИ И ФАЙЛЫ
   • Файловые менеджеры
   • Каталогизаторы
   • Копировщики
   • Поиск файлов, текста, байтов
   • Сканирование каталогов
   • Архиваторы
   • EXE-упаковщики
   • EXE-распаковщики
   • Восстановление информации и резервное копирование (бэкап)
   • HDD-утилиты
   • Дискеты
   • Разное
• СУБД
+ ОФИС
   • Интегрированные программные пакеты
   • Издательские системы
   • Электронные таблицы
   • Редакторы текста
   • Редакторы HTML
   + Утилиты для работы с текстом
      • OCR - распознавание текста
      • Просмотр документов
      • Печать
      • Перекодировка
      • Сравнение текстов
      • Шрифты
      • Работа со шрифтами
   • Словари и переводчики
   • Правописание
   • Органайзеры
   • Создание презентаций
   • Бизнес
   • Разное
+ ОБРАЗОВАНИЕ И НАУКА
   + Информатика
      • Программирование
   + Инженерное ПО
      + Расчётные задачи
         • Пар и вода
      + ЧПУ
         • ЧПУ Редакторы
         • DNC
      + САПР
         + Механика - моделирование 2D/3D
            • AutoCAD и утилиты для AutoCAD'а
         • Строительство
         • Электроника, радио- и электротехника
   • Тестирование знаний и навыков
   + Обучающие программы
      • Музыка
   + Математика
      • Калькуляторы
      • Эмуляторы калькуляторов
   • Физика
   • Химия
   + Электроника и электротехника
      • ПЛИС, PAL
      • Справочники по электронике
      • Расчётные утилиты
      • Программаторы
      • Микроконтроллеры
   • Астрономия
   • Астрология
   • География и картография
   + Биология и медицина
      • Психология
   • История и политология
   • Лингвистика
   • Гаданье на кофейной гуще
   • Справочники разные
+ БЕЗОПАСНОСТЬ
   • Антивирусы
   • Шифры и пароли
+ ИНТЕРНЕТ И СЕТИ
   • Эмуляторы терминала
   • Браузеры
   • Почтовые клиенты
   • IM-меседжеры
   • Звонилки
   • Кодеры/декодеры UUE
   • Пейджеры
   • FTP
   • BBS и FIDO
   • Работа с СОM/LPT
   • LAN
   • Удалённое управление
   • Факсы
   • Работа с мобильными телефонами
   • Разное
+ МУЛЬТИМЕДИА
   + Графика
      • Просмотр графики
      • Редакторы графики
      • Грабберы графики
      • Конвертеры
   + Звук и видео
      • Проигрыватели (плееры) аудио и видео
      • Редакторы аудио и видео
      • Грабберы (захват) аудио и видео
      • Синтез речи
      • Конвертеры
      • Кодеки
   • Разное
+ РАБОЧИЙ СТОЛ
   • Календари
   • Часы
   • Напоминалки
   • Скринсейверы
   • DEMO
   • Программы-шутки
   • Разное
+ АНДЕРГРАУНД
   + Hack tools
      • Крякеры
      • CRK-утилиты
      • Генераторы лоадеров (Loader generators)
      • Патчи, коды
      • Детекторы
   • Стеганография
   • Шестнадцатеричные редакторы
   • Вирусы
• РАЗНОЕ
• ФЕЙКИ, ПОДДЕЛКИ, ХИМЕРЫ
• --НА УДАЛЕНИЕ
• КАК ЗАГРУЖАТЬ ФАЙЛЫ НА Old-DOS




The Game of Life — Игра Жизнь
ОписаниеИнформация
Простая реализация игры Жизнь на C++ MFC (есть и консольный вариант). Прилагаются исходные тексты на C++ — проект для Visual C++ 6. Может пригодиться для знакомства с Windows-программированием с использованием MFC (а также консольных функций) на C++ с ассемблерными вставками, использующими инструкции MMX.

===

Life — результат объединения User Interface от Jeff Prosise: "Programming Windows 95 with MFC" Part VII: The Document/View Architecture, Microsoft Systems Journal, February 1996 (MSDN-98) и рабочей части, написанной изначально как консольное приложение в конце 1990-х.

Так же, как и в микро-часах для рабочего стола: http://old-dos.ru/files/file_3785.html прилагается изначальная программа (с исходными текстами), есть возможность сравнить, что очень полезно при изучении программирования.

Дополнительная информация
-------------------------

Википедия:
https://ru.m.wikipedia.org/wiki/Жизнь_(игра)

Wikipedia:
https://en.m.wikipedia.org/wiki/Conway's_Game_of_Life

Сайт игры Жизнь Николая Белюченко:
http://beluch.ru/ru/index.htm

Словарь Жизни — перевод на русский язык Николая Белюченко:
http://beluch.ru/life/lifelex/lexr.htm

Pentadecathlon — Game of Life Site:
http://pentadecathlon.com/index.php

Pentadecathlon — Game of Life Dictionary:
http://pentadecathlon.com/dictionary/dictionary.php

Life32: http://psoup.math.wisc.edu/Life32.html
файл находится в google: http://www.google.ru/search?q=Life32v215.zip

Golly is an open source, cross-platform Game of Life simulator:
http://golly.sourceforge.net/

Реализация Машины Тьюринга посредством Игры Жизнь:
http://rendell-attic.org/gol/tm.htm

Prosise: 1995.11.09, необходимы библиотеки MFC40D.DLL и MSVCR40D.DLL.
LifeExe: 2004.09.09, необходима библиотека MFC42.DLL.

//
Раздел: ПРОГРАММИРОВАНИЕ


Скриншоты
Операционная система: Windows
Требования: -
Автор: SergeCpp
Издатель: -

Добавил: SergeCpp (2013.09.21)
Доступные файлы - сортировка по имени и версии, времени добавления
Файлов: 3. Все файлы на этой странице проверены [100%]
ФайлРазмерВыпускВерсияЯзыкЗагрузил
Ссылка LifeExe[!]
ArcСкачать958
26.5 Кб2004.09.09  АнглийскийSergeCpp
2013.09.21
Ссылка LifeSrc[!]
ArcСкачать792
102.5 Кб2005.04.03  АнглийскийSergeCpp
2013.09.21
Файлы Interface\LifeView.cpp, Worker\Header.h, Worker\Conway.cpp и _common\misc.cpp изменены позже 2004.09.09, я уже не помню, что там и как, увы.
Ссылка Life_Jeff_Prosise
ArcСкачать643
20.7 Кб1995.11.09  АнглийскийSergeCpp
2013.09.21
Версия Jeff Prosise — скорее иллюстративного плана, отсюда взят изначальный интерфейс (скорее — его идея, так как переделано почти всё). Программа взята из примеров MSDN-98. Исходные тексты — присутствуют.

Пожаловаться

Комментарии
#1 Автор: SergeCpp (2013.09.21 22:09)
Это скорее, конечно, в раздел Программирование (считаю, что полезно будет ознакомиться при обучении: MFC, C++ и Assembler), хотя я не уверен, вот и поместил сюда, так как по определению — это всё же симулятор.

То, что взято от Jeff Prosise, изменено совершенно радикально (множество оптимизаций экранного вывода; сама же логика "Жизни" была написана много ранее, независимо), изначальный вариант (там совсем уж базово) даётся для сравнения, а сравнение при изучении — очень полезно.

Да, MFC ныне — "каменный век", так и сайт у нас — для "старенького".

Разумеется, для более-менее серьёзной работы с игрой Жизнь рекомендуется Life32 (она уже старенькая, но всё же) и Golly — супер-разработка.

P.S. То есть я не возражаю против возможного дальнейшего переноса в Программирование. Но это надо бы обговорить.

#2 Автор: Nika (2013.09.21 22:24)
SergeCpp,
Вообще-то, да, это классический пример при обучении программированию.

Пару версий этой же игрули на Паскале есть в примерах к TurboPascal5.5:
http://old-dos.ru/index.php?page=files&mode=files&do=show&id=3285


#3 Автор: SergeCpp (2013.09.21 22:30)
Хорошо, тогда я предварительно перенесу в Программирование (так как тут вместе C++ и Assembler), а там — посмотрим.

#4 Автор: SergeCpp (2013.09.21 22:31)
Вот, на всякий случай, архив, где игра — в "Симуляторах": http://archive.is/Dajkw

#5 Автор: SergeCpp (2013.09.21 22:33)
...не переносится. Нет выбора такого. Ну да ладно. Пусть будет тут. По названию найти можно будет.

#6 Автор: Nika (2013.09.21 22:36)
SergeCpp,
да, я это давно заметил, что "Игры" и "Файлы" изолированы друг от друга.

SR ?

#7 Автор: SergeCpp (2013.09.21 22:37)
Да я не возражаю особо, всё же это симулятор.

#8 Автор: SergeCpp (2013.09.21 22:53)
...по поводу памяти: некогда я где-то читал (возможно, что это приукрашено, конечно), как старый уже Дюма, живший на склоне лет у сына, зачитался одной книжкой _неизвестного_ему_автора_ (неясно, может, без обложки была или ещё как), а потом сказал сыну: я увлёкся чтением, как хорошо написано. Это были Три Мушкетёра.

То есть уже про свои писанные вещи не можешь сказать, что там и как, и даже порой удивляешься, глядючи, и ничего уже почти не понимая. Хорошо, что хоть сохранились исходные тексты.

#9 Автор: SergeCpp (2013.09.21 22:58)
Вот что помню хорошо — то, что там кое-где есть названия трёх частей одного романа Диккенса. И — подходят по смыслу там делаемого!

#10 Автор: SR (2013.09.21 23:21)
В принципе, можно в ручном режиме перенести. В адресной строке исправить mode=files на mode=games, и будет выбор игровых категорий

#11 Автор: SergeCpp (2013.09.22 00:02)
Спасибо! Перенёс в программирование пока. Там посмотрим.

#12 Автор: Nika (2013.09.22 00:14)
SergeSpp,
а я где-то читал, что Дюма был одним из первых известных литераторов,
построивших свой успех на найме "литературных негров".
Рассказанная вами история тому подтверждение.

#13 Автор: SergeCpp (2013.09.22 02:41)
Всё же хочется считать, что "базу": {Мушкетёров, 20 лет, 10 лет}, Графа, {Марго, Монсоро, 45} — он написал сам.

#14 Автор: Nika (2013.09.22 05:03)
Да трудно судить - в оригинале я тексты читать не могу,
а в переводе - тут уже и так 30% (если не больше) принадлежит переводчику.

#15 Автор: SergeCpp (2013.09.22 13:24)
http://archive.is/p32Uw

Сами французы именно эти романы отмечают и пишут, что авторство лишь некоторых работ -- под сомнением. Да и если рассудить, как мог нанимать писателей тот, кто пишет плохо и книги его плохо покупают?

#16 Автор: Nika (2013.09.22 14:08)
SergeCpp,
это всё так,
но вспомните вещь под названием "Малая Земля" (я её не читал, но её было много всюду).
Или те же мемуары Жукова. Люди со статусом могут иногда невозможное...

#17 Автор: SergeCpp (2013.09.22 16:38)
В скриншотах размещены найденные иллюстрации логики используемого алгоритма:

http://old-dos.ru/screens/4010/Life_Algorithm_1_Brief.jpg
http://old-dos.ru/screens/4010/Life_Algorithm_2_Detailed.jpg

Ещё есть третья страница, там достаточно много текста и расплывчато довольно. Сейчас размещу, а дальше, кому будет интересно, может специальные программы применить, см: http://habrahabr.ru/post/147828/ и http://habrahabr.ru/post/152885/ (архив: http://archive.is/2HJsl и http://archive.is/c8lzh).

#18 Автор: SergeCpp (2013.09.22 16:53)
http://old-dos.ru/screens/4010/Life_Algorithm_3_Line_0_a.jpg
http://old-dos.ru/screens/4010/Life_Algorithm_3_Line_0_b.jpg

#19 Автор: SergeCpp (2013.09.29 16:15)
Методы Windows-программирования, применённые в Life (файл LifeView.cpp)
-----------------------------------------------------------------------

1. "Двойная буферизация" / "Double Buffering" — для устранения мерцания при выводе в окно (см. 6).

2. Создание и работа с окном, имеющим собственный контекст отображения (CS_OWNDC) — для повышения быстродействия.

3. "Суперклассинг" / "Superclassing" — создание нового класса окна на основе стандартного MFC-класса для реализации 2.

4. Прямой вызов процедуры Paint (сообщение WM_PAINT) в обход оконной процедуры MFC — для повышения быстродействия (незначительно).

5. "Субклассинг" / "Subclassing" — установка собственной оконной процедуры для реализации 4.

6. Реализация обработки сообщения WM_ERASEBKGND — устранение мерцания (см. также 1) и вывод фоновым рисунком "глайдера" (он виден при первоначальном запуске, а также при изменении размеров окна). Глайдер рисуется с использованием двойной буферизации (см. 1).

7. Реализация обработки сообщений WM_HSCROLL и WM_VSCROLL — для исправления некоторых "шероховатостей" MFC, а также для обхода "the 16-bit barrier of the WM_?SCROLL".

Методы языка C++, применённые в Life (файл LifeView.cpp)
--------------------------------------------------------

8. Использование указателя на член-переменную структуры/класса, применяется в 7.

9. Использование указателя на член-метод класса, применяется при обработке сообщений WM_WINDOWPOSCHANGING и WM_WINDOWPOSCHANGED (в частности, для того, чтобы некоторое время был виден "глайдер" в 6).

Метод ускорения графического вывода
-----------------------------------

Кроме упомянутых выше методов, используется массив из 256 (ADJ_OBJECTS) заранее созданных (при создании окна) bitmap, заранее (там же) загруженных каждая в свой контекст отображения (DC) — это 256 "полосок" по 8 (ADJ_ELEMS) смежных клеток, находящихся во всех возможных (2^8 = 256) состояниях. Эти созданные "bitmap-in-DC" (массив m_hAdjDC) используются в дальнейшем для того, чтобы выводить на экран не по одной клетке, а сразу по 8. Оценить изменение быстродействия можно, перекомпилируя программу с меньшими значениями ADJ_ELEMS (файл LifeView.h): 1 << 2, 1 << 1.

Сетка между клетками как таковая не рисуется, она "встроена" в сами клетки, см. файлы Blue??.bmp и Gray??.bmp для размеров 8, 16, 32.

Размер используемых клеток можно изменить, установив значение CELL в файле App.h (доступно 2, 4, 8, 16, 32) и перекомпилировав программу.

Использование реестра: HKEY_CURRENT_USER\Software\Serg\<имя-файла-программы>.

//

Имя:
E-mail:
 =
Ваш комментарий:
Факир был пьян, и мейл покиллялся

For abuses about copyright: srzone@mail.ru
Для жалоб на авторские права: srzone@mail.ru
Float 1.0.3 Copyright © 2008-2023 StrannikRiddler. All rights reserved.
18+. Находясь на этом сайте, вы соглашаетесь с его правилами
9 queries, db time 0.004104, memory 1503.32 Kb, total time 0.094 sec