Учебный Проект. Релиз 12: различия между версиями

Материал из wikiru.visual-prolog.com

м
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
Очередная версия Учебного проекта, функциональной идеей которого является простая игра.
{{PolylineTemplateRu
 
|goal=
[[Игра "Ползунок". Правила игры|Правила игры ...]]
Демонстрация приемов программирования приложений на языке Visual Prolog:
 
|goalContent=
==Цель==
Семейство проектов Release 11, как отмечалось в комментариях к нему, имело недостаток - переполнение стека вызовов, начиная с некоторых значений произведения РазмерИгровогоПоля х ЧислоИгрВРежимеСериальныхИгр и, соответственно, прекращение работы программы.
Демонстрация приемов программирования на языке Visual Prolog:
Release 12 имеет своей целью исправление этого недостатка.
* Один из способов решения проблемы нехватки памяти при непрозрачных и глубоких рекурсивных вызовах.
|code=
 
==Особенности==  
*'''Решение проблемы переполнения стека''' Семейство проектов Release 11 имело недостаток - переполнение стека вызовов, начиная с некоторых значений произведения '''РазмерИгровогоПоля х ЧислоИгрВРежимеСериальныхИгр''' и, соответственно, прекращение работы программы.
В Release 12 этот недостаток устранен.
*'''Набор проектов'''
*'''Набор проектов'''
**Во-первых, в Release 12 проектов Console, ConsoleLib, ObjectConsoleLib нет (и не предполагается их поддержка в будущем).  
**В Release 12 проектов Console, ConsoleLib, ObjectConsoleLib нет (и не предполагается их поддержка в будущем).  
**Во-вторых, проект ObjectWin содержит три варианта ObjectWin0, ObjectWin1, ObjectWin2 (в версии Personal Edition представлены только проекты ObjectWinLibX, соответственно, с реализацией пользовательского интерфейса в виде библиотеки) демонстрирующие последовательность модификации кода.  
**Проект ObjectWin содержит три варианта ObjectWin0, ObjectWin1, ObjectWin2 демонстрирующие последовательность модификации кода.
**Проекты ObjectWinLibX соответствуют проектам ObjectWinX, но пользовательский интерфейс представлен библиотекой.
**В-третьих, проект ObjectConsole содержит только окончательное решение и служит для проверки совместимости и работоспособности.  
**В-третьих, проект ObjectConsole содержит только окончательное решение и служит для проверки совместимости и работоспособности.  
*'''Функциональное повторение'''
**Добавлен тестовый игрок Computer00 в целях проверки устойчивости проекта на играх большой размерности. Игрок '''Computer00'''всегда делает один и тот же (специальный) ход. Модуль JuniourJudge, обрабатывающий ходы игроков, распознает этот ход, как специальный, не отображает его на игровом поле и позволяет делать следующий ход.
Функционально Release 12 ничем не отличается от Release 11.
*'''Добавление тестового игрока - Computer00'''
В целях проверки устойчивости проекта на играх большой размерности создан специальный игрок '''Computer00''', который всегда делает один и тот же (специальный) ход. Модуль JuniourJudge, обрабатывающий ходы игроков, распознает этот ход, как специальный, не отображает его на игровом поле и позволяет делать следующий ход.  


Пояснения к вариантам проектов ObjectWinX/Polyline12_ObjWindows (в Personal Edition - ObjectWinLibX/Polyline12_ObjWindows):
Пояснения к вариантам проектов ObjectWinX/Polyline12_ObjWindows (в Personal Edition - ObjectWinLibX/Polyline12_ObjWindows):
{| cellspacing="0" border="1"
{{Polyline12CodeExplanation}}
|-
|functionality=
!Проект
*Добавлен тестовый игрок - Computer00
! Краткая информация
|install=
|-
Если у Вас имеется '''VipSpbSDK''', то все проекты находятся в директории '''Examples\Polyline\Polyline12\Programs'''
| ObjectWin0/Polyline12_ObjWindows
 
|"Прическа" кода для обеспечения прозрачности взаимодействия моделей игроков, модулей SeniourJudge и JuniourJudge. Добавление специальлной тестовой модели игрока '''Computer00'''. Константа '''playLimit_C''' в модуле JuniourJudge определяет число ходов. Игрок '''Computer00''' может быть запущен один (играющий сам с собой). На значении константы '''playLimit_C'''=10000 можно наблюдать поломку программы.
{{PolylineInstall}}
|-
|open=
| ObjectWin1/Polyline12_ObjWindows
| Первая модификация кода с целью обеспечения устойчивости. Рекурсивный принцип передачи ходов от игрока к игроку заменен на итерационный. Корректность механизмов режима мультиигр и механизма остановки игры не затрагивалась. Тестовая игра игрока Computer00 обеспечивается практически на любом значении константы '''playLimit_C''' (тестируется успешно на значении 100000).
|-
| ObjectWin2/Polyline12_ObjWindows
| Окончательная редакция кода. Обеспечена корректность всех режимов. Тестируется успешно на работе игрока '''Computer00''' при значении константы '''playLimit_C'''=100000 с использованием режима мультиигр.
|}


==Загрузка и установка==
==Построение==
'''Для установки и запуска''' проектов семейства Polyline 12 следует:
[[PolylineVersionReference|'''Ознакомьтесь предварительно с особенностями Вашей версии''']]
*Сгрузить архивы
**'''PdcSpbSDK_72_PE_Examples_Polyline12_Classes.zip'''
**'''PdcSpbSDK_72_PE_Examples_Polyline12_Programs.zip'''


используя страницу  форума PDC [http://discuss.visual-prolog.com/viewtopic.php?p=31296&sid=b2208e8e3ec2a4480bffd4e7ecc61290#31296 VIP-Средства и Примеры]
Откройте и постройте проекты:
*Разархивировать эти архивы в одной и той же директории. Следует иметь в виду, что каждый из архивов создает структуру папок (иногда с повторениями) с корнем PdcSpbSDK. В результате структура всего набора release 12 должна выглядеть так:
*Programs\ObjectConsole\Polyline12_ObjConsole.prj6
[[Image:Polyline12Structure.jpg]]
*Programs\ObjectWin0\Polyline12_ObjWindows.prj6
*Programs\ObjectWin1\Polyline12_ObjWindows.prj6
*ProgramsDir\ObjectWin2\Polyline12_ObjWindows.prj6


==Исполнение==
Выполните командный файл Programs\BuildHumanInterfaceLib.cmd
Откройте, постройте и запустите проекты, '''используя 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.  
Откройте и постройте проекты, использующие библиотеки пользовательских интерфейсов:
Язык приложения, если поддерживается иной, кроме английского, определяется помещением в командной строке идентификатора языка:
*Programs\ObjectWinLib0\Polyline12_ObjWindows.prj6
*ru - русский
*Programs\ObjectWinLib1\Polyline12_ObjWindows.prj6
*en - английский
*Programs\ObjectWinLib2\Polyline12_ObjWindows.prj6


=Ссылки=
{{PolylineBuildCMD}}
[[en:Game Polyline. Release 12]]
|run=
[[Category:Проекты]]
{{PolylineRun7_X}}
[[Category:Игры]]
*Игрок Computer00 может быть единственным игроком, при этом он должен быть объявлен как стартующий игрок.
|enver=
[[en:Tutorial Project. Release 12]]
}}

Текущая версия на 17:40, 10 апреля 2011

Автор: Виктор Юхтенко. Email victor@pdc.spb.su

Очередная версия Учебного проекта, функциональной идеей которого является простая игра.

Правила игры ...

Цель

Демонстрация приемов программирования приложений на языке Visual Prolog: Семейство проектов Release 11, как отмечалось в комментариях к нему, имело недостаток - переполнение стека вызовов, начиная с некоторых значений произведения РазмерИгровогоПоля х ЧислоИгрВРежимеСериальныхИгр и, соответственно, прекращение работы программы. Release 12 имеет своей целью исправление этого недостатка.

Функции

  • Добавлен тестовый игрок - Computer00

Код

  • Проверено на версии Visual Prolog 7.3 build 7302.
  • Набор проектов
    • В Release 12 проектов Console, ConsoleLib, ObjectConsoleLib нет (и не предполагается их поддержка в будущем).
    • Проект ObjectWin содержит три варианта ObjectWin0, ObjectWin1, ObjectWin2 демонстрирующие последовательность модификации кода.
    • Проекты ObjectWinLibX соответствуют проектам ObjectWinX, но пользовательский интерфейс представлен библиотекой.
    • В-третьих, проект ObjectConsole содержит только окончательное решение и служит для проверки совместимости и работоспособности.
    • Добавлен тестовый игрок 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 с использованием режима мультиигр.

Установка

Если у Вас имеется VipSpbSDK, то все проекты находятся в директории Examples\Polyline\Polyline12\Programs

Если Вам нужен полный набор проектов серии Polyline (персональная версия), сгрузите и разархивируйте файлы архивов, пользуясь ссылками на форуме PDC ЗДЕСЬ

  • VipSpbSDK_PE_73_Examples_Polyline_1_14.zip
  • VipSpbSDK_PE_73_Tools_Polyline_1_14.zip]

в удобную для Вас директорию.

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

Оплата в любой из указанных валют. При оплате с рублевой кредитной карты валюта оплаты конвертируется в рубли по курсу банка-эмитента карты.

Директория с именем VipSpbSDK будет создана автоматически.

Построение

Ознакомьтесь предварительно с особенностями Вашей версии

Откройте и постройте проекты:

  • Programs\ObjectConsole\Polyline12_ObjConsole.prj6
  • Programs\ObjectWin0\Polyline12_ObjWindows.prj6
  • Programs\ObjectWin1\Polyline12_ObjWindows.prj6
  • ProgramsDir\ObjectWin2\Polyline12_ObjWindows.prj6

Выполните командный файл Programs\BuildHumanInterfaceLib.cmd

Откройте и постройте проекты, использующие библиотеки пользовательских интерфейсов:

  • Programs\ObjectWinLib0\Polyline12_ObjWindows.prj6
  • Programs\ObjectWinLib1\Polyline12_ObjWindows.prj6
  • Programs\ObjectWinLib2\Polyline12_ObjWindows.prj6

Для построения проектов переменная SpbSolutions должна быть установлена как маршрут к директории, где располагается VipSpbSDK.

Комплексное построение проектов

Для упрощения начального построения и выполнения всех необходимых настроек имеется командный файл Build.cmd (BuildPersonal.cmd - в зависимости от версии, детали см. Справка по версиям или в файле Examples\Polyline\VersionReference.html).

Командный файл Build.cmd при его использовании:

  • настраивает переменную среды программирования IDE SpbSolutions, применительно к условиям установки;
  • "знает", где установлена система Visual Prolog и программа VipBuilder.exe;
  • производит построение всех проектов, включая проекты в поддиректориях;
  • производит построение всех необходимых библиотек;
  • осуществляет регистрацию всех необходимых Pzl-компонент (при их использовании);
  • информирует об успешном или неуспешном завершении каждой операции;
  • может быть использован только совместно с версией Visual Prolog CE (детали см Справка по версиям или в файле Examples\Polyline\VersionReference.html).

Запуск

  • Запуск приложения из среды по E или запустить исполняемое приложение из директории EXE.
  • Язык приложения определяется помещением в командной строке идентификатора языка:
    • ru - русский
    • en - английский
  • При запуске из среды IDE параметр языка помещается в поле формы "Project Settings"\Run Options\Run Arguments, получаемой из меню Project\Settings...
  • Игрок Computer00 может быть единственным игроком, при этом он должен быть объявлен как стартующий игрок.