Exemplo n.º 1
0
        private void StartInteraction(IGameField field)
        {
            string readBuffer = null;
            int blownMines = 0;

            while (field.ContainsMines())
            {
                try
                {
                    field.DrawField();
                    Console.Write(GameMessage.CoordinatesPrompt);
                    readBuffer = Console.ReadLine();
                    Mine mineToBlow = GameServices.ExtractMineFromString(readBuffer);

                    while (mineToBlow == null)
                    {
                        Console.Write(GameMessage.CoordinatesPrompt);
                        readBuffer = Console.ReadLine();
                        mineToBlow = GameServices.ExtractMineFromString(readBuffer);
                    }

                    bool isValidMove = GameServices.IsValidMove(field.Field, mineToBlow.X, mineToBlow.Y);
                    if (!isValidMove)
                    {
                        Console.WriteLine(GameMessage.InvalidMove);
                        continue;
                    }

                    Explosion.Explode(field.Field, mineToBlow);
                    blownMines++;
                }
                catch (InvalidMineCoordinatesException)
                {
                    Console.WriteLine(GameMessage.InvalidIndex);
                    continue;
                }

            }

            field.DrawField();
            Console.WriteLine("{0} {1}", GameMessage.GameOverMessage, blownMines);
        }