public void Step(Labirint lab, Direction direction) { switch (direction) { case Direction.Up: { var currCell = lab[_hero.X, _hero.Y - 1]; TryToStepInCurrentCell(lab, currCell); break; } case Direction.Down: { var currCell = lab[_hero.X, _hero.Y + 1]; TryToStepInCurrentCell(lab, currCell); break; } case Direction.Left: { var currCell = lab[_hero.X - 1, _hero.Y]; TryToStepInCurrentCell(lab, currCell); break; } case Direction.Right: { var currCell = lab[_hero.X + 1, _hero.Y]; TryToStepInCurrentCell(lab, currCell); break; } } }
public void StartGame() { generator = new LabGenerator(20, 15); lab = generator.GetLabirint(); ConsoleKeyInfo key; hero = Hero.GetHero; while (true) { Drawer.Draw(lab); CheckOnAnyCoins(); key = Console.ReadKey(); switch (key.Key) { case ConsoleKey.W: case ConsoleKey.UpArrow: { hero.Step(lab, Direction.Up); break; } case ConsoleKey.D: case ConsoleKey.RightArrow: { hero.Step(lab, Direction.Right); break; } case ConsoleKey.S: case ConsoleKey.DownArrow: { hero.Step(lab, Direction.Down); break; } case ConsoleKey.A: case ConsoleKey.LeftArrow: { hero.Step(lab, Direction.Left); break; } case ConsoleKey.R: { StartNewGame(); break; } case ConsoleKey.Escape: { return; } default: break; } } }
private void TryToStepInCurrentCell(Labirint lab, BaseConsoleCell currCell) { if (currCell != null && currCell.TryToStep) { if (currCell is Coin) { lab.Cells = lab.Cells.Select(cell => cell.X == currCell.X && cell.Y == currCell.Y ? new Ground(currCell.X, currCell.Y) : cell).ToList(); } _hero.X = currCell.X; _hero.Y = currCell.Y; } }
public Labirint GetLabirint() { if (labirint != null) { labirint = new Labirint(labirint.Width, labirint.Height); GetReadyLabirint(labirint.Cells.First()); } CreateCoins(); return(labirint); }
public static void Draw(Labirint labirint) { Console.Clear(); var hero = Hero.GetHero; for (int i = 0; i < labirint.Width + 2; i++) { WriteSide(); } Console.WriteLine(); for (int y = 0; y < labirint.Height; y++) { WriteSide(); for (int x = 0; x < labirint.Width; x++) { var currentCell = labirint[x, y]; if (hero.X == currentCell.X && hero.Y == currentCell.Y) { hero.Write(); } else { currentCell.Write(); } } WriteSide(); Console.WriteLine(); } for (int i = 0; i < labirint.Width + 2; i++) { WriteSide(); } Console.WriteLine(); Console.WriteLine("Left to collect coin:" + labirint.Cells.OfType <Coin>().Count()); }
private void StartNewGame() { lab = generator.GetLabirint(); hero.X = 0; hero.Y = 0; }
public LabGenerator(int _width, int _height) { labirint = new Labirint(_width, _height); }