static async Task Main(string[] args) { var world = new CaveWorld(new List <Position> { new Position(0, 3) }, new List <Position> { new Position(3, 0), new Position(3, 2), new Position(3, 3) }, new Position(2, 2)); await Simulate(world, TimeSpan.FromMilliseconds(250)); // await Simulate(world, TimeSpan.FromSeconds(1)); }
static async Task Simulate(CaveWorld world, TimeSpan delay) { PrintMap(world); await Task.Delay(delay); var startPos = new Position(0, 0); while (true) { world.Iterate(); PrintMap(world); if (world.MrCat.FoundGold && world.MrCat.CurrentPosition.Equals(startPos)) { break; } await Task.Delay(delay); } Console.WriteLine("Level completed - Mr. Cat is home with the gold"); }
static void PrintMap(CaveWorld world) { Console.Clear(); Console.CursorTop = 0; Console.WriteLine("╔════╗"); for (int y = world.WorldHeight - 1; y >= 0; y--) { Console.Write('║'); for (int x = 0; x < world.WorldWidth; x++) { var pos = new Position(x, y); if (world.MrCat.CurrentPosition.Equals(pos)) { Console.Write('A'); } else if (world.WumpusAt(pos)) { Console.Write('W'); } else if (world.PitAt(pos)) { Console.Write('O'); } else if (world.GoldAt(pos) && !world.MrCat.FoundGold) { Console.Write('G'); } else { Console.Write(' '); } } Console.Write('║'); Console.WriteLine(); } Console.WriteLine("╚════╝"); }