Пример #1
0
        //Constructor 2.
        public DrawElefant(bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments, float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur//,ref FormRefrigtz THIS
                           )
        {
            MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
            IgnoreSelfObjectsT         = IgnoreSelfObject;
            UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
            BestMovmentsT        = BestMovment;
            PredictHuristicT     = PredictHurist;
            OnlySelfT            = OnlySel;
            AStarGreedyHuristicT = AStarGreedyHuris;
            ArrangmentsChanged   = Arrangments;
            //Initiate Global Variables By Local Parameters.
            Table = new int[8, 8];
            for (int ii = 0; ii < 8; ii++)
            {
                for (int jj = 0; jj < 8; jj++)
                {
                    Table[ii, jj] = Tab[ii, jj];
                }
            }
            for (int ii = 0; ii < AllDraw.ElefantMovments; ii++)
            {
                ElefantThinking[ii] = new ThinkingChess(MovementsAStarGreedyHuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHuristicT, OnlySelfT, AStarGreedyHuristicT, ArrangmentsChanged, (int)i, (int)j, a, Tab, 16, Ord, TB, Cur, 4, 2);
            }

            Row     = i;
            Column  = j;
            color   = a;
            Order   = Ord;
            Current = Cur;
        }
Пример #2
0
        //Constructor 1.

        /*public DrawKing(int CurrentAStarGredy, bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments)
         * {
         *  CurrentAStarGredyMax = CurrentAStarGredy;
         *  MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
         *  IgnoreSelfObjectsT = IgnoreSelfObject;
         *  UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
         *  BestMovmentsT = BestMovment;
         *  PredictHuristicT = PredictHurist;
         *  OnlySelfT = OnlySel;
         *  AStarGreedyHuristicT = AStarGreedyHuris;
         *  ArrangmentsChanged = Arrangments;
         * }
         */
        //Constructor 2.
        public DrawKing(int CurrentAStarGredy, bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments, float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur//, ref AllDraw. THIS
                        )
        {
            CurrentAStarGredyMax = CurrentAStarGredy;
            MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
            IgnoreSelfObjectsT         = IgnoreSelfObject;
            UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
            BestMovmentsT        = BestMovment;
            PredictHuristicT     = PredictHurist;
            OnlySelfT            = OnlySel;
            AStarGreedyHuristicT = AStarGreedyHuris;
            ArrangmentsChanged   = Arrangments;
            //Iniatite Global Variables.
            Table = new int[8, 8];
            for (int ii = 0; ii < 8; ii++)
            {
                for (int jj = 0; jj < 8; jj++)
                {
                    Table[ii, jj] = Tab[ii, jj];
                }
            }
            for (int ii = 0; ii < AllDraw.KingMovments; ii++)
            {
                KingThinking[ii] = new ThinkingChess(CurrentAStarGredyMax, MovementsAStarGreedyHuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHuristicT, OnlySelfT, AStarGreedyHuristicT, ArrangmentsChanged, (int)i, (int)j, a, Tab, 8, Ord, TB, Cur, 2, 6);
            }

            Row     = i;
            Column  = j;
            color   = a;
            Order   = Ord;
            Current = Cur;
        }
Пример #3
0
 //Constructor 2.
 public DrawSoldier(bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments, float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur
                    ) :
     base(Arrangments, (int)i, (int)j, a, Tab, Ord, TB, Cur)
 {
     MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
     IgnoreSelfObjectsT         = IgnoreSelfObject;
     UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
     BestMovmentsT        = BestMovment;
     PredictHuristicT     = PredictHurist;
     OnlySelfT            = OnlySel;
     AStarGreedyHuristicT = AStarGreedyHuris;
     ArrangmentsChanged   = Arrangments;
     //Initiate Global Variables.
     Table = new int[8, 8];
     for (int ii = 0; ii < 8; ii++)
     {
         for (int jj = 0; jj < 8; jj++)
         {
             Table[ii, jj] = Tab[ii, jj];
         }
     }
     for (int ii = 0; ii < AllDraw.SodierMovments; ii++)
     {
         SoldierThinking[ii] = new ThinkingChess(MovementsAStarGreedyHuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHuristicT, OnlySelfT, AStarGreedyHuristicT, ArrangmentsChanged, (int)i, (int)j, a, Tab, 4, Ord, TB, Cur, 16, 1);
     }
     RowS    = i;
     ColumnS = j;
     color   = a;
     Order   = Ord;
     Current = Cur;
 }
