diff --git a/source/Trek-12/ConsoleApp/Program.cs b/source/Trek-12/ConsoleApp/Program.cs index 828b022..cb57385 100644 --- a/source/Trek-12/ConsoleApp/Program.cs +++ b/source/Trek-12/ConsoleApp/Program.cs @@ -55,6 +55,7 @@ class Program static void OnGameEnded(object sender, GameEndedEventArgs e) { Console.WriteLine($"The game has ended! Player: {e.CurrentPlayer.Pseudo}"); + Console.WriteLine($"Points: {e.Point}"); } /// diff --git a/source/Trek-12/Models/Events/GameEndedEventArgs.cs b/source/Trek-12/Models/Events/GameEndedEventArgs.cs index 7148eeb..fd6ce0c 100644 --- a/source/Trek-12/Models/Events/GameEndedEventArgs.cs +++ b/source/Trek-12/Models/Events/GameEndedEventArgs.cs @@ -9,9 +9,12 @@ namespace Models.Events { public Player CurrentPlayer { get; } - public GameEndedEventArgs(Player winner) + public int? Point { get; } + + public GameEndedEventArgs(Player winner, int? point) { CurrentPlayer = winner; + Point = point; } } } diff --git a/source/Trek-12/Models/Game/Game.cs b/source/Trek-12/Models/Game/Game.cs index a9b9d10..43aa92b 100644 --- a/source/Trek-12/Models/Game/Game.cs +++ b/source/Trek-12/Models/Game/Game.cs @@ -189,10 +189,10 @@ namespace Models.Game /// /// Ends the game. /// - private void EndGame() + private void EndGame(int? pts) { _isRunning = false; - GameEnded?.Invoke(this, new GameEndedEventArgs(CurrentPlayer)); + GameEnded?.Invoke(this, new GameEndedEventArgs(CurrentPlayer, pts)); } /// @@ -204,7 +204,17 @@ namespace Models.Game { if (Turn == 20) { - EndGame(); + foreach(var cells in UsedMap.Boards) + { + GameRules.IsZoneValidAndAddToZones(cells, UsedMap); + AddToRopePath(cells, GameRules.EveryAdjacentCells(cells, UsedMap.Boards)); + } + int? points = GameRules.FinalCalculusOfZones(UsedMap.Zones); + for (int i = 0; i < UsedMap.RopePaths.Count; i++) + { + points += GameRules.ScoreRopePaths(UsedMap.RopePaths[i]); + } + EndGame(points); break; } diff --git a/source/Trek-12/Models/Rules/Rules.cs b/source/Trek-12/Models/Rules/Rules.cs index a3ae541..bd8c8cf 100644 --- a/source/Trek-12/Models/Rules/Rules.cs +++ b/source/Trek-12/Models/Rules/Rules.cs @@ -236,5 +236,22 @@ namespace Models.Rules return calculus; } + public int? ScoreRopePaths(List paths) + { + int? score = 0; + IEnumerable sortPaths = + from cell in paths + orderby cell.Value descending + select cell; + foreach (var item in sortPaths) + { + if (score == 0) + score += item.Value; + else + score++; + } + return score; + } + } } \ No newline at end of file