Difference between revisions of "Tutorial Project Evolutions"

From wiki.visual-prolog.com

m
m
Line 1: Line 1:
{{spbCopyright}}
{{spbCopyright}}
==Motivation==
This is an example of the evolution of the project development beginning from the initial idea till the today status. A very easy game has been chosen as the basic idea. We do not know the initial name of this game so we call it Polyline.


This is an example of Visual Prolog project development evolution beginning from the initial idea till the today status.
Each development step represented as the release, so you can see step by step the evolution of the application. Each release expands the functionality of the application, moving along the way the code is extended, modified and restructured or only restructured and modified.  
A very easy game has been chosen as the basic idea. We do not know the initial name of this game so we call it ''Polyline''.


Each release expands the functionality of the application. Moving along the way the code is extended, modified and restructured or only restructured and modified.
Looking carefully on the code of each release you can see technique of the using of the Visual Prolog and advanced tools. It can be used to study the Visual Prolog features.  


{{PolyLine Game Rules}}
{{PolyLine Game Rules}}
==Before you start==
VipSpbSDK_PE_73_Examples_Polyline is part of the VipSpbSDK. VipSpbSDK - is the set of tools to develop applications based on Visual Prolog from Prolog Development Center A/S
To build and study projects of series you must install [http://www.visual-prolog.com|Visual Prolog programming system]
The reference information regarding the features depending on the vesrion of the Visual Prolog and version of the VipSpb SDK please see in the [[Polyline Version Reference|’’’Version Reference’’’]].
Short information regarding each release may be found in the table below.


{| cellspacing="0" border="1"
{| cellspacing="0" border="1"
Line 13: Line 21:
!Release
!Release
!Short Description
!Short Description
!User<br/>Interface
!User Interface
!PE
 
{{example_chain
|type=project
|release=14
|description=[[Tutorial Project. Release 14|The demonstration of the use of the pzl-Technology (DLL-based agreements)]]
|target=Win
}}


{{example_chain
{{example_chain
Line 21: Line 35:
|description=[[Tutorial Project. Release 13|The demonstration of various ways of the interaction with components placed to DLLs]]
|description=[[Tutorial Project. Release 13|The demonstration of various ways of the interaction with components placed to DLLs]]
|target=Win
|target=Win
|pe='''+'''
}}
}}


Line 29: Line 42:
|description=[[Tutorial Project. Release 12|Projects family with UI - ObjectConsole, Windows. The game dimension problem solved]]
|description=[[Tutorial Project. Release 12|Projects family with UI - ObjectConsole, Windows. The game dimension problem solved]]
|target=Con/Win
|target=Con/Win
|pe='''+'''
}}
}}


Line 37: Line 49:
|description=[[Tutorial Project. Release 11|Projects family with different kinds of UI - Console, ObjectConsole, Windows. The usage of Libraries. New Player added.]]
|description=[[Tutorial Project. Release 11|Projects family with different kinds of UI - Console, ObjectConsole, Windows. The usage of Libraries. New Player added.]]
|target=Con/Win
|target=Con/Win
|pe='''+'''
}}
}}


Line 43: Line 54:
|type=project
|type=project
|release=10
|release=10
|description=[[Tutorial Project. Release 10|Code modified. Communication with players based on events. ''NotificationAgency pack'' used.]]
|description=[[Tutorial Project. Releases 10|Code modified. Communication with players based on events. ''NotificationAgency pack'' used.]]
|target=Console
|target=Console
|pe='''+'''
}}
}}


Line 51: Line 61:
|type=project
|type=project
|release=9
|release=9
|description=[[Tutorial Project. Release 9|Code modified. Each class generates the Object.]]
|description=[[Tutorial Project. Releases 9|Code modified. Each class generates the Object.]]
|target=Console
|target=Console
|pe='''+'''
}}
}}


Line 59: Line 68:
|type=project
|type=project
|release=8
|release=8
|description=[[Tutorial Project. Release 8|Code modified. The structure of the project reorganized. Each class placed to the separate package.]]
|description=[[Tutorial Project. Releases 8|Code modified. The structure of the project reorganized. Each class placed to the separate package.]]
|target=Console
|target=Console
|pe='''+'''
}}
}}


Line 69: Line 77:
|description=[[Tutorial Project. Release 7|MultiLanguage feature. The code reorganized.]]
|description=[[Tutorial Project. Release 7|MultiLanguage feature. The code reorganized.]]
|target=Console
|target=Console
|pe='''+'''
}}
}}


Line 77: Line 84:
|description=[[Tutorial Project. Release 6|Multiple plays mode. Easy expansion of the list of players. The size of the field mutable. The code reorganized.]]
|description=[[Tutorial Project. Release 6|Multiple plays mode. Easy expansion of the list of players. The size of the field mutable. The code reorganized.]]
|target=Console
|target=Console
|pe='''+'''
}}
}}


Line 86: Line 92:
|target=Console
|target=Console
|pe='''+'''
|pe='''+'''
}}


{{example_chain
{{example_chain
Line 93: Line 98:
|description=[[Tutorial Project. Release 4|Safe computer's move - random. The code of the player-computer restructured.]]
|description=[[Tutorial Project. Release 4|Safe computer's move - random. The code of the player-computer restructured.]]
|target=Console
|target=Console
|pe='''+'''
}}
}}


Line 101: Line 105:
|description=[[Tutorial Project. Release 3|N players. The type of the player (computer or human) - by choice.]]
|description=[[Tutorial Project. Release 3|N players. The type of the player (computer or human) - by choice.]]
|target=Console
|target=Console
|pe='''+'''
}}
}}


