public void TestPlayerKeyPickup() { var gameModel = new GameModel(); var labyrinth = new LabyrinthModel(new[, ] { { LabyrinthModel.LabyrinthElements.Cell, LabyrinthModel.LabyrinthElements.Cell } }, new Point(0, 0)); labyrinth.PortalPositions = new List <Point>(); labyrinth.ExitPosition = new Point(-1, 0); labyrinth.KeyPosition = new Point(1, 0); gameModel.StartGame(labyrinth); Assert.False(gameModel.Player.HasKey); gameModel.KeyDown(Keys.Right); var expectedPoint = new Point(1, 0); var actualPoint = new Point(gameModel.Player.X, gameModel.Player.Y); Assert.True(gameModel.Player.HasKey); Assert.AreEqual(expectedPoint, actualPoint); }
public List <Point> ProccessLabyrinth(LabyrinthModel model) { var startPoint = model.Elements.FirstOrDefault(e => e.Type == ElementType.Start); var proccessedElements = new List <LabyrinthElement>(); ProcessLabyrinth(startPoint, proccessedElements, model.Elements); var startElement = proccessedElements.FirstOrDefault(e => e.Type == ElementType.Start); var finishElement = proccessedElements.FirstOrDefault(e => e.Type == ElementType.Finish); var chains = new List <LabyrinthElementChain>(); SearchPathToProccessedElement(startElement, finishElement.Point, null, chains); var chainElements = GetChainElements(chains.FirstOrDefault()); chainElements.Reverse(); var result = chainElements.Select(e => e.Point).ToList(); return(result); }
public void DrawLabyrinth(LabyrinthModel model) { foreach (var element in model.Elements) { DrawElement(element); } }
public void TestDisarming() { var gameModel = new GameModel(); var labyrinth = new LabyrinthModel(new[, ] { { LabyrinthModel.LabyrinthElements.Cell, LabyrinthModel.LabyrinthElements.Cell, LabyrinthModel.LabyrinthElements.Cell } }, new Point(0, 0)); labyrinth.PortalPositions = new List <Point> { new Point(1, 0) }; labyrinth.TeleportPoints = new List <Point> { new Point(2, 0) }; labyrinth.ExitPosition = new Point(-1, 0); labyrinth.KeyPosition = new Point(-1, 0); labyrinth.GlassesPosition = new Point(1, 0); gameModel.StartGame(labyrinth); Assert.False(gameModel.Player.IsDisarming); gameModel.KeyDown(Keys.Space); Assert.True(gameModel.Player.IsDisarming); }
public ActionResult Index() { var labModel = new LabyrinthModel { Map = new int[0, 0], Path = new ArrayList() }; return(View(labModel)); }
public void TestWinCondition() { var gameModel = new GameModel(); var labyrinth = new LabyrinthModel(new[, ] { { LabyrinthModel.LabyrinthElements.Cell, LabyrinthModel.LabyrinthElements.Cell, LabyrinthModel.LabyrinthElements.Cell } }, new Point(0, 0)); labyrinth.PortalPositions = new List <Point>(); labyrinth.ExitPosition = new Point(2, 0); labyrinth.KeyPosition = new Point(1, 0); labyrinth.GlassesPosition = new Point(-1, 0); gameModel.StartGame(labyrinth); Assert.False(gameModel.GameState == GameState.GameWon); gameModel.KeyDown(Keys.Right); gameModel.KeyDown(Keys.Right); Assert.True(gameModel.GameState == GameState.GameWon); }
public ActionResult Index(LabyrinthModel myLabyrinthModel) { if (Request.Files.Count > 0) { var file = Request.Files[0]; if (file != null && file.ContentLength > 0) { fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/Content/"), fileName); file.SaveAs(path); } } var l = new Labyrinth.Labyrinth(Server.MapPath("~/Content/" + fileName)); myLabyrinthModel.Map = (int [, ])l.Map.Clone(); myLabyrinthModel.StartPointX--; myLabyrinthModel.StartPointY--; myLabyrinthModel.FinishPointX--; myLabyrinthModel.FinishPointY--; l.SetBlockType(myLabyrinthModel.StartPointX, myLabyrinthModel.StartPointY, 1); l.SetBlockType(myLabyrinthModel.FinishPointX, myLabyrinthModel.FinishPointY, 2); if (l.Find()) { myLabyrinthModel.Path = l.Path; ViewBag.path = "Маршрут: " + l.PathAsText; } else { myLabyrinthModel.Path = new ArrayList(); ViewBag.path = "Маршрут: Путь не найден"; } return(View(myLabyrinthModel)); }
public static LabyrinthModel ParseLabyrinthFile() { var location = new Uri(Assembly.GetEntryAssembly().GetName().CodeBase); var directory = new FileInfo(location.AbsolutePath).Directory.FullName; var filePath = $"{directory}\\{AppSettings.Default.LabyrinthFileName}"; if (!File.Exists(filePath)) { throw new Exception("File not exists."); } var linesList = File.ReadAllLines(filePath).Reverse().ToList(); var model = new LabyrinthModel(); short lineNumber = 0; foreach (var line in linesList) { short charNumber = 0; foreach (var character in line) { var element = new LabyrinthElement { Point = new Point(charNumber, lineNumber) }; switch (character) { case ' ': element.Type = ElementType.Empty; break; case 'S': element.Type = ElementType.Start; break; case 'F': element.Type = ElementType.Finish; break; case '#': element.Type = ElementType.Wall; break; default: throw new Exception($"Input file contains unexpected character '{character}'"); } model.Elements.Add(element); charNumber++; } lineNumber++; } var startPoint = model.Elements.FirstOrDefault(e => e.Type == ElementType.Start); if (startPoint == null) { throw new Exception("Start point not exists in input file."); } var finishPoint = model.Elements.FirstOrDefault(e => e.Type == ElementType.Finish); if (finishPoint == null) { throw new Exception("Finish point not exists in input file."); } return(model); }
public void SetUp() { labyrinthModel = new LabyrinthGenerator().CreateLabyrinth(Width, Height, PortalsCount); }