private void panel1_Paint(object sender, PaintEventArgs e) { if (lg == null) { return; } GraphicsPath GP = new GraphicsPath(); e.Graphics.FillRectangle(b, 0, 0, lg.w * cellWidth, lg.h * cellWidth); if (selectedCell != null) { e.Graphics.FillRectangle(selCellBr, selectedCell.GetC() * cellWidth + lineWidth , selectedCell.GetR() * cellWidth + lineWidth, cellWidth - lineWidth * 2, cellWidth - lineWidth * 2); } if (finCell != null) { e.Graphics.FillRectangle(finCellBr, finCell.GetC() * cellWidth + lineWidth , finCell.GetR() * cellWidth + lineWidth, cellWidth - lineWidth * 2, cellWidth - lineWidth * 2); } for (int i = 0; i < lg.h; i++) { for (int j = 0; j < lg.w; j++) { GP.StartFigure(); if (!EmumMedods.HasFlag(lg.map[i][j], CellOptions.EXIT_NORTH)) { GP.AddLine(j * cellWidth, i * cellWidth, (j + 1) * cellWidth, i * cellWidth); } GP.StartFigure(); if (!EmumMedods.HasFlag(lg.map[i][j], CellOptions.EXIT_EAST)) { GP.AddLine((j + 1) * cellWidth, i * cellWidth, (j + 1) * cellWidth, (i + 1) * cellWidth); } GP.StartFigure(); if (!EmumMedods.HasFlag(lg.map[i][j], CellOptions.EXIT_SOUTH)) { GP.AddLine((j + 1) * cellWidth, (i + 1) * cellWidth, j * cellWidth, (i + 1) * cellWidth); } GP.StartFigure(); if (!EmumMedods.HasFlag(lg.map[i][j], CellOptions.EXIT_WEST)) { GP.AddLine(j * cellWidth, i * cellWidth, j * cellWidth, (i + 1) * cellWidth); } } } e.Graphics.DrawPath(p, GP); if (selectedCell != null && finCell != null) { DrawWay(e); } }
public static int[][] Converct(LabGen lg) { int[][] mass; int n = lg.h * lg.w; Rcv rcv = new Rcv(lg.w); Rcv rcv2 = new Rcv(lg.w); mass = new int[n][]; for (int i = 0; i < n; i++) { mass[i] = new int[n]; for (int j = 0; j < n; j++) { if (i != j) { mass[i][j] = int.MaxValue; } else { mass[i][j] = 0; // каждый связан с самим собой } } } for (int i = 0; i < n; i++) { rcv.Val = i; for (int j = 0; j < n; j++) { if (EmumMedods.HasFlag(lg.map[rcv.Row][rcv.Col], CellOptions.EXIT_NORTH) && LabGen.InMazeBorders(rcv.Row - 1, rcv.Col, lg.h, lg.w)) { rcv2.SetRC(rcv.Row - 1, rcv.Col); mass[i][rcv2.Val] = 1; } if (EmumMedods.HasFlag(lg.map[rcv.Row][rcv.Col], CellOptions.EXIT_SOUTH) && LabGen.InMazeBorders(rcv.Row + 1, rcv.Col, lg.h, lg.w)) { rcv2.SetRC(rcv.Row + 1, rcv.Col); mass[i][rcv2.Val] = 1; } if (EmumMedods.HasFlag(lg.map[rcv.Row][rcv.Col], CellOptions.EXIT_EAST) && LabGen.InMazeBorders(rcv.Row, rcv.Col + 1, lg.h, lg.w)) { rcv2.SetRC(rcv.Row, rcv.Col + 1); mass[i][rcv2.Val] = 1; } if (EmumMedods.HasFlag(lg.map[rcv.Row][rcv.Col], CellOptions.EXIT_WEST) && LabGen.InMazeBorders(rcv.Row, rcv.Col - 1, lg.h, lg.w)) { rcv2.SetRC(rcv.Row, rcv.Col - 1); mass[i][rcv2.Val] = 1; } } } return(mass); }