public void OnStartGraph(NewGraph Graph) { if (StartGraph != null) { StartGraph(Graph); } }
/// <summary> /// Restarts the race simulation when paramters have been changed /// </summary> /// <param name="graph">The new graph which is output when the race simulation has been completed</param> /// <param name="strategies">The list of strategies to be used in the race simulation</param> public void RestartSimulation(out NewGraph graph, RaceStrategy[] strategies) { ResetParameters(strategies); //raceGraph.SetRaceLaps(laps); raceGraph.GraphPanel.SetupAxes(laps, 0.05, 100, 0.5); graph = this.raceGraph; forcedOvertake = Functions.InitialiseArrayAtValue <bool>(Data.NumberOfDrivers, laps, false); SetupGrid(); SimulateRace(); }
public static NewGraph ParseNewGraph(string fileName) { NewGraph graph = new NewGraph(); var lines = File.ReadAllLines(fileName); foreach (var line in lines) { if (line.StartsWith("e", StringComparison.Ordinal)) { var vertices = line.Split(' ').Skip(1).Select(int.Parse); graph.CreateEdge(vertices.First(), vertices.Last()); } } return(graph); }
/// <summary> /// Sets up a race and updates the graph displayed on screen /// </summary> /// <param name="TrackIndex">The index of the track on which the race is taking place</param> /// <param name="Strategies">The list of strategies representing drivers who are to take part in the race</param> /// <param name="AssociatedForm">The form on which the graph is to be displayed</param> public Race(int TrackIndex, RaceStrategy[] Strategies, MainForm AssociatedForm) { trackIndex = TrackIndex; laps = Data.Tracks[trackIndex].laps; originalStrategies = (RaceStrategy[])Strategies.Clone(); raceStrategies = (RaceStrategy[])Strategies.Clone(); positions = new racePosition[Data.NumberOfDrivers, laps]; forcedOvertake = Functions.InitialiseArrayAtValue <bool>(Data.NumberOfDrivers, laps, false); raceGraph = new NewGraph("Race Graph", AssociatedForm, Properties.Resources.Graph); raceGraph.GraphPanel.GraphClicked += GraphPanel_GraphClicked; ((StratSimPanelControlEvents)AssociatedForm.IOController.PanelControlEvents).OnStartGraph(raceGraph); MyEvents.SettingsModified += MyEvents_SettingsModified; }
protected void TestNewGraph(NewGraph <IndexVertex, DefaultEdge, IndexGraphFactory> graph) { foreach (var e in Enumerable.Range(0, 20)) { graph.Add(graph.Factory.CreateVertex()); } var nodes = graph.Vertices.OrderBy(v => v.index).ToList(); var e01 = graph.AddEdge(nodes[0], nodes[1]); var e02 = graph.Factory.CreateEdge(nodes[3], nodes[4]); var e56 = graph.AddEdge(nodes[5], nodes[6]); graph.AddEdge(nodes[5], nodes[7]); graph.AddEdge(nodes[5], nodes[8]); graph.AddEdge(nodes[5], nodes[5]); graph.AddEdge(nodes[5], nodes[1]); graph.AddEdge(nodes[5], nodes[11], true); graph.AddEdge(nodes[1], nodes[15]); LogTool.AssertIsTrue(graph.Contains(e01)); LogTool.AssertIsFalse(graph.Contains(e02)); LogTool.AssertIsTrue(e56 == graph.GetEdge(nodes[5], nodes[6])); LogTool.AssertIsTrue(e56 == graph.GetEdge(nodes[6], nodes[5])); LogTool.AssertIsFalse(e56 == graph.GetEdge(nodes[5], nodes[5])); foreach (var e in graph.Edges) { LogTool.Log(e.ToString()); } LogTool.Log("Neighbor 5"); foreach (var e in graph.GetNeighborVertices(nodes[5])) { LogTool.Log(e.ToString()); } }
public void StartGraph(NewGraph graph) { Program.AxesWindow = new AxesWindow(base.AssociatedForm); Program.Graph = graph; LinkGraphToDrivers(); }
public void RunTest() { var g = new NewGraph <IndexVertex, DefaultEdge, IndexGraphFactory>(); this.TestNewGraph(g); }