コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: LucRyan/Othello
        private void ServerBegin(int total)
        {
            int x = total / 8;
            int y = total % 8;

            EnemyMatch(x, y);        //Update current;
            UpdateChessBoard(Current);
            Current.GenerateChild(); //Initialzie the states which self may put, the available position is also calculated
            Steps++;

            /*for (int i = 0; i < Current.Child.Count; i++)
             * {
             *  Current.Child[i].GenerateChild();//Initialize all the enemy's state after each self state;
             * }*/
        }
コード例 #2
0
        public void generateLevelChild(State aState, int currentLevel)
        {
            if (currentLevel == SearchLeve - 1)
            {
                return;
            }
            aState.GenerateChild();

            if (aState.AvailablePosition[0].Count != 0)
            {
                for (int i = 1; i < aState.AvailablePosition[0].Count + 1; i++)
                {
                    generateLevelChild(aState.Child[i], currentLevel + 1);
                }
            }
            else//No step to go;
            {
                generateLevelChild(aState.Child[0], currentLevel + 1);
            }
        }
コード例 #3
0
ファイル: MainWindow.xaml.cs プロジェクト: LucRyan/Othello
 private void Reset()
 {
     counter           = 0;
     Steps             = 4;
     Start             = new State();
     Start.Board[3][3] = 0;
     Start.Board[4][3] = 7;
     Start.Board[4][4] = 0;
     Start.Board[3][4] = 7;
     if (CurrentPlayer == PlayerRole.White)
     {
         Start.NextPlayer = 7;
     }
     else
     {
         Start.NextPlayer = 7;
     }
     Rules.getAvailableList(Start.NextPlayer, Start.Board, Start.AvailablePosition);
     Start.GenerateChild();
     Current = Start;
     UpdateChessBoard(Current);
 }
コード例 #4
0
 public void AddTwoLevelChild(State aState, int CurrentLevel)
 {
     if (CurrentLevel == SearchLeve - 2)
     {
         aState.GenerateChild();
         Numberr1++;
         if (aState.AvailablePosition[0].Count != 0)
         {
             for (int i = 1; i < aState.AvailablePosition[0].Count + 1; i++)
             {
                 aState.Child[i].GenerateChild();
                 Numberr2++;
                 Numberr3 += aState.Child[i].AvailablePosition[0].Count;
             }
         }
         else//No step to go;
         {
             aState.Child[0].GenerateChild();
             Numberr2++;
         }
         return;
     }
     else
     {
         if (aState.AvailablePosition[0].Count != 0)
         {
             for (int i = 1; i < aState.AvailablePosition[0].Count + 1; i++)
             {
                 AddTwoLevelChild(aState.Child[i], CurrentLevel + 1);
             }
         }
         else//No step to go;
         {
             AddTwoLevelChild(aState.Child[0], CurrentLevel + 1);
         }
     }
 }
コード例 #5
0
ファイル: MainWindow.xaml.cs プロジェクト: LucRyan/Othello
 private void Reset()
 {
     counter = 0;
     Steps = 4;
     Start = new State();
     Start.Board[3][3] = 0;
     Start.Board[4][3] = 7;
     Start.Board[4][4] = 0;
     Start.Board[3][4] = 7;
     if (CurrentPlayer == PlayerRole.White)
         Start.NextPlayer = 7;
     else
         Start.NextPlayer = 7;
     Rules.getAvailableList(Start.NextPlayer, Start.Board, Start.AvailablePosition);
     Start.GenerateChild();
     Current = Start;
     UpdateChessBoard(Current);
 }
コード例 #6
0
ファイル: Alg_2.cs プロジェクト: LucRyan/Othello
        public void generateLevelChild(State aState,int currentLevel )
        {
            if (currentLevel == SearchLeve-1) return;
            aState.GenerateChild();

            if (aState.AvailablePosition[0].Count != 0)
            {
                for (int i = 1; i < aState.AvailablePosition[0].Count + 1; i++)
                {
                    generateLevelChild(aState.Child[i], currentLevel + 1);
                }
            }
            else//No step to go;
            {
                generateLevelChild(aState.Child[0], currentLevel + 1);
            }
        }
コード例 #7
0
ファイル: Alg_2.cs プロジェクト: LucRyan/Othello
 public void AddTwoLevelChild(State aState, int CurrentLevel)
 {
     if (CurrentLevel == SearchLeve - 2)
     {
         aState.GenerateChild();
         Numberr1++;
         if (aState.AvailablePosition[0].Count != 0)
         {
             for (int i = 1; i < aState.AvailablePosition[0].Count + 1; i++)
             {
                 aState.Child[i].GenerateChild();
                 Numberr2++;
                 Numberr3 += aState.Child[i].AvailablePosition[0].Count;
             }
         }
         else//No step to go;
         {
             aState.Child[0].GenerateChild();
             Numberr2++;
         }
         return;
     }
     else
     {
         if (aState.AvailablePosition[0].Count != 0)
         {
             for (int i = 1; i < aState.AvailablePosition[0].Count + 1; i++)
             {
                 AddTwoLevelChild(aState.Child[i], CurrentLevel + 1);
             }
         }
         else//No step to go;
         {
             AddTwoLevelChild(aState.Child[0], CurrentLevel + 1);
         }
     }
 }