<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE doc SYSTEM "vbdocman.dtd">

<!-- Created by VBdocman. Please visit http://www.vbdocman.com-->

<doc>
    <vbdocman_path>e:\Program Files\VBdocman</vbdocman_path>
    <output_path>E:\Zdrojaky\VB\VBdocman\Version 2.21\Full\SETUP\Samples\TicTacToe\VBdoc</output_path>
    <project>
        <name>TicTacToe</name>
        <title_page_text>This is reference for TicTacToe project.</title_page_text>
        <members>            <member type="form">
                <name>frmAbout</name>
                <module>frmAbout</module>
		
		<needs_module value="no"></needs_module>

                <summary>Window displaying the information about this
 application.

</summary>
		
                
                
                
		




                
                
                		<seealso cref="MainForm">MainForm</seealso>


		
				<method cref="frmAbout.GetKeyValue">GetKeyValue</method>

		<method cref="frmAbout.StartSysInfo">StartSysInfo</method>


		
		
            </member>            <member type="method"  scope="Public">
                <name>GetKeyValue</name>
                <module>frmAbout</module>
		
		<needs_module value="no"></needs_module>

                <summary>
</summary>
		                <param name="KeyRoot">Required. Long.
</param>
                <param name="KeyName">Required. String.
</param>
                <param name="SubKeyRef">Required. String.
</param>
                <param name="KeyVal">Required. String.
</param>

		<returns>Boolean.</returns>

		




		
                
                
                
		<user1>(c) Peter Macej 2000-2002</user1>





                <declaration>Public Function GetKeyValue(KeyRoot As Long, KeyName As String, SubKeyRef As String, ByRef KeyVal As String) As Boolean</declaration>

                
                
		
				<applies_to cref="frmAbout">frmAbout</applies_to>


            </member>            <member type="method"  scope="Public">
                <name>StartSysInfo</name>
                <module>frmAbout</module>
		
		<needs_module value="no"></needs_module>

                <summary>Displays the system info window in About dialog.

</summary>
		
		
		




		
                
                
                
		




                <declaration>Public Sub StartSysInfo()</declaration>

                
                		<seealso cref="frmAbout">frmAbout</seealso>


		
				<applies_to cref="frmAbout">frmAbout</applies_to>


            </member>            <member type="form">
                <name>MainForm</name>
                <module>MainForm</module>
		
		<needs_module value="no"></needs_module>

                <summary>Main window of this application. It contains
 menu with About dialog and playing area.
 The "New Game" button starts new game. The old one
 if already not finished is terminated first.

</summary>
		
                
                
                
		




                
                
                		<seealso cref="frmAbout">frmAbout</seealso>


		
		
		
		
            </member>            <member type="class">
                <name>PlayField</name>
                <module>PlayField</module>
		
		<needs_module value="no"></needs_module>

                <summary>Object representing playing grid.

</summary>
		
                
                
                
		




                
                
                		<seealso cref="PlayField.field">field</seealso>


		
				<method cref="PlayField.clear">clear</method>

		<method cref="PlayField.getCell">getCell</method>

		<method cref="PlayField.getWinner">getWinner</method>

		<method cref="PlayField.setCell">setCell</method>


				<property cref="PlayField.field">field</property>

		<property cref="PlayField.size">size</property>


		
            </member>            <member type="method"  scope="Public">
                <name>clear</name>
                <module>PlayField</module>
		
		<needs_module value="no"></needs_module>

                <summary>Clears the playing field.

</summary>
		
		
		




		<remarks>All cells are set to 0.</remarks>

                
                
                
		




                <declaration>Public Sub clear()</declaration>

                
                		<seealso cref="PlayField.field">field</seealso>

		<seealso cref="PlayField.setCell">setCell</seealso>


				<example cref="file:PlayFieldClearExample.txt
">PlayFieldClearExample.txt</example>


				<applies_to cref="PlayField">PlayField</applies_to>


            </member>            <member type="method"  scope="Public">
                <name>getCell</name>
                <module>PlayField</module>
		
		<needs_module value="no"></needs_module>

                <summary>Returns the value of specified cell.

</summary>
		                <param name="x">Required. Integer. X position
 of cell.
</param>
                <param name="y">Required. Integer. Y position
 of cell.
</param>

		<returns>Integer. Value of cell.</returns>

		




		<remarks>Use this method for deciding whether the cell
 is empty:<para></para>
<![CDATA[
    If getCell(1, 1) = 0 Then<para></para>
        setCell 1, 1, 2<para></para>
    End If
]]></remarks>

                
                
                
		




                <declaration>Public Function getCell(ByVal x As Integer, ByVal y As Integer) As Integer</declaration>

                
                		<seealso cref="PlayField.field">field</seealso>

		<seealso cref="PlayField.setCell">setCell</seealso>


		
				<applies_to cref="PlayField">PlayField</applies_to>


            </member>            <member type="method"  scope="Public">
                <name>getWinner</name>
                <module>PlayField</module>
		
		<needs_module value="no"></needs_module>

                <summary>Returns the winner.

</summary>
		
		<returns>Integer. Number of player who
 won (1 or 2). If game is already not over,
0 is returned.</returns>

		




		
                
                
                
		




                <declaration>Public Function getWinner() As Integer</declaration>

                
                		<seealso cref="PlayField">PlayField</seealso>


		
				<applies_to cref="PlayField">PlayField</applies_to>


            </member>            <member type="method"  scope="Public">
                <name>setCell</name>
                <module>PlayField</module>
		
		<needs_module value="no"></needs_module>

                <summary>Sets the value of specified cell.
</summary>
		                <param name="x">Required. Integer. X position of cell.
</param>
                <param name="y">Required. Integer. Y position of cell.
</param>
                <param name="value">Optional. Integer, new value of
cell. Default value is 0.
</param>

		
		                <settings parameter="value">

                    <setting constant="cellEmpty">
			<value>0</value>
			<description>Empty cell.
</description>
                    </setting>

                    <setting constant="cellPlayer1">
			<value>1</value>
			<description>Player's 1 cell.
</description>
                    </setting>

                    <setting constant="cellPlayer2">
			<value>2</value>
			<description>Player's 2 cell.
</description>
                    </setting>

</settings>





		<remarks>This method is not very interesting :-)</remarks>

                <author>Peter Macej</author>

                <revision>1234 (22. Jul 2002)</revision>

                <version>2.2</version>

		<user1>(c) Peter Macej 2000-2002</user1>

<user2>Check cell boundaries.</user2>




                <declaration>Public Sub setCell(ByVal x As Integer, ByVal y As Integer, Optional ByVal value As Integer = 0)</declaration>

                <code><![CDATA[Public Sub setCell(ByVal x As Integer, ByVal y As Integer, Optional ByVal value As Integer = 0)<para></para>End Sub]]></code>

                		<seealso cref="PlayField.field">field</seealso>

		<seealso cref="PlayField.getCell">getCell</seealso>


		
				<applies_to cref="PlayField">PlayField</applies_to>


            </member>            <member type="property"  scope="Public">
                <name>field</name>
                <module>PlayField</module>
		
		<needs_module value="no"></needs_module>

                <summary>Two dimensional array representing playing
 grid. The cells are counted from zero.

</summary>
		                <param name="vData">Variant.
</param>

		
		




		<remarks>The array has size x size dimension.
 The cell is of Integer type and can have
 three values:
 0-empty cell,
 1-player's 1 cell,
 2-player's 2 cell,</remarks>

                
                
                
		




                <declaration>Public Property Let field(ByVal vData As Variant)</declaration>

                
                		<seealso cref="PlayField.clear">clear</seealso>

		<seealso cref="PlayField.getCell">getCell</seealso>

		<seealso cref="PlayField.setCell">setCell</seealso>


		
				<applies_to cref="PlayField">PlayField</applies_to>


            </member>            <member type="property"  scope="Public">
                <name>size</name>
                <module>PlayField</module>
		
		<needs_module value="no"></needs_module>

                <summary>Sets/gets the size of playing grid.

</summary>
		                <param name="vData">Integer. Size in cells.
</param>

		
		




		
                
                
                
		




                <declaration>Public Property Let size(ByVal vData As Integer)</declaration>

                
                		<seealso cref="PlayField.field">field</seealso>


		
				<applies_to cref="PlayField">PlayField</applies_to>


            </member>            <member type="class">
                <name>RandomPlayer</name>
                <module>RandomPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Class representing the player with random
 strategy. It means that he writes his mark
 randomly.

</summary>
		
                
                
                
		




                
                
                		<seealso cref="SmartPlayer">SmartPlayer</seealso>

		<seealso cref="SystematicPlayer">SystematicPlayer</seealso>


		
				<method cref="RandomPlayer.decide">decide</method>

		<method cref="RandomPlayer.turn">turn</method>


				<property cref="RandomPlayer.myColor">myColor</property>

		<property cref="RandomPlayer.playerName">playerName</property>

		<property cref="RandomPlayer.playField">playField</property>

		<property cref="RandomPlayer.score">score</property>


		
            </member>            <member type="method"  scope="Public">
                <name>decide</name>
                <module>RandomPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Decides the next turn of player.