Пример #4
0
        //Constructor 1.

        /* public DrawSoldier(int CurrentAStarGredy, bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments)
         * {
         *   CurrentAStarGredyMax = CurrentAStarGredy;
         *   MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
         *   IgnoreSelfObjectsT = IgnoreSelfObject;
         *   UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
         *   BestMovmentsT = BestMovment;
         *   PredictHuristicT = PredictHurist;
         *   OnlySelfT = OnlySel;
         *   AStarGreedyHuristicT = AStarGreedyHuris;
         *   ArrangmentsChanged = Arrangments;
         * }
         */
        //Constructor 2.
        public DrawSoldier(int CurrentAStarGredy, bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments, float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur//, ref AllDraw. THIS
                           ) :
            base(Arrangments, (int)i, (int)j, a, Tab, Ord, TB, Cur)
        {
            lock (balanceLock)
            {
                if (S[0] == null && S[1] == null)
                {
                    S[0] = Image.FromFile(AllDraw.ImagesSubRoot + "SG.png");
                    S[1] = Image.FromFile(AllDraw.ImagesSubRoot + "SB.png");
                }


                CurrentAStarGredyMax = CurrentAStarGredy;
                MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
                IgnoreSelfObjectsT         = IgnoreSelfObject;
                UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
                BestMovmentsT        = BestMovment;
                PredictHuristicT     = PredictHurist;
                OnlySelfT            = OnlySel;
                AStarGreedyHuristicT = AStarGreedyHuris;
                ArrangmentsChanged   = Arrangments;
                //Initiate Global Variables.
                Table = new int[8, 8];
                for (int ii = 0; ii < 8; ii++)
                {
                    for (int jj = 0; jj < 8; jj++)
                    {
                        Table[ii, jj] = Tab[ii, jj];
                    }
                }
                if (i >= 8 || j >= 8)
                {
                    i = 7;
                }
                for (int ii = 0; ii < AllDraw.SodierMovments; ii++)
                {
                    SoldierThinking[ii] = new ThinkingChess(CurrentAStarGredyMax, MovementsAStarGreedyHuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHuristicT, OnlySelfT, AStarGreedyHuristicT, ArrangmentsChanged, (int)i, (int)j, a, Tab, 4, Ord, TB, Cur, 16, 1);
                }
                RowS    = i;
                ColumnS = j;
                color   = a;
                Order   = Ord;
                Current = Cur;
            }
        }
Пример #5
0
        //Constructor 1.

        /*public DrawElefant(int CurrentAStarGredy, bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments)
         * {
         *  CurrentAStarGredyMax = CurrentAStarGredy;
         *  MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
         *  IgnoreSelfObjectsT = IgnoreSelfObject;
         *  UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
         *  BestMovmentsT = BestMovment;
         *  PredictHuristicT = PredictHurist;
         *  OnlySelfT = OnlySel;
         *  AStarGreedyHuristicT = AStarGreedyHuris;
         *  ArrangmentsChanged = Arrangments;
         * }*/
        //Constructor 2.
        public DrawElefant(int CurrentAStarGredy, bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments, float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur//,ref AllDraw. THIS
                           )
        {
            lock (balanceLock)
            {
                if (E[0] == null && E[1] == null)
                {
                    E[0] = Image.FromFile(AllDraw.ImagesSubRoot + "EG.png");
                    E[1] = Image.FromFile(AllDraw.ImagesSubRoot + "EB.png");
                }



                CurrentAStarGredyMax = CurrentAStarGredy;
                MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
                IgnoreSelfObjectsT         = IgnoreSelfObject;
                UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
                BestMovmentsT        = BestMovment;
                PredictHuristicT     = PredictHurist;
                OnlySelfT            = OnlySel;
                AStarGreedyHuristicT = AStarGreedyHuris;
                ArrangmentsChanged   = Arrangments;
                //Initiate Global Variables By Local Parameters.
                Table = new int[8, 8];
                for (int ii = 0; ii < 8; ii++)
                {
                    for (int jj = 0; jj < 8; jj++)
                    {
                        Table[ii, jj] = Tab[ii, jj];
                    }
                }
                for (int ii = 0; ii < AllDraw.ElefantMovments; ii++)
                {
                    ElefantThinking[ii] = new ThinkingChess(CurrentAStarGredyMax, MovementsAStarGreedyHuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHuristicT, OnlySelfT, AStarGreedyHuristicT, ArrangmentsChanged, (int)i, (int)j, a, Tab, 16, Ord, TB, Cur, 4, 2);
                }

                Row     = i;
                Column  = j;
                color   = a;
                Order   = Ord;
                Current = Cur;
            }
        }
