private void очиститьВсёToolStripMenuItem_Click(object sender, EventArgs e) { labyrinth = new Labyrinth(); graph = new Graph(); is_start = false; is_end = false; moving_picture = false; number_moving_wall = -1; first_second_dot_in_wall = -1; way_from_start_to_end = null; list_step_by_step = null; height = pictureBox1.Height - 1; width = pictureBox1.Width - 1; x_center = pictureBox1.Width / 2; y_center = pictureBox1.Height / 2; coef_center_x = x_center / pictureBox1.Width; coef_center_y = y_center / pictureBox1.Height; coef_center_x = 0.5; coef_center_y = 0.5; coef_lab = 1.0; pictureBox1.Refresh(); }
private void search_way() { way_from_start_to_end = null; if (labyrinth.Walls.Count == 0) { MessageBox.Show("Сначала откройте файл !", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { if (!is_start || !is_end) { MessageBox.Show("Выберите начальную и конечную точку !", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { graph = new Graph(labyrinth.Walls, labyrinth.Start_dot, labyrinth.End_dot); graph.Floyd_algorithm(); if (graph.Matrix_graph[0, graph.Points.Count - 1] != 1000000000.0) { way_from_start_to_end = new List<Point>(); way_from_start_to_end.Add(labyrinth.Start_dot); way_from_start_to_end.Add(graph.Points[graph.Ways[0, graph.Points.Count - 1][0]]); for (int i = 1; i < graph.Ways[0, graph.Points.Count - 1].Count; i++) { way_from_start_to_end.Add(graph.Points[graph.Ways[0, graph.Points.Count - 1][i]]); } way_from_start_to_end.Add(graph.Points[graph.Points.Count - 1]); } else { MessageBox.Show("Пути от заданной начальной точки до конечной не существует !", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }