static void Main() { var board = new ChessBoard(); var factory = new PieceFactory(board); for (int i = 0; i < ChessBoard.FieldSize; ++i) { string line = Console.ReadLine(); for (int j = 0; j < ChessBoard.FieldSize; ++j) { if (line == null) { throw new NullReferenceException(); } board.Add(factory.NewPiece(j, i, line[j])); } } int status = board.GetStatus(); switch (status) { case ChessBoard.Ok: Console.WriteLine("ok"); break; case ChessBoard.Check: Console.WriteLine("check"); break; case ChessBoard.Mate: Console.WriteLine("mate"); break; case ChessBoard.Stalemate: Console.WriteLine("stalemate"); break; default: throw new Exception("unknown state"); } }