Line 109: Line 112:
|description=[[Tutorial Project. Release 2|Players - objects. The initial move of the computer - random.]]
|description=[[Tutorial Project. Release 2|Players - objects. The initial move of the computer - random.]]
|target=Console
|target=Console
|pe='''+'''
}}
}}


Line 117: Line 119:
|description=[[Tutorial Project. Release 1|Players: computer and human. The initial move by choice.]]
|description=[[Tutorial Project. Release 1|Players: computer and human. The initial move by choice.]]
|target=Console
|target=Console
|pe='''+'''
}}
}}


|}
|}
==Building notes==
{{TestedWithEn}}
Releases 1-7 projects may be easily created by copying the code directly from the wiki pages.
Since Release 8 you need to download the set of projects.
Releases 1-9 projects may be built one by one without any tricks.
Since Release 10 all projects use SpbSolutions IDE variable, which must refer to the VipSpbSDK directory.
Since Release 11 some projects demonstrate building libraries, thus user must have Microsoft lib.exe program tool (see details in the release appropriate Readme.html file).
Some Projects since Release 13 demonstrate and use the DLL creation. So these projects must be built using VIP CE only (please see details in [[SpbSdk Examples Polyline Version Reference|VersionReference]]).
Projects placed to the Release 14 (Polyline14) PzlBasedApplication folder need to run the registration procedure after building all projects placed to the Containers directory. This must be done using the Programs\pzlBasedApplication\RegisterComponents.cmd command file.
{{PolylineBuildCMD}}


[[Category:Examples]]
[[Category:Examples]]

Revision as of 19:18, 12 April 2011

Written by Victor Yukhtenko. Email: victor@pdc.spb.su

Motivation

This is an example of the evolution of the project development beginning from the initial idea till the today status. A very easy game has been chosen as the basic idea. We do not know the initial name of this game so we call it Polyline.

Each development step represented as the release, so you can see step by step the evolution of the application. Each release expands the functionality of the application, moving along the way the code is extended, modified and restructured or only restructured and modified.

Looking carefully on the code of each release you can see technique of the using of the Visual Prolog and advanced tools. It can be used to study the Visual Prolog features.

Game description

The game is played on an M x N board.

Game rules

  • Each player on his turn adds a new point. The point must prolong the existing Polyline (or start the Polyline, if it doesn't exist).
  • The resulting Polyline must be non-interrupted and each move can be taken in any of end of the line.
  • The player, which locks the line (the point is set on the polyline), wins.

Before you start

VipSpbSDK_PE_73_Examples_Polyline is part of the VipSpbSDK. VipSpbSDK - is the set of tools to develop applications based on Visual Prolog from Prolog Development Center A/S To build and study projects of series you must install Prolog programming system

The reference information regarding the features depending on the vesrion of the Visual Prolog and version of the VipSpb SDK please see in the ’’’Version Reference’’’. Short information regarding each release may be found in the table below.

SRC Release Short Description User Interface
project 14 The demonstration of the use of the pzl-Technology (DLL-based agreements) Win
project 13 The demonstration of various ways of the interaction with components placed to DLLs Win
project 12 Projects family with UI - ObjectConsole, Windows. The game dimension problem solved Con/Win
project 11 Projects family with different kinds of UI - Console, ObjectConsole, Windows. The usage of Libraries. New Player added. Con/Win
project 10 Code modified. Communication with players based on events. NotificationAgency pack used. Console
project 9 Code modified. Each class generates the Object. Console
project 8 Code modified. The structure of the project reorganized. Each class placed to the separate package. Console
file 7 MultiLanguage feature. The code reorganized. Console
file 6 Multiple plays mode. Easy expansion of the list of players. The size of the field mutable. The code reorganized. Console

{{example_chain

type=file release=5 description=Computer's move based on the prognosis on the depth K moves. The code reorganized. target=Console pe=+
file 4 Safe computer's move - random. The code of the player-computer restructured. Console
file 3 N players. The type of the player (computer or human) - by choice. Console
file 2 Players - objects. The initial move of the computer - random. Console
file 1 Players: computer and human. The initial move by choice. Console

Building notes

Template:TestedWithEn

Releases 1-7 projects may be easily created by copying the code directly from the wiki pages. Since Release 8 you need to download the set of projects.

Releases 1-9 projects may be built one by one without any tricks.

Since Release 10 all projects use SpbSolutions IDE variable, which must refer to the VipSpbSDK directory.

Since Release 11 some projects demonstrate building libraries, thus user must have Microsoft lib.exe program tool (see details in the release appropriate Readme.html file).

Some Projects since Release 13 demonstrate and use the DLL creation. So these projects must be built using VIP CE only (please see details in VersionReference).

Projects placed to the Release 14 (Polyline14) PzlBasedApplication folder need to run the registration procedure after building all projects placed to the Containers directory. This must be done using the Programs\pzlBasedApplication\RegisterComponents.cmd command file.

To build projects the IDE variable SpbSolutions must be set to the VipSpbSDK directory.

The complex building

To simplify the settings and initial building of applicaions the Build.cmd command file included (BuildPersonal.cmd - please see details in Polyline Version Reference or in Examples\Polyline\VersionReference.html).

The use of Build.cmd file:

  • sets the SpbSolutions IDE variable, which refers to the VipSpb SDK directory;
  • "knows" where Visual Prolog is installed and uses VipBuilder.exe;
  • builds all projects containing in the subfolders;
  • builds all needed libraries;
  • registers all pzl-Components (if needed);
  • informs regarding the result of each building operation;
  • Build.cmd file may be used together with the Visual Prolog CE only (please see details in Polyline Version Reference or in Examples\Polyline\VersionReference.html).