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; } }