private static void Print(this Session session, bool onlyLast) { // Print Header Console.Write(" | "); foreach (var player in session.CurrentPlayers) { Console.Write("{0} | ", player.Name); } Console.WriteLine("| Spiel | Bock |"); // Print points Points point = new Points(session.CurrentPlayers); Game game; // Loop through games for (int i = 0; i < session.GameHistory.Count; i++) { game = session.GameHistory[i]; point.AddGame(game); if (!onlyLast || (i == session.GameHistory.Count - 1)) { Console.Write(" | "); // Loop through players foreach (var player in session.CurrentPlayers) { String format = String.Format("{{0,{0}}}", player.Name.Length); // Print score only if player is active player if (player.IsIn(game.Players)) { var playerPoint = point.GamePoints[player]; // Print only last games score (including Bock, that's why we are still iterating) Console.Write(format + " | ", onlyLast? playerPoint.Item1 : playerPoint.Item2); } else { Console.Write(format + " | ", "-"); } } Console.WriteLine("| {0,5} | {1,4} |", point.LastValue, point.BockCounter); } } }