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

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

м
 
(не показано 16 промежуточных версий этого же участника)
Строка 1: Строка 1:
Очередная версия Учебного проекта, функциональной идеей которого является простая игра.
{{PolylineTemplateRu
 
|goal=
[[Игра "Ползунок". Правила игры|Правила игры ...]]
 
==Цель==
Демонстрация приемов программирования приложений на языке Visual Prolog:
Демонстрация приемов программирования приложений на языке Visual Prolog:
* разниица в методологии построения консольных и оконных приложений
|goalContent=
* создание библиотек (LIB), написанных на Visual Prolog
* Разниица в методологии построения консольных и оконных приложений;
* отделение логики от пользовательского интерфейса  
* Создание библиотек (LIB), написанных на Visual Prolog;
 
* Отделение логики от пользовательского интерфейса.
==Особенности==
|code=
===разные интерфейсы===
*Release 11 представляет ряд проектов, которые имеют единую логику игры и управления, но различаются видом пользовательского интерфейса - Соnsole, ObjectConsole, Windows).
Release 11 представляет ряд проектов, которые имеют единую логику игры и управления, но различаются видом пользовательского интерфейса - Соnsole, ObjectConsole, Windows (в Персональной версии классы, представляющие пользовательский интерфейс Windows, помещены в библиотеку (.lib)).
*'''Построение и применение библиотек'''
===использование библиотек на базе VIP===
**Некоторые компоненты представляются либо в виде исходных кодов (.PRO) либо в виде библиотек (LIB), написанных на VIP (представлены соответствующие альтернативные проекты).
Некоторые компоненты представляются либо в виде исходных кодов (.PRO) либо в виде библиотек (LIB), написанных на VIP (представлены соответствующие альтернативные проекты). Представлен командный файл (.CMD), позволяющий строить библиотеку пользовательского интерфейса.  
**При построении библиотек использована программа LIB фирмы Microsoft (Microsoft Linker Stub 7.10.3077), помещенная в директорию '''3P_Tools/MSTools'''.
 
*'''Изоляция логики от пользовательского интерфейса'''
При построении библиотек использована программа LIB фирмы Microsoft (Microsoft Linker Stub 7.10.3077), помещенная в директорию '''3P_Tools/MSTools'''.
**Существенным для проектов семейства release 11 является строгое отделение кода логики от кода, представляющего Пользовательский интерфейс.
 
**Все проекты используют общий набор классов, поддерживающих логику игры и управления конфигурацией игры и ее ходом.
===отделение логики от интерфейса===
**Каждый проект использует собственную концепцию пользовательского интерфейса. Это дает возможность создавать и другие виды пользовательских интерфейсов, например, основанных на представлениях HTML или XML или даже с использованием других языков, оперирующих элементами пользовательских интерфейсов.
Существенным для проектов семейства release 11 является строгое отделение кода логики от кода, представляющего Пользовательский интерфейс.  
*'''Намек на универсализм.''' Структура кода логики управления конфигурацией и игрой в целом в принципе позволяет использовать логическую часть без изменения для организации класса подобных игр на плоскости, заменяя модуль, отвечающий за соблюдение правил игры (JuniourJudge). Естественно, модели игроков в этом случае должны соответствовать правилам игры.
 
*'''Известная проблема.''' Проект Релиз 11 создан на базе проекта Релиз 10. Взаимодействие между игроками организовано в виде глубоко скрытого рекурсивного процесса, где условие хвостовой рекурсии не выполняется. По этой причине начиная с некоторых значений произведения '''<размер поля>x<число раундов в cериальных играх>''' в ходе игры происходит переполнение стека вызовов и приложение исчезает. Эта проблема решена в проекте Релиз 12.
Все проекты используют общий набор классов, поддерживающих логику игры и управления конфигурацией игры и ее ходом.
|functionality=
{{Polyline11Functionality}}
Но каждый проект использует собственную концепцию пользовательского интерфейса. Это дает возможность создавать и другие виды пользовательских интерфейсов, например, основанных на представлениях HTML или XML или даже с использованием других языков, оперирующих элементами пользовательских интерфейсов.
|install=
 
Если у Вас имеется '''VipSpbSDK''', то все проекты находятся в директории '''Examples\Polyline\Polyline11\Programs'''
===намеки на универсализм===
Структура кода логики управления конфигурацией и игрой в целом в принципе позволяет использовать логическую часть без изменения для организации класса подобных игр на плоскости, заменяя модуль, отвечающий за соблюдение правил игры (JuniourJudge).
 
Естественно, модели игроков в этом случае должны соответствовать правилам игры.
===новая модель игрока===
В Release 11 к использовавшимся ранее моделям добавлена новая модель игрока - Computer3, которая представляется библиотекой Computer3.lib.
 
Эта модель не лучшая, но одна из возможных. Ее код не раскрывается не потому, что она содержит кокое-то Know-How.
 
Такое представление оставляет возможность во-первых показать соревнование двух разных моделей на поле достаточно большого размера, а во-вторых - устраивать в будущем как попарные, так и групповые состязания моделей, написанных разными людьми.
==Известные недостатки==
На данном этапе развития проекта, который "вырос" из предыдущей версии проекта (Release 10) передача прав хода от одного игрока к другому происходит как неявный (глубоко законспирированный) рекурсивный процесс, где "требование" хвостовый рекурсии не выполняется.  
 
Это приводит к тому, что, начиная с некоторых значений произведения '''размер игрового поля'''*'''число игр в режиме сериальных игр''' происходит переполнение стека вызовов и программа прекращает свое существование.  
 
Поиск способов решения этой проблемы - задача одного из следующих релизов.
 
 
==Установка==
'''Для установки и запуска''' проектов семейства Polyline 11 следует:
*Сгрузить архивы
**'''PdcSpbSDK_72_PE_Examples_Polyline11_Classes.zip'''
**'''PdcSpbSDK_72_PE_Examples_Polyline11_Programs.zip'''
 
используя страницу  форума PDC [http://discuss.visual-prolog.com/viewtopic.php?p=31221#31221 VIP-Средства и Примеры]
*Разархивировать эти архивы в одной и той же директории. Следует иметь в виду, что каждый из архивов создает структуру папок (иногда с повторениями) с корнем PdcSpbSDK. В результате структура всего набора release 11 должна выглядеть так:
 
[[Image:Polyline11Structure.jpg]]
 
*Откройте, постройте и запустите проекты, используя только '''VIP 7.2''':
**Polyline11_Console - консоль
**Polyline11_ConsoleLib - то же, но пользовательский интферфейс в виде библиотеки
**Polyline11_ObjectConsole объектно-ориентированная консоль
**Polyline11_ObjectConsoleLib - то же, но пользовательский интферфейс в виде библиотеки
**Polyline11_ObjWindowsLib - windows, пользовательский интферфейс в виде библиотеки
 
Как и прежде, для построения проектов Polyline11 переменная SpbSolutions среды программирования IDE должна быть определена как маршрут к директории PdcSpbSDK.
 
Язык приложения определяется помещением в командной строке идентификатора языка:
 
*ru - русский
*en - английский
 
==Представления==
{| cellspacing="0" border="1"
|-
!Фрагмент
!Краткое описание
!Детали
!Видео


|-
{{PolylineInstall}}
|[[Image:ConsoleSmall.jpg]]
|open=
|Построчная организция cценария диалога с пользователем в текстовой форме (на базе концепции PFC/Consol)
==Построение==
|Нет
[[PolylineVersionReference|'''Ознакомьтесь предварительно с особенностями Вашей версии''']]  
|[http://www.prolog-soft.com/Visual-Prolog/Downloads/consoleMovie.zip Сгрузить и смотреть видео... (архив 640 Kb)]


|-
Откройте и постройте проекты:
|[[Image:ObjectConsoleSmall.jpg]]
*Polyline11_Console - консольное приложение
|Организация взаимодействия с пользователем на базе интерфейсных компонентов типа "кнопка", "строковый редактор" и проч. с управлением мышью.
*Polyline11_ObjectConsole объектно-ориентированное консольное приложение
Построена на базе концепции PFC/Console. Концепция организации кода похожа на PFC/GUI, в том числе путем организации механизма событий.
*Polyline11_ObjWindows - Windows PFC/GUI
|[[Игра "Ползунок" вариант 11. ObjectConsole|Cм. детали...]]
|[http://www.prolog-soft.com/Visual-Prolog/Downloads/ObjectConsoleMovie.zip Сгрузить и смотреть видео... (архив 2.33 Mb)]


|-
Выполните командный файл Programs\BuildHumanInterfaceLib.cmd
|[[Image:ObjectWinSmall.jpg]]
*Откройте и постройте проекты, использующие библиотеки пользовательских интерфейсов:
|Стандартный для Windows пользовательский интерфейс на базе концепции PFC/GUI.
*Polyline11_ConsoleLib;
|Нет
*Polyline11_ObjectConsoleLib;
|[http://www.prolog-soft.com/Visual-Prolog/Downloads/ObjectWinMovie.zip Сгрузить и смотреть видео... (архив 2.9 Mb)]
*Polyline11_ObjWindowsLib


|}
{{PolylineBuildCMD}}


=Ссылки=
|run=
[[en:Game Polyline. Release 11]]
{{PolylineRun7_X}}
[[Category:Проекты]]
|enver=
[[Category:Игры]]
[[en:Tutorial Project. Release 11]]
}}

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

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

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

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

Цель

Демонстрация приемов программирования приложений на языке Visual Prolog:

  • Разниица в методологии построения консольных и оконных приложений;
  • Создание библиотек (LIB), написанных на Visual Prolog;
  • Отделение логики от пользовательского интерфейса.

Функции

Фрагмент Краткое описание Детали Видео
ConsoleSmall.jpg Построчная организция cценария диалога с пользователем в текстовой форме (на базе концепции PFC/Console) Нет Сгрузить и смотреть видео... (архив 640 Kb)
ObjectConsoleSmall.jpg Организация взаимодействия с пользователем на базе интерфейсных компонентов типа "кнопка", "строковый редактор" и проч. с управлением мышью.

Построена на базе концепции PFC/Console. Концепция организации кода похожа на PFC/GUI, в том числе путем организации механизма событий.

Cм. детали... Сгрузить и смотреть видео... (архив 2.33 Mb)
ObjectWinSmall.jpg Стандартный для Windows пользовательский интерфейс на базе концепции PFC/GUI. Нет Сгрузить и смотреть видео... (архив 2.9 Mb)

Известная проблема

Начиная с некоторых значений произведения <размер поля>x<число раундов в cериальных играх> в ходе игры приложение исчезает. Причина описана в разделе Код.

Эта проблема решена в проекте Релиз 12.

Код

  • Проверено на версии Visual Prolog 7.3 build 7302.
  • Release 11 представляет ряд проектов, которые имеют единую логику игры и управления, но различаются видом пользовательского интерфейса - Соnsole, ObjectConsole, Windows).
  • Построение и применение библиотек
    • Некоторые компоненты представляются либо в виде исходных кодов (.PRO) либо в виде библиотек (LIB), написанных на VIP (представлены соответствующие альтернативные проекты).
    • При построении библиотек использована программа LIB фирмы Microsoft (Microsoft Linker Stub 7.10.3077), помещенная в директорию 3P_Tools/MSTools.
  • Изоляция логики от пользовательского интерфейса
    • Существенным для проектов семейства release 11 является строгое отделение кода логики от кода, представляющего Пользовательский интерфейс.
    • Все проекты используют общий набор классов, поддерживающих логику игры и управления конфигурацией игры и ее ходом.
    • Каждый проект использует собственную концепцию пользовательского интерфейса. Это дает возможность создавать и другие виды пользовательских интерфейсов, например, основанных на представлениях HTML или XML или даже с использованием других языков, оперирующих элементами пользовательских интерфейсов.
  • Намек на универсализм. Структура кода логики управления конфигурацией и игрой в целом в принципе позволяет использовать логическую часть без изменения для организации класса подобных игр на плоскости, заменяя модуль, отвечающий за соблюдение правил игры (JuniourJudge). Естественно, модели игроков в этом случае должны соответствовать правилам игры.
  • Известная проблема. Проект Релиз 11 создан на базе проекта Релиз 10. Взаимодействие между игроками организовано в виде глубоко скрытого рекурсивного процесса, где условие хвостовой рекурсии не выполняется. По этой причине начиная с некоторых значений произведения <размер поля>x<число раундов в cериальных играх> в ходе игры происходит переполнение стека вызовов и приложение исчезает. Эта проблема решена в проекте Релиз 12.

Установка

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

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

  • VipSpbSDK_PE_73_Examples_Polyline_1_14.zip
  • VipSpbSDK_PE_73_Tools_Polyline_1_14.zip]

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

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

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

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

Построение

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

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

  • Polyline11_Console - консольное приложение
  • Polyline11_ObjectConsole объектно-ориентированное консольное приложение
  • Polyline11_ObjWindows - Windows PFC/GUI

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

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

Для построения проектов переменная 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...