Exemple #1
0
        private ChessTable GetTableForMove(Move move)
        {
            ChessTable newTable = stateTable;

            newTable.SetValue(PlayerType.None, move.From.Item1, move.From.Item2);
            newTable.SetValue(Player, move.To.Item1, move.To.Item2);
            return(newTable);
        }
Exemple #2
0
        private ChessTable GetTableForMove(Move move)
        {
            ChessTable newTable = new ChessTable();

            newTable.Table = stateTable.Table;
            newTable.SetValue(PlayerType.None, move.From.Item1, move.From.Item2);
            newTable.SetValue(Player, move.To.Item1, move.To.Item2);
            if (Player == PlayerType.Maximizing)
            {
                UpdateTable(newTable);
                //Console.WriteLine("new table:");
                //Console.WriteLine(newTable.ToString());
            }

            return(newTable);
        }
Exemple #3
0
 public INode ResetTable()
 {
     for (int i = 0; i < ChessTable.SIZE; i++)
     {
         for (int j = 0; j < ChessTable.SIZE; j++)
         {
             if (i == 0 || (i == (ChessTable.SIZE - 1)) || j == 0 || (j == (ChessTable.SIZE - 1)))
             {
                 stateTable.SetValue(PlayerType.Minimizing, i, j);
             }
             else
             {
                 stateTable.SetValue(PlayerType.None, i, j);
             }
         }
     }
     stateTable.SetValue(PlayerType.Maximizing, ChessTable.SIZE / 2, ChessTable.SIZE / 2);
     return(this);
 }
Exemple #4
0
 public void ResetTable()
 {
     int[] mins = new int[] { };
     for (int i = 0; i < ChessTable.SIZE; i++)
     {
         for (int j = 0; j < ChessTable.SIZE; j++)
         {
             if (i == 0 || i == ChessTable.SIZE - 1 || j == 0 || j == ChessTable.SIZE - 1)
             {
                 stateTable.SetValue(PlayerType.Minimizing, i, j);
             }
             else
             {
                 stateTable.SetValue(PlayerType.None, i, j);
             }
         }
     }
     stateTable.SetValue(PlayerType.Maximizing, ChessTable.SIZE / 2, ChessTable.SIZE / 2);
 }
Exemple #5
0
        public ChessTable UpdateTable(ChessTable newTable)
        {
            for (int i = 0; i < ChessTable.SIZE; i++)
            {
                for (int j = 0; j < ChessTable.SIZE; j++)
                {
                    if (newTable.GetValue(i, j) == 1 && Player == PlayerType.Maximizing)
                    {
                        int LU   = newTable.GetValue(i - 1, j - 1);
                        int L    = newTable.GetValue(i, j - 1);
                        int LD   = newTable.GetValue(i + 1, j - 1);
                        int Up   = newTable.GetValue(i - 1, j);
                        int Down = newTable.GetValue(i + 1, j);
                        int R    = newTable.GetValue(i, j + 1);
                        int RU   = newTable.GetValue(i - 1, j + 1);
                        int RD   = newTable.GetValue(i + 1, j + 1);
                        //8 direction
                        if ((i + j) % 2 == 0)
                        {
                            if (L == R && L == 2)
                            {
                                newTable.SetValue(PlayerType.None, i, j - 1);

                                newTable.SetValue(PlayerType.None, i, j + 1);
                            }
                            if (LU == RD && LU == 2)
                            {
                                newTable.SetValue(PlayerType.None, i - 1, j - 1);
                                newTable.SetValue(PlayerType.None, i + 1, j + 1);
                            }

                            if (Up == Down && Up == 2)
                            {
                                newTable.SetValue(PlayerType.None, i - 1, j);
                                newTable.SetValue(PlayerType.None, i + 1, j);
                            }

                            if (LD == RU && LD == 2)
                            {
                                newTable.SetValue(PlayerType.None, i + 1, j - 1);
                                newTable.SetValue(PlayerType.None, i - 1, j + 1);
                            }
                        }
                        else
                        {
                            if (L == R && L == 2)
                            {
                                newTable.SetValue(PlayerType.None, i, j - 1);
                                newTable.SetValue(PlayerType.None, i, j + 1);
                            }

                            if (Up == Down && Up == 2)
                            {
                                newTable.SetValue(PlayerType.None, i - 1, j);
                                newTable.SetValue(PlayerType.None, i + 1, j);
                            }
                        }
                        i = ChessTable.SIZE;
                        j = ChessTable.SIZE;
                    }
                }
            }
            return(newTable);
        }