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("╚════╝");
 }