Пример #6
0
        //constructor 1.

        /*public DrawMinister(int CurrentAStarGredy, bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments)
         * {
         *  CurrentAStarGredyMax = CurrentAStarGredy;
         *  MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
         *  IgnoreSelfObjectsT = IgnoreSelfObject;
         *  UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
         *  BestMovmentsT = BestMovment;
         *  PredictHuristicT = PredictHurist;
         *  OnlySelfT = OnlySel;
         *  AStarGreedyHuristicT = AStarGreedyHuris;
         *  ArrangmentsChanged = Arrangments;
         * }
         */
        //Constructor 2.
        public DrawMinister(int CurrentAStarGredy, bool MovementsAStarGreedyHuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments, float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur//, ref AllDraw. THIS
                            )
        {
            //long Time = TimeElapced.TimeNow();Spaces++;
            object balancelock = new object();

            lock (balancelock)
            {
                CurrentAStarGredyMax = CurrentAStarGredy;
                MovementsAStarGreedyHuristicFoundT = MovementsAStarGreedyHuristicTFou;
                IgnoreSelfObjectsT         = IgnoreSelfObject;
                UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
                BestMovmentsT        = BestMovment;
                PredictHuristicT     = PredictHurist;
                OnlySelfT            = OnlySel;
                AStarGreedyHuristicT = AStarGreedyHuris;
                ArrangmentsChanged   = Arrangments;
                //Initiate Global Variables.
                Table = new int[8, 8];
                for (var ii = 0; ii < 8; ii++)
                {
                    for (var jj = 0; jj < 8; jj++)
                    {
                        Table[ii, jj] = Tab[ii, jj];
                    }
                }
                for (var ii = 0; ii < AllDraw.MinisterMovments; ii++)
                {
                    MinisterThinking[ii] = new ThinkingChess(ii, 5, CurrentAStarGredyMax, MovementsAStarGreedyHuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHuristicT, OnlySelfT, AStarGreedyHuristicT, ArrangmentsChanged, (int)i, (int)j, a, Tab, 32, Ord, TB, Cur, 2, 5);
                }

                Row     = i;
                Column  = j;
                color   = a;
                Current = Cur;
                Order   = Ord;
            }
            ////{ AllDraw.OutPut.Append("\r\n");for (int l = 0; l < Spaces; l++) AllDraw.OutPut.Append(Space);  AllDraw.OutPut.Append("DrawMinister:" + (TimeElapced.TimeNow() - Time).ToString());}Spaces--;
        }
Пример #7
0
 //Constructor 2.
 public DrawSoldier(float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur//, ref FormRefrigtz THIS
                    ) :
     base((int)i, (int)j, a, Tab, Ord, TB, Cur)
 {
     //Initiate Global Variables.
     Table = new int[8, 8];
     for (int ii = 0; ii < 8; ii++)
     {
         for (int jj = 0; jj < 8; jj++)
         {
             Table[ii, jj] = Tab[ii, jj];
         }
     }
     for (int ii = 0; ii < AllDraw.SodierMovments; ii++)
     {
         SoldierThinking[ii] = new ThinkingChess((int)i, (int)j, a, Tab, 4, Ord, TB, Cur, 16, 1);
     }
     RowS    = i;
     ColumnS = j;
     color   = a;
     Order   = Ord;
     Current = Cur;
 }
Пример #8
0
        //Constructor 2.
        public DrawMinister(float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur//, ref FormRefrigtz THIS
                            )
        {
            //Initiate Global Variables.
            Table = new int[8, 8];
            for (int ii = 0; ii < 8; ii++)
            {
                for (int jj = 0; jj < 8; jj++)
                {
                    Table[ii, jj] = Tab[ii, jj];
                }
            }
            for (int ii = 0; ii < AllDraw.MinisterMovments; ii++)
            {
                MinisterThinking[ii] = new ThinkingChess((int)i, (int)j, a, Tab, 32, Ord, TB, Cur, 2, 5);
            }

            Row     = i;
            Column  = j;
            color   = a;
            Current = Cur;
            Order   = Ord;
        }
Пример #9
0
        //constructor 2.
        public DrawBridge(float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur//, ref FormRefrigtz THIS
                          )
        {
            //Initiate Global Variable By Local Parmenter.
            Table = new int[8, 8];
            for (int ii = 0; ii < 8; ii++)
            {
                for (int jj = 0; jj < 8; jj++)
                {
                    Table[ii, jj] = Tab[ii, jj];
                }
            }
            for (int ii = 0; ii < AllDraw.BridgeMovments; ii++)
            {
                BridgeThinking[ii] = new ThinkingChess((int)i, (int)j, a, Tab, 16, Ord, TB, Cur, 4, 4);
            }

            Row     = i;
            Column  = j;
            color   = a;
            Order   = Ord;
            Current = Cur;
        }
Пример #10
0
        //Constructor 1.

        //constructor 2.
        public DrawCastle(int CurrentAStarGredy, bool MovementsAStarGreedyHeuristicTFou, bool IgnoreSelfObject, bool UsePenaltyRegardMechnisa, bool BestMovment, bool PredictHurist, bool OnlySel, bool AStarGreedyHuris, bool Arrangments, float i, float j, Color a, int[,] Tab, int Ord, bool TB, int Cur//, ref AllDraw. THIS
                          )
        {
            object balancelock = new object();

            lock (balancelock)
            {
                CurrentAStarGredyMax = CurrentAStarGredy;
                MovementsAStarGreedyHeuristicFoundT = MovementsAStarGreedyHeuristicTFou;
                IgnoreSelfObjectsT         = IgnoreSelfObject;
                UsePenaltyRegardMechnisamT = UsePenaltyRegardMechnisa;
                BestMovmentsT         = BestMovment;
                PredictHeuristicT     = PredictHurist;
                OnlySelfT             = OnlySel;
                AStarGreedyHeuristicT = AStarGreedyHuris;
                ArrangmentsChanged    = Arrangments;
                //Initiate Global Variable By Local Parmenter.
                Table = new int[8, 8];
                for (var ii = 0; ii < 8; ii++)
                {
                    for (var jj = 0; jj < 8; jj++)
                    {
                        Table[ii, jj] = Tab[ii, jj];
                    }
                }
                for (var ii = 0; ii < AllDraw.CastleMovments; ii++)
                {
                    CastleThinking[ii] = new ThinkingChess(ii, 4, CurrentAStarGredyMax, MovementsAStarGreedyHeuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHeuristicT, OnlySelfT, AStarGreedyHeuristicT, ArrangmentsChanged, (int)i, (int)j, a, CloneATable(Tab), 16, Ord, TB, Cur, 4, 4);
                }

                Row     = i;
                Column  = j;
                color   = a;
                Order   = Ord;
                Current = Cur;
            }
        }
Пример #11
0
        //Table Foundation of Genetic Alogorithm Method.
        public int[,] GenerateTable(List <int[, ]> List, int Index, int Order)
        {
            //Initiate Local Variables.
Begine5:
            RowColumn.Clear();
            int Store = Index;

            int[,] Cromosom1 = null;
            int[,] Cromosom2 = null;
            try
            {
                Cromosom1 = List[List.Count - 2];
                Cromosom2 = List[List.Count + MinusOne];
            }
            catch (IndexOutOfRangeException t)
            {
                Log(t);
                return(null);
            }

            Index = Store;
            //Found of Gen.
            if (!FindGenToModified(Cromosom1, Cromosom2, List, Index, Order, false))
            {
                goto EndFindAThing;
            }



            //Initiate Global Variables.
BeginFind:
            Color color = Color.Gray;

            if (Order == -1)
            {
                color = Color.Brown;
            }
            try
            {
                //If Cromosom Location is Not Founded.
                if (CromosomRow == -1 && CromosomColumn == -1)
                {
                    //Initiayte Local Variables.
                    List.RemoveAt(List.Count + MinusOne);
                    Index--;
                    goto Begine5;
                }
                //Found Kind Of Gen.
                Ki = List[List.Count + MinusOne][CromosomRow, CromosomColumn];
                //Initiate Local Variables.
                GeneticTable = new int[8, 8];
                //If Gen Kind Not Found Retrun Not Valididity.
                if (List[List.Count + MinusOne][CromosomRow, CromosomColumn] == 0)
                {
                    return(null);
                }
                else
                {
                    //Clone a Copy.
                    for (var ii = 0; ii < 8; ii++)
                    {
                        for (var jj = 0; jj < 8; jj++)
                        {
                            GeneticTable[ii, jj] = List[List.Count + MinusOne][ii, jj];
                        }
                    }
                }
                //Initiate Global and Local Variables.
                color = Color.Gray;
                if (Order == -1)
                {
                    color = Color.Brown;
                }
                //For All Gens.
                for (Gen1 = 0; Gen1 < 8; Gen1++)
                {
                    for (Gen2 = 0; Gen2 < 8; Gen2++)
                    {
                        //If Gen is Current Gen Location Continue Traversal Back.
                        if (Gen1 == CromosomRow && Gen2 == CromosomColumn)
                        {
                            continue;
                        }
                        //Rulement of Gen Movments.
                        if ((new ChessRules(0, MovementsAStarGreedyHeuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHeuristicT, OnlySelfT, AStarGreedyHeuristicT, ArrangmentsChanged, GeneticTable[CromosomRow, CromosomColumn], CloneATable(GeneticTable), Order, CromosomRow, CromosomColumn)).Rules(CromosomRow, CromosomColumn, Gen1,
                                                                                                                                                                                                                                                                                                                                             Gen2, color, GeneticTable[CromosomRow, CromosomColumn]))
                        {
                            //Initiate Global Variables and Syntax.
                            int[] A = new int[2];
                            A[0] = CromosomRow;
                            A[1] = CromosomColumn;
                            RowColumn.Add(A);



                            GeneticTable[Gen1, Gen2] = GeneticTable[CromosomRow, CromosomColumn];
                            GeneticTable[CromosomRow, CromosomColumn] = 0;
                            //Table Repeatative Consideration.
                            if (ThinkingChess.ExistTableInList(CloneATable(GeneticTable), List, 0))
                            {
                                GeneticTable[CromosomRow, CromosomColumn] = GeneticTable[Gen1, Gen2];
                                GeneticTable[Gen1, Gen2] = 0;
                                continue;
                            }
                            else
                            {
                                //Check Consideration.
                                if ((new ChessRules(0, MovementsAStarGreedyHeuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHeuristicT, OnlySelfT, AStarGreedyHeuristicT, ArrangmentsChanged, GeneticTable[CromosomRow, CromosomRow], CloneATable(GeneticTable), Order, CromosomRow, CromosomColumn)).Check(CloneATable(GeneticTable), Order))
                                {
                                    GeneticTable[CromosomRow, CromosomColumn] = GeneticTable[Gen1, Gen2];
                                    GeneticTable[Gen1, Gen2] = 0;
                                    continue;
                                }

                                else
                                {
                                    //Return Genetic Table.
                                    return(GeneticTable);
                                }
                            }
                        }
                    }
                }
                //Initiate Try Catch.
                GeneticTable = null;
                int a = GeneticTable[0, 0];
            }

            catch (NullReferenceException t)
            {
                //Try Catch Expetion Handling of Not Successful Foundation of Gen.
                Log(t);
                if (Order == 1)
                {
                    Ki = (new Random()).Next(1, 7);
                }
                else
                {
                    Ki = (new Random()).Next(1, 7) * -1;
                }

                if (Order == 1)
                {
                    int Count = 0;
                    do
                    {
                        if (Ki < 6)
                        {
                            Ki++;
                        }
                        else
                        {
                            Ki = 1;
                        }
                        Count++;
                    } while (Count < 6 && !(new ChessRules(0, MovementsAStarGreedyHeuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHeuristicT, OnlySelfT, AStarGreedyHeuristicT, ArrangmentsChanged, Ki, List[List.Count + MinusOne], Order, CromosomRow, CromosomColumn)).FindAThing(List[List.Count + MinusOne], ref CromosomRow, ref CromosomColumn, Ki, true, RowColumn));
                    if (Count >= 6)
                    {
                        NoGameFounf = true;
                        return(null);
                    }
                }
                else
                {
                    int Count = 0;
                    do
                    {
                        if (Ki > -6)
                        {
                            Ki--;
                        }
                        else
                        {
                            Ki = -1;
                        }
                        Count++;
                    } while (Count < 6 && !(new ChessRules(0, MovementsAStarGreedyHeuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHeuristicT, OnlySelfT, AStarGreedyHeuristicT, ArrangmentsChanged, Ki, List[List.Count + MinusOne], Order, CromosomRow, CromosomColumn)).FindAThing(List[List.Count + MinusOne], ref CromosomRow, ref CromosomColumn, Ki, true, RowColumn));
                    if (Count >= 6)
                    {
                        NoGameFounf = true;
                        return(null);
                    }
                }

                goto BeginFind;
            }

EndFindAThing:
            //Foudn of Some Samness Gen.
            if (Order == 1)
            {
                Ki = (new Random()).Next(1, 7);
            }
            else
            {
                Ki = (new Random()).Next(1, 7) * -1;
            }
            if (Order == 1)
            {
                int Count = 0;
                do
                {
                    if (Ki < 6)
                    {
                        Ki++;
                    }
                    else
                    {
                        Ki = 1;
                    }
                    Count++;
                } while (Count < 6 && !(new ChessRules(0, MovementsAStarGreedyHeuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHeuristicT, OnlySelfT, AStarGreedyHeuristicT, ArrangmentsChanged, Ki, List[List.Count + MinusOne], Order, CromosomRow, CromosomColumn)).FindAThing(List[List.Count + MinusOne], ref CromosomRow, ref CromosomColumn, Ki, true, RowColumn));
                if (Count >= 6)
                {
                    return(null);
                }
            }
            else
            {
                int Count = 0;
                do
                {
                    if (Ki > -6)
                    {
                        Ki--;
                    }
                    else
                    {
                        Ki = -1;
                    }
                    Count++;
                } while (Count < 6 && !(new ChessRules(0, MovementsAStarGreedyHeuristicFoundT, IgnoreSelfObjectsT, UsePenaltyRegardMechnisamT, BestMovmentsT, PredictHeuristicT, OnlySelfT, AStarGreedyHeuristicT, ArrangmentsChanged, Ki, List[List.Count + MinusOne], Order, CromosomRow, CromosomColumn)).FindAThing(List[List.Count + MinusOne], ref CromosomRow, ref CromosomColumn, Ki, true, RowColumn));
                if (Count >= 6)
                {
                    return(null);
                }
            }

            goto BeginFind;
        }