</summary>
		                <param name="x">Required. Integer. X position of cell.
</param>
                <param name="y">Required. Integer. Y position of cell.
</param>

		
		




		<remarks>The position of selected cell is returned in
 x and y parameters. The play field is NOT
 affected unlike the turn method.</remarks>

                
                
                
		




                <declaration>Public Sub decide(x As Integer, y As Integer)</declaration>

                
                		<seealso cref="RandomPlayer.playField">playField</seealso>

		<seealso cref="RandomPlayer.turn">turn</seealso>


		
				<applies_to cref="RandomPlayer">RandomPlayer</applies_to>

		<applies_to cref="SystematicPlayer">SystematicPlayer</applies_to>


            </member>            <member type="method"  scope="Public">
                <name>turn</name>
                <module>RandomPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Makes the next turn of player.

</summary>
		
		
		




		<remarks>The position of selected cell is decided
 and the play field is affected unlike the decide method.</remarks>

                
                
                
		




                <declaration>Public Sub turn()</declaration>

                
                		<seealso cref="RandomPlayer.decide">decide</seealso>


		
				<applies_to cref="RandomPlayer">RandomPlayer</applies_to>

		<applies_to cref="SmartPlayer">SmartPlayer</applies_to>

		<applies_to cref="SystematicPlayer">SystematicPlayer</applies_to>


            </member>            <member type="property"  scope="Public">
                <name>myColor</name>
                <module>RandomPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Color of player.

</summary>
		                <param name="color">Integer, color of player.
</param>

		
		                <settings parameter="color">

                    <setting constant="1">
			<value>1</value>
			<description>This player is player 1.
</description>
                    </setting>

                    <setting constant="2">
			<value>2</value>
			<description>This player is player 2.
</description>
                    </setting>

</settings>





		
                
                
                
		




                <declaration>Public Property Let myColor(ByVal color As Integer)</declaration>

                
                		<seealso cref="RandomPlayer.playerName">playerName</seealso>

		<seealso cref="RandomPlayer.score">score</seealso>


		
				<applies_to cref="RandomPlayer">RandomPlayer</applies_to>

		<applies_to cref="SmartPlayer">SmartPlayer</applies_to>

		<applies_to cref="SystematicPlayer">SystematicPlayer</applies_to>


            </member>            <member type="property"  scope="Public">
                <name>playerName</name>
                <module>RandomPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Sets/gets name of player.

</summary>
		                <param name="vData">String, name of player.
</param>

		
		




		<remarks>This name is used when saving history
 of scores.</remarks>

                
                
                
		




                <declaration>Public Property Let playerName(ByVal vData As String)</declaration>

                
                		<seealso cref="RandomPlayer.myColor">myColor</seealso>

		<seealso cref="RandomPlayer.score">score</seealso>


		
				<applies_to cref="RandomPlayer">RandomPlayer</applies_to>

		<applies_to cref="SmartPlayer">SmartPlayer</applies_to>

		<applies_to cref="SystematicPlayer">SystematicPlayer</applies_to>


            </member>            <member type="property"  scope="Public">
                <name>playField</name>
                <module>RandomPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Sets/gets play field that is used by player.

</summary>
		                <param name="vData">playField object.
</param>

		
		




		
                
                
                
		




                <declaration>Public Property Set playField(ByVal vData As playField)</declaration>

                
                		<seealso cref="PlayField">PlayField</seealso>


		
				<applies_to cref="RandomPlayer">RandomPlayer</applies_to>

		<applies_to cref="SmartPlayer">SmartPlayer</applies_to>

		<applies_to cref="SystematicPlayer">SystematicPlayer</applies_to>


            </member>            <member type="property"  scope="Public">
                <name>score</name>
                <module>RandomPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Sets/gets score of player.

</summary>
		                <param name="vData">Integer, score.
</param>

		
		




		
                
                
                
		




                <declaration>Public Property Let score(ByVal vData As Integer)</declaration>

                
                		<seealso cref="RandomPlayer.myColor">myColor</seealso>

		<seealso cref="RandomPlayer.playerName">playerName</seealso>


		
				<applies_to cref="RandomPlayer">RandomPlayer</applies_to>

		<applies_to cref="SmartPlayer">SmartPlayer</applies_to>

		<applies_to cref="SystematicPlayer">SystematicPlayer</applies_to>


            </member>            <member type="class">
                <name>SmartPlayer</name>
                <module>SmartPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Class representing the player with smart
 strategy. It means that he writes his mark
 after retrieving all possible solutions and
 choosing the best. It takes some time.

