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); }