From c267232a5391197ee6f860ead54c2fa4e6f2d0f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20LAVERGNE?= Date: Fri, 17 May 2024 22:45:06 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Ajout=20des=20=C3=A9v=C3=A9nements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Trek-12/Models/Events/GameEndedEventArgs.cs | 14 ++++++++++++++ source/Trek-12/Models/Game/Game.cs | 15 +++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 source/Trek-12/Models/Events/GameEndedEventArgs.cs diff --git a/source/Trek-12/Models/Events/GameEndedEventArgs.cs b/source/Trek-12/Models/Events/GameEndedEventArgs.cs new file mode 100644 index 0000000..e0bcb97 --- /dev/null +++ b/source/Trek-12/Models/Events/GameEndedEventArgs.cs @@ -0,0 +1,14 @@ +using Models.Game; +namespace Models.Events; + +public class GameEndedEventArgs +{ + public Player Player { get; } + public Map Map { get; } + + public GameEndedEventArgs(Player player, Map map) + { + Player = player; + Map = map; + } +} \ No newline at end of file diff --git a/source/Trek-12/Models/Game/Game.cs b/source/Trek-12/Models/Game/Game.cs index b154e77..813b5d1 100644 --- a/source/Trek-12/Models/Game/Game.cs +++ b/source/Trek-12/Models/Game/Game.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Dynamic; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -22,9 +23,19 @@ namespace Models.Game private Rules.Rules GameRules { get; } // == Events == - public event GameStartedEventArgs OnGameStarted; - + public event EventHandler OnGameStarted; + protected virtual void GameStarted(GameStartedEventArgs e) + { + OnGameStarted?.Invoke(this, e); + } + + public event EventHandler OnGameEnded; + protected virtual void GameStarted(GameEndedEventArgs e) + { + OnGameEnded?.Invoke(this, e); + } + public Game(Player player, Map map) { UsedMap = map; From de58794309606aa08c5624ca8e23c68dfd7b6973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20LAVERGNE?= Date: Fri, 17 May 2024 23:51:23 +0200 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9E=95=20Cr=C3=A9ation=20de=20la=20boucl?= =?UTF-8?q?e=20de=20jeu=20et=20correction=20des=20=C3=A9v=C3=A9nements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/Events/GameEndedEventArgs.cs | 14 ------- .../Models/Events/GameStartedEventArgs.cs | 18 ++++++--- source/Trek-12/Models/Game/Game.cs | 38 +++++++++++++------ 3 files changed, 40 insertions(+), 30 deletions(-) delete mode 100644 source/Trek-12/Models/Events/GameEndedEventArgs.cs diff --git a/source/Trek-12/Models/Events/GameEndedEventArgs.cs b/source/Trek-12/Models/Events/GameEndedEventArgs.cs deleted file mode 100644 index e0bcb97..0000000 --- a/source/Trek-12/Models/Events/GameEndedEventArgs.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Models.Game; -namespace Models.Events; - -public class GameEndedEventArgs -{ - public Player Player { get; } - public Map Map { get; } - - public GameEndedEventArgs(Player player, Map map) - { - Player = player; - Map = map; - } -} \ No newline at end of file diff --git a/source/Trek-12/Models/Events/GameStartedEventArgs.cs b/source/Trek-12/Models/Events/GameStartedEventArgs.cs index 45cf88b..4006df9 100644 --- a/source/Trek-12/Models/Events/GameStartedEventArgs.cs +++ b/source/Trek-12/Models/Events/GameStartedEventArgs.cs @@ -3,12 +3,20 @@ namespace Models.Events; public class GameStartedEventArgs : EventArgs { - public Player Player { get; } - public Map Map { get; } + public Player CurrentPlayer { get; } - public GameStartedEventArgs(Player player, Map map) + public GameStartedEventArgs(Player selectedPlayer) { - Player = player; - Map = map; + CurrentPlayer = selectedPlayer; + } +} + +public class GameEndedEventArgs : EventArgs +{ + public Player CurrentPlayer { get; } + + public GameEndedEventArgs(Player winner) + { + CurrentPlayer = winner; } } \ No newline at end of file diff --git a/source/Trek-12/Models/Game/Game.cs b/source/Trek-12/Models/Game/Game.cs index 813b5d1..39d242f 100644 --- a/source/Trek-12/Models/Game/Game.cs +++ b/source/Trek-12/Models/Game/Game.cs @@ -11,6 +11,7 @@ namespace Models.Game { public class Game { + private bool _isRunning; public Player CurrentPlayer { get; private set; } public Map UsedMap { get; private set; } @@ -23,21 +24,13 @@ namespace Models.Game private Rules.Rules GameRules { get; } // == Events == - public event EventHandler OnGameStarted; - protected virtual void GameStarted(GameStartedEventArgs e) - { - OnGameStarted?.Invoke(this, e); - } - - public event EventHandler OnGameEnded; - protected virtual void GameStarted(GameEndedEventArgs e) - { - OnGameEnded?.Invoke(this, e); - } + public event EventHandler GameStarted; + public event EventHandler GameEnded; public Game(Player player, Map map) { + _isRunning = false; UsedMap = map; CurrentPlayer = player; Dice1 = new Dice(); @@ -89,6 +82,29 @@ namespace Models.Game if (GameRules.IsRopePath(cell, ropePaths)) return; } + + public void InitializeGame() + { + _isRunning = true; + GameStarted?.Invoke(this, new GameStartedEventArgs(CurrentPlayer)); + GameLoop(); + } + + private async void GameLoop() + { + while (_isRunning) + { + + if (CheckGameEnd()) //TODO Règle pour check si fin de jeu + { + _isRunning = false; + //TODO Code pour comptabiliser les points + GameEnded?.Invoke(this, new GameEndedEventArgs(//player)); + } + + await Task.Delay(1000); // 1 seconde + } + } } }