Учебный Проект. Релиз 12
Автор: Виктор Юхтенко
Очередная версия Учебного проекта, функциональной идеей которого является простая игра.
Цель
Демонстрация приемов программирования на языке Visual Prolog:
- Один из способов решения проблемы нехватки памяти при непрозрачных и глубоких рекурсивных вызовах.
Особенности
- Решение проблемы переполнения стека Семейство проектов Release 11 имело недостаток - переполнение стека вызовов, начиная с некоторых значений произведения РазмерИгровогоПоля х ЧислоИгрВРежимеСериальныхИгр и, соответственно, прекращение работы программы.
В Release 12 этот недостаток устранен.
- Набор проектов
- Во-первых, в Release 12 проектов Console, ConsoleLib, ObjectConsoleLib нет (и не предполагается их поддержка в будущем).
- Во-вторых, проект ObjectWin содержит три варианта ObjectWin0, ObjectWin1, ObjectWin2 (в версии Personal Edition представлены только проекты ObjectWinLibX, соответственно, с реализацией пользовательского интерфейса в виде библиотеки) демонстрирующие последовательность модификации кода.
- В-третьих, проект ObjectConsole содержит только окончательное решение и служит для проверки совместимости и работоспособности.
- Функциональное повторение
Функционально Release 12 ничем не отличается от Release 11.
- Добавление тестового игрока - Computer00
В целях проверки устойчивости проекта на играх большой размерности создан специальный игрок Computer00, который всегда делает один и тот же (специальный) ход. Модуль JuniourJudge, обрабатывающий ходы игроков, распознает этот ход, как специальный, не отображает его на игровом поле и позволяет делать следующий ход.
Пояснения к вариантам проектов ObjectWinX/Polyline12_ObjWindows (в Personal Edition - ObjectWinLibX/Polyline12_ObjWindows):
Проект | Краткая информация |
---|---|
ObjectWin0/Polyline12_ObjWindows | "Прическа" кода для обеспечения прозрачности взаимодействия моделей игроков, модулей SeniourJudge и JuniourJudge. Добавление специальлной тестовой модели игрока Computer00. Константа playLimit_C в модуле JuniourJudge определяет число ходов. Игрок Computer00 может быть запущен один (играющий сам с собой). На значении константы playLimit_C=10000 можно наблюдать поломку программы. |
ObjectWin1/Polyline12_ObjWindows | Первая модификация кода с целью обеспечения устойчивости. Рекурсивный принцип передачи ходов от игрока к игроку заменен на итерационный. Корректность механизмов режима мультиигр и механизма остановки игры не затрагивалась. Тестовая игра игрока Computer00 обеспечивается практически на любом значении константы playLimit_C (тестируется успешно на значении 100000). |
ObjectWin2/Polyline12_ObjWindows | Окончательная редакция кода. Обеспечена корректность всех режимов. Тестируется успешно на работе игрока Computer00 при значении константы playLimit_C=100000 с использованием режима мультиигр. |
Загрузка и установка
Для установки и запуска проектов семейства Polyline 12 следует:
- Сгрузить архивы
- PdcSpbSDK_72_PE_Examples_Polyline12_Classes.zip
- PdcSpbSDK_72_PE_Examples_Polyline12_Programs.zip
используя страницу форума PDC VIP-Средства и Примеры
- Разархивировать эти архивы в одной и той же директории. Следует иметь в виду, что каждый из архивов создает структуру папок (иногда с повторениями) с корнем PdcSpbSDK. В результате структура всего набора release 12 должна выглядеть так:
Исполнение
Откройте, постройте и запустите проекты, используя VIP 7.2:
- Programs/ObjectWinLib0/Polyline12_ObjWindows.prj
- Programs/ObjectWinLib1/Polyline12_ObjWindows.prj
- Programs/ObjectWinLib2/Polyline12_ObjWindows.prj
- Programs/ObjectConsole/Polyline12_ObjectConsole.prj
Игрок Computer00 может быть единственным игроком, при этом он должен быть объявлен как стартующий игрок.
Как и прежде, для построения проектов Polyline12 переменная SpbSolutions среды программирования IDE должна быть определена как маршрут к директории PdcSpbSDK. Язык приложения, если поддерживается иной, кроме английского, определяется помещением в командной строке идентификатора языка:
- ru - русский
- en - английский