コード例 #1
0
        void GenerateInitialPaths(DNANode n)
        {
            int totalMoves = 0;

            while (!(n.x <= 0 || n.y <= 0 || n.x >= boardSize - 1 || n.y >= boardSize - 1))
            {
                if (n.isStuck)
                {
                    break;
                }

                n.AddNewPath(rand.Next(availableMoves));
                totalMoves++;

                //Obstacle Logic
                foreach (Obstacle ob in obstacles)
                {
                    for (int k = 0; k < nodes.Count; k++)
                    {
                        if (!nodes[k].isStuck)
                        {
                            if (NeighboringObstacle(nodes[k], ob))
                            {
                                nodes[k].isStuck = true;
                            }
                        }
                    }
                }

                //this.Invalidate();
                //this.Update();
                //this.Refresh();

                //System.Threading.Thread.Sleep(20);

                //if (totalMoves >= boardSize * 5)
                //    break;
            }

            nodes[0].fittest = false;

            for (int i = 0; i < nodeCount; i++)
            {
                nodes[i].distance       = Distance(nodes[i].x, objX, nodes[i].y, objY);
                nodes[i].functionalCost = nodes[i].distance / nodes[i].posPath.Count;
                nodes[i].isStuck        = false;
            }
        }