示例#1
0
 public void OnStartGraph(NewGraph Graph)
 {
     if (StartGraph != null)
     {
         StartGraph(Graph);
     }
 }
示例#2
0
文件: Race.cs 项目: btastic/StratSim
 /// <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();
 }
示例#3
0
        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);
        }
示例#4
0
文件: Race.cs 项目: btastic/StratSim
        /// <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;
        }
示例#5
0
        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();
 }
示例#7
0
        public void RunTest()
        {
            var g = new NewGraph <IndexVertex, DefaultEdge, IndexGraphFactory>();

            this.TestNewGraph(g);
        }