</summary>
		
                
                
                
		




                
                
                		<seealso cref="RandomPlayer">RandomPlayer</seealso>

		<seealso cref="SystematicPlayer">SystematicPlayer</seealso>


		
				<method cref="SmartPlayer.decide">decide (SmartPlayer)</method>

		<method cref="SmartPlayer.evaluateTurn">evaluateTurn</method>

		<method cref="RandomPlayer.turn">turn</method>


				<property cref="RandomPlayer.myColor">myColor</property>

		<property cref="RandomPlayer.playerName">playerName</property>

		<property cref="RandomPlayer.playField">playField</property>

		<property cref="RandomPlayer.score">score</property>

		<property cref="SmartPlayer.searchDepth">searchDepth</property>

		<property cref="SmartPlayer.timeLimit">timeLimit</property>


				<event cref="SmartPlayer.timeout">timeout</event>


            </member>            <member type="method"  scope="Public">
                <name>decide</name>
                <module>SmartPlayer</module>
		                <needs_module value="yes"></needs_module>

                <summary>Looks for several turns and returns the best one.

</summary>
		                <param name="x">Required. Integer. X position of cell.
</param>
                <param name="y">Required. Integer. Y position of cell.
</param>

		
		




		<remarks>The position of selected cell is returned in
 x and y parameters. The play field is NOT
 affected unlike the turn method.</remarks>

                
                
                
		




                <declaration>Public Sub decide(x As Integer, y As Integer)</declaration>

                
                		<seealso cref="RandomPlayer.playField">playField</seealso>

		<seealso cref="RandomPlayer.turn">turn</seealso>


		
				<applies_to cref="SmartPlayer">SmartPlayer</applies_to>


            </member>            <member type="method"  scope="Public">
                <name>evaluateTurn</name>
                <module>SmartPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Returns score for specified turn.

</summary>
		                <param name="x">Required. Integer. X position of cell to be marked.
</param>
                <param name="y">Required. Integer. Y position of cell to be marked.
</param>

		<returns>Integer. Score of turn.</returns>

		




		<remarks>To every turn found in decision procedure is
 assigned a score that reflects the "fitness" of
 that turn. At the end the turn with the best score
 is chosen.</remarks>

                
                
                
		




                <declaration>Public Function evaluateTurn(ByVal x As Integer, ByVal y As Integer) As Integer</declaration>

                
                		<seealso cref="SmartPlayer.searchDepth">searchDepth</seealso>

		<seealso cref="SmartPlayer">SmartPlayer</seealso>


		
				<applies_to cref="SmartPlayer">SmartPlayer</applies_to>


            </member>            <member type="property"  scope="Public">
                <name>searchDepth</name>
                <module>SmartPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Depth of forward searching the solution.

</summary>
		                <param name="vData">Integer, depth.
</param>

		
		




		<remarks>This strategy looks for several turns forward
 so that it could find best possible solution.
 Since it is time consuming and complex operation,
 the number of next searched turns is limited by
 this value.</remarks>

                
                
                
		




                <declaration>Public Property Let searchDepth(ByVal vData As Integer)</declaration>

                
                		<seealso cref="SmartPlayer">SmartPlayer</seealso>


		
				<applies_to cref="SmartPlayer">SmartPlayer</applies_to>


            </member>            <member type="property"  scope="Public">
                <name>timeLimit</name>
                <module>SmartPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Time limit in miliseconds that is allowed to
 "think" about solution. After that limit the
 searching the solution is stopped and if no was found,
 the timeout event occurs.

</summary>
		
		
		




		
                
                
                
		




                <declaration>Public timeLimit As Integer</declaration>

                
                		<seealso cref="SmartPlayer.searchDepth">searchDepth</seealso>

		<seealso cref="SmartPlayer.timeout">timeout</seealso>


		
				<applies_to cref="SmartPlayer">SmartPlayer</applies_to>


            </member>            <member type="event"  scope="Public">
                <name>timeout</name>
                <module>SmartPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary> Event indicating that timeout occured.

</summary>
		                <param name="time">Required. Long. Time in miliseconds
 from starting the turn till timeout
 occured.
</param>
                <param name="limit">Required. Integer. Current
 limit in miliseconds for timeout. This value is
 taken from timeLimit property.
</param>

		
		




		<remarks>This event usually signals an error (no
 solution was found within time limit).
</remarks>

                
                
                
		




                <declaration>Public Event timeout(time As Long, limit As Integer)</declaration>

                
                		<seealso cref="SmartPlayer.decide">decide (SmartPlayer)</seealso>

		<seealso cref="SmartPlayer.searchDepth">searchDepth</seealso>

		<seealso cref="SmartPlayer.timeLimit">timeLimit</seealso>

		<seealso cref="RandomPlayer.turn">turn</seealso>


		
				<applies_to cref="SmartPlayer">SmartPlayer</applies_to>


            </member>            <member type="class">
                <name>SystematicPlayer</name>
                <module>SystematicPlayer</module>
		
		<needs_module value="no"></needs_module>

                <summary>Class representing the player with systematic
 strategy. It means that he writes his mark
 at the first empty cell in grid. It starts
 from left to right and from top to bottom.

</summary>
		
                
                
                
		




                
                
                		<seealso cref="RandomPlayer">RandomPlayer</seealso>

		<seealso cref="SmartPlayer">SmartPlayer</seealso>


		
				<method cref="RandomPlayer.decide">decide</method>

		<method cref="RandomPlayer.turn">turn</method>


				<property cref="RandomPlayer.myColor">myColor</property>

		<property cref="RandomPlayer.playerName">playerName</property>

		<property cref="RandomPlayer.playField">playField</property>

		<property cref="RandomPlayer.score">score</property>


		
            </member>            <member type="std_module">
                <name>Module1</name>
                <module>Module1</module>
		
		<needs_module value="no"></needs_module>

                <summary>Module with some helpful functions.

</summary>
		
                
                
                
		




                
                
                
		
				<method cref="Module1.getBestName">getBestName</method>

		<method cref="Module1.getBestScore">getBestScore</method>

		<method cref="Module1.initGame">initGame</method>

		<method cref="Module1.loadScores">loadScores</method>

		<method cref="Module1.makeGratulation">makeGratulation</method>

		<method cref="Module1.play">play</method>

		<method cref="Module1.saveScores">saveScores</method>


		
		
            </member>            <member type="function"  scope="Public">
                <name>getBestName</name>
                <module>Module1</module>
		
		<needs_module value="no"></needs_module>

                <summary>Returns the name of the best player from
 score history.

</summary>
		
		<returns>String. Name of the best player.</returns>

		




		
                
                
                
		




                <declaration>Public Function getBestName() As String</declaration>

                
                		<seealso cref="Module1.getBestScore">getBestScore</seealso>

		<seealso cref="Module1.loadScores">loadScores</seealso>

		<seealso cref="Module1.saveScores">saveScores</seealso>


		
				<applies_to cref="Module1">Module1</applies_to>


            </member>            <member type="function"  scope="Public">
                <name>getBestScore</name>
                <module>Module1</module>
		
		<needs_module value="no"></needs_module>

                <summary>Returns the best score from score history.

</summary>
		
		<returns>Integer. Best score.</returns>

		




		
                
                
                
		




                <declaration>Public Function getBestScore() As Integer</declaration>

                
                		<seealso cref="Module1.getBestName">getBestName</seealso>

		<seealso cref="Module1.loadScores">loadScores</seealso>

		<seealso cref="Module1.saveScores">saveScores</seealso>


		
				<applies_to cref="Module1">Module1</applies_to>


            </member>            <member type="function"  scope="Public">
                <name>initGame</name>
                <module>Module1</module>
		
		<needs_module value="no"></needs_module>

                <summary>Initializes new game.

</summary>
		
		
		




		<remarks>The new palying field and players are created.
 Game is ready to play after calling this function.</remarks>

                
                
                
		




                <declaration>Public Sub initGame()</declaration>

                
                		<seealso cref="Module1.play">play</seealso>


		
				<applies_to cref="Module1">Module1</applies_to>


            </member>            <member type="function"  scope="Public">
                <name>loadScores</name>
                <module>Module1</module>
		
		<needs_module value="no"></needs_module>

                <summary>Loads score history from the file.

</summary>
		
		<returns>Collection.Contains scores strings in the form of two colon
 separated fields:player_name,score.</returns>

		




		
                
                
                
		




                <declaration>Public Function loadScores() As Collection</declaration>

                
                		<seealso cref="Module1.getBestName">getBestName</seealso>

		<seealso cref="Module1.getBestScore">getBestScore</seealso>

		<seealso cref="Module1.saveScores">saveScores</seealso>


		
				<applies_to cref="Module1">Module1</applies_to>


            </member>            <member type="function"  scope="Public">
                <name>makeGratulation</name>
                <module>Module1</module>
		
		<needs_module value="no"></needs_module>

                <summary>Returns congratulation for player.

</summary>
		                <param name="name">Optional. String.Default value is "player".
 Contains name of player for who the congratulation
 appears.
</param>

		<returns>String. Congartulation message
 for specified player.</returns>

		




		
                
                
                
		




                <declaration>Public Function makeGratulation(Optional name As String = "player") As String</declaration>

                
                		<seealso cref="Module1.play">play</seealso>


		
				<applies_to cref="Module1">Module1</applies_to>


            </member>            <member type="function"  scope="Public">
                <name>play</name>
                <module>Module1</module>
		
		<needs_module value="no"></needs_module>

                <summary>Starts playing new game.

</summary>
		
		<returns>Integer. Value indicating the
 number of player who won (1 or 2)</returns>

		




		<remarks>Two players turn repeatly and game is
 over when one of them wins or the "New Game"
 button is pressed.</remarks>

                
                
                
		




                <declaration>Public Function play() As Integer</declaration>

                
                		<seealso cref="Module1.initGame">initGame</seealso>

		<seealso cref="RandomPlayer">RandomPlayer</seealso>

		<seealso cref="SmartPlayer">SmartPlayer</seealso>

		<seealso cref="SystematicPlayer">SystematicPlayer</seealso>


		
				<applies_to cref="Module1">Module1</applies_to>


            </member>            <member type="function"  scope="Public">
                <name>saveScores</name>
                <module>Module1</module>
		
		<needs_module value="no"></needs_module>

                <summary>Saves score history into file.

</summary>
		                <param name="scores">Required. Collection object.
 Contains scores strings in the form of two colon
 separated fields:player_name,score.
</param>

		
		




		
                
                
                
		




                <declaration>Public Sub saveScores(scores As Collection)</declaration>

                
                		<seealso cref="Module1.getBestName">getBestName</seealso>

		<seealso cref="Module1.getBestScore">getBestScore</seealso>

		<seealso cref="Module1.loadScores">loadScores</seealso>


		
				<applies_to cref="Module1">Module1</applies_to>


            </member>        </members>
        <help_id_mappings>
            <help_id member="PlayField.clear">107</help_id>
            <help_id member="SmartPlayer.decide">128</help_id>
            <help_id member="RandomPlayer.decide">113</help_id>
            <help_id member="SmartPlayer.evaluateTurn">132</help_id>
            <help_id member="PlayField.field">105</help_id>
            <help_id member="frmAbout">101</help_id>
            <help_id member="Module1.getBestName">137</help_id>
            <help_id member="Module1.getBestScore">138</help_id>
            <help_id member="PlayField.getCell">109</help_id>
            <help_id member="frmAbout.GetKeyValue">0</help_id>
            <help_id member="PlayField.getWinner">106</help_id>
            <help_id member="Module1.initGame">142</help_id>
            <help_id member="Module1.loadScores">139</help_id>
            <help_id member="MainForm">100</help_id>
            <help_id member="Module1.makeGratulation">141</help_id>
            <help_id member="Module1">136</help_id>
            <help_id member="RandomPlayer.myColor">114</help_id>
            <help_id member="Module1.play">143</help_id>
            <help_id member="RandomPlayer.playerName">116</help_id>
            <help_id member="PlayField">103</help_id>
            <help_id member="RandomPlayer.playField">115</help_id>
            <help_id member="RandomPlayer">110</help_id>
            <help_id member="Module1.saveScores">140</help_id>
            <help_id member="RandomPlayer.score">111</help_id>
            <help_id member="SmartPlayer.searchDepth">133</help_id>
            <help_id member="PlayField.setCell">108</help_id>
            <help_id member="PlayField.size">104</help_id>
            <help_id member="SmartPlayer">124</help_id>
            <help_id member="frmAbout.StartSysInfo">102</help_id>
            <help_id member="SystematicPlayer">117</help_id>
            <help_id member="SmartPlayer.timeLimit">0</help_id>
            <help_id member="SmartPlayer.timeout">125</help_id>
            <help_id member="RandomPlayer.turn">112</help_id>

        </help_id_mappings>
    </project>
</doc>