From 8092190f3c00657fd8cfdd72d95dde260110c62f Mon Sep 17 00:00:00 2001 From: cldupland Date: Thu, 7 Nov 2019 16:07:33 +0100 Subject: [PATCH] Debut de la reconstruction du model --- TheGameExtreme/TheGameExtreme.csproj | 3 + TheGameExtreme/model/GameMode.cs | 92 -------------- .../model/gameActions/GameAction.cs | 10 ++ .../model/gameActions/classic/GameMode.cs | 115 ++++++++++++++++++ .../gameActions/classic/JouerUneCarte.cs | 15 +++ .../model/gameActions/classic/Piocher.cs | 20 +++ .../gameActions/classic/TerminerSonTour.cs | 15 +++ .../extreme/ExtremeJouerUneCarte.cs | 10 ++ .../model/gameActions/extreme/ExtremeMode.cs | 14 +++ .../gameActions/extreme/ExtremePiocher.cs | 10 ++ .../extreme/ExtremeTerminerSonTour.cs | 10 ++ TheGameExtreme/model/manager/GameManager.cs | 72 +++++------ .../model/manager/SoloGameManager.cs | 66 +++++----- 13 files changed, 291 insertions(+), 161 deletions(-) delete mode 100644 TheGameExtreme/model/GameMode.cs create mode 100644 TheGameExtreme/model/gameActions/GameAction.cs create mode 100644 TheGameExtreme/model/gameActions/classic/GameMode.cs create mode 100644 TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs create mode 100644 TheGameExtreme/model/gameActions/classic/Piocher.cs create mode 100644 TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs create mode 100644 TheGameExtreme/model/gameActions/extreme/ExtremeJouerUneCarte.cs create mode 100644 TheGameExtreme/model/gameActions/extreme/ExtremeMode.cs create mode 100644 TheGameExtreme/model/gameActions/extreme/ExtremePiocher.cs create mode 100644 TheGameExtreme/model/gameActions/extreme/ExtremeTerminerSonTour.cs diff --git a/TheGameExtreme/TheGameExtreme.csproj b/TheGameExtreme/TheGameExtreme.csproj index 794e9f5..ee43505 100644 --- a/TheGameExtreme/TheGameExtreme.csproj +++ b/TheGameExtreme/TheGameExtreme.csproj @@ -19,6 +19,9 @@ + + + diff --git a/TheGameExtreme/model/GameMode.cs b/TheGameExtreme/model/GameMode.cs deleted file mode 100644 index 0aeb0ae..0000000 --- a/TheGameExtreme/model/GameMode.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; -using System.Collections.Generic; -using TheGameExtreme.model.card; -using TheGameExtreme.model.rule; -using TheGameExtreme.model.rule.beforeEndTurnRules; -using TheGameExtreme.model.rule.endTurnRules; -using TheGameExtreme.model.rule.playRules; - -namespace TheGameExtreme.model -{ - public class GameMode - { - - private List playRule = new List(); - private List beforeEndTurnRule = new List(); - private List endTurnRule = new List(); - private List commonRule = new List(); - - public GameMode() - { - } - - public void addPlayRule(PlayRule rule) - { - playRule?.Add(rule); - } - - public void addEndTurnRule(EndTurnRule rule) - { - endTurnRule?.Add(rule); - } - - public void addBeforeEndTurnRule(BeforeEndTurnRule rule) - { - beforeEndTurnRule?.Add(rule); - } - - public void addCommonRule(Rule rule) - { - // Vérifier que se ne soit ni une PlayRule, ni une EndTurnRule ? - commonRule?.Add(rule); - } - - public bool checkPlayRule(Card card, Stack orderedStack, bool bottomUp, List CurrentHand) - { - foreach(PlayRule rule in playRule) - { - if (rule.Test(card, orderedStack, bottomUp, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. - { - return true; - } - } - foreach (Rule rule in commonRule) - { - - } - return false; - } - - public bool checkBeforeEndTurnRule(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) - { - foreach (BeforeEndTurnRule rule in beforeEndTurnRule) - { - if (!rule.Test(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. - { - return false; - } - } - foreach (Rule rule in commonRule) - { - - } - return true; - } - - public bool checkEndTurnRule(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) - { - foreach (EndTurnRule rule in endTurnRule) - { - if (!rule.Test(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. - { - return false; - } - } - foreach (Rule rule in commonRule) - { - - } - return true; - } - } -} diff --git a/TheGameExtreme/model/gameActions/GameAction.cs b/TheGameExtreme/model/gameActions/GameAction.cs new file mode 100644 index 0000000..b2e9acc --- /dev/null +++ b/TheGameExtreme/model/gameActions/GameAction.cs @@ -0,0 +1,10 @@ +using System; +namespace TheGameExtreme.model.gameActions +{ + public class GameAction + { + public abstract GameAction() + { + } + } +} diff --git a/TheGameExtreme/model/gameActions/classic/GameMode.cs b/TheGameExtreme/model/gameActions/classic/GameMode.cs new file mode 100644 index 0000000..0c8aec8 --- /dev/null +++ b/TheGameExtreme/model/gameActions/classic/GameMode.cs @@ -0,0 +1,115 @@ +using System; +using System.Collections.Generic; +using TheGameExtreme.model.gameActions; + +namespace TheGameExtreme.model.gameActions.classic +{ + public class GameMode + { + + protected List gameActions; + + public GameMode() + { + gameActions = new List(); + + gameActions.Add(new Piocher()); + gameActions.Add(new JouerUneCarte()); + gameActions.Add(new TerminerSonTour()); + } + + public void pioche() + { + ((Piocher)gameActions[0]).pioche(); + } + + public void playCard() + { + ((JouerUneCarte)gameActions[0]).play(); + } + + public void endTurn() + { + ((TerminerSonTour)gameActions[0]).end(); + } + + + // private List playRule = new List(); + // private List beforeEndTurnRule = new List(); + // private List endTurnRule = new List(); + // private List commonRule = new List(); + + // public GameMode() + // { + // } + + // public void addPlayRule(PlayRule rule) + // { + // playRule?.Add(rule); + // } + + // public void addEndTurnRule(EndTurnRule rule) + // { + // endTurnRule?.Add(rule); + // } + + // public void addBeforeEndTurnRule(BeforeEndTurnRule rule) + // { + // beforeEndTurnRule?.Add(rule); + // } + + // public void addCommonRule(Rule rule) + // { + // // Vérifier que se ne soit ni une PlayRule, ni une EndTurnRule ? + // commonRule?.Add(rule); + // } + + // public bool checkPlayRule(Card card, Stack orderedStack, bool bottomUp, List CurrentHand) + // { + // foreach(PlayRule rule in playRule) + // { + // if (rule.Test(card, orderedStack, bottomUp, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. + // { + // return true; + // } + // } + // foreach (Rule rule in commonRule) + // { + + // } + // return false; + // } + + // public bool checkBeforeEndTurnRule(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) + // { + // foreach (BeforeEndTurnRule rule in beforeEndTurnRule) + // { + // if (!rule.Test(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. + // { + // return false; + // } + // } + // foreach (Rule rule in commonRule) + // { + + // } + // return true; + // } + + // public bool checkEndTurnRule(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand) + // { + // foreach (EndTurnRule rule in endTurnRule) + // { + // if (!rule.Test(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. + // { + // return false; + // } + // } + // foreach (Rule rule in commonRule) + // { + + // } + // return true; + // } + //} +} diff --git a/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs b/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs new file mode 100644 index 0000000..5d44832 --- /dev/null +++ b/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs @@ -0,0 +1,15 @@ +using System; +namespace TheGameExtreme.model.gameActions.classic +{ + public class JouerUneCarte : GameAction + { + public JouerUneCarte() + { + } + + public void play() + { + + } + } +} diff --git a/TheGameExtreme/model/gameActions/classic/Piocher.cs b/TheGameExtreme/model/gameActions/classic/Piocher.cs new file mode 100644 index 0000000..ef602ac --- /dev/null +++ b/TheGameExtreme/model/gameActions/classic/Piocher.cs @@ -0,0 +1,20 @@ +using System; +namespace TheGameExtreme.model.gameActions.classic +{ + public class Piocher : GameAction + { + public Piocher() + { + } + + protected bool checkRule() + { + return true; + } + + public void pioche() + { + + } + } +} diff --git a/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs b/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs new file mode 100644 index 0000000..e4d67e6 --- /dev/null +++ b/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs @@ -0,0 +1,15 @@ +using System; +namespace TheGameExtreme.model.gameActions.classic +{ + public class TerminerSonTour : GameAction + { + public TerminerSonTour() + { + } + + public void end() + { + + } + } +} diff --git a/TheGameExtreme/model/gameActions/extreme/ExtremeJouerUneCarte.cs b/TheGameExtreme/model/gameActions/extreme/ExtremeJouerUneCarte.cs new file mode 100644 index 0000000..bd0081f --- /dev/null +++ b/TheGameExtreme/model/gameActions/extreme/ExtremeJouerUneCarte.cs @@ -0,0 +1,10 @@ +using System; +namespace TheGameExtreme.model.gameActions.extreme +{ + public class ExtremeJouerUneCarte : JouerUneCarte + { + public ExtremeJouerUneCarte() + { + } + } +} diff --git a/TheGameExtreme/model/gameActions/extreme/ExtremeMode.cs b/TheGameExtreme/model/gameActions/extreme/ExtremeMode.cs new file mode 100644 index 0000000..65dc39b --- /dev/null +++ b/TheGameExtreme/model/gameActions/extreme/ExtremeMode.cs @@ -0,0 +1,14 @@ +using System; + +namespace TheGameExtreme.model.gameActions.extreme +{ + public class ExtremeMode : GameMode + { + public ExtremeMode() + { + gameActions.Add(new ExtremePiocher()); + gameActions.Add(new ExtremeJouerUneCarte()); + gameActions.Add(new ExtremeTerminerSonTour()); + } + } +} diff --git a/TheGameExtreme/model/gameActions/extreme/ExtremePiocher.cs b/TheGameExtreme/model/gameActions/extreme/ExtremePiocher.cs new file mode 100644 index 0000000..6f74b9b --- /dev/null +++ b/TheGameExtreme/model/gameActions/extreme/ExtremePiocher.cs @@ -0,0 +1,10 @@ +using System; +namespace TheGameExtreme.model.gameActions.extreme +{ + public class ExtremePiocher : Piocher + { + public ExtremePiocher() + { + } + } +} diff --git a/TheGameExtreme/model/gameActions/extreme/ExtremeTerminerSonTour.cs b/TheGameExtreme/model/gameActions/extreme/ExtremeTerminerSonTour.cs new file mode 100644 index 0000000..39092d7 --- /dev/null +++ b/TheGameExtreme/model/gameActions/extreme/ExtremeTerminerSonTour.cs @@ -0,0 +1,10 @@ +using System; +namespace TheGameExtreme.model.gameActions.extreme +{ + public class ExtremeTerminerSonTour : TerminerSonTour + { + public ExtremeTerminerSonTour() + { + } + } +} diff --git a/TheGameExtreme/model/manager/GameManager.cs b/TheGameExtreme/model/manager/GameManager.cs index d50d2ba..efd9fa2 100644 --- a/TheGameExtreme/model/manager/GameManager.cs +++ b/TheGameExtreme/model/manager/GameManager.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using TheGameExtreme.model.card; using TheGameExtreme.model.deck; using TheGameExtreme.model.@event; +using TheGameExtreme.model.gameActions; +using TheGameExtreme.model.gameActions.classic; using TheGameExtreme.model.rule.beforeEndTurnRules; using TheGameExtreme.model.rule.endTurnRules; using TheGameExtreme.model.rule.playRules; @@ -12,6 +14,35 @@ namespace TheGameExtreme.model.manager public abstract class GameManager { + /* GameMaster implémente un mode de jeu (classe fille de gameMode qui connait les actions a effectué en fonction du mode de jeu */ + + protected GameMode gameMode; + + + protected GameManager(GameMode gameMode) + { + this.gameMode = gameMode; + } + + + + + + + + + + + + + + + + + + + + public readonly int nbPlayer; protected int nbMaxCard; protected int currentIndexPlayer; @@ -27,8 +58,6 @@ namespace TheGameExtreme.model.manager protected List CurrentCardPlayed = new List(); protected string langue; - protected GameMode gameMode; - protected GameManager(int nbPlayer, List players) { @@ -71,19 +100,6 @@ namespace TheGameExtreme.model.manager } } - protected void initRule() - { - gameMode = new GameMode(); - gameMode.addPlayRule(new Ascendant()); - gameMode.addPlayRule(new Descendant()); - gameMode.addPlayRule(new PasDeDix()); - //gameMode.addPlayRule(new VoidHand()); - gameMode.addBeforeEndTurnRule(new NbCardPlay()); - gameMode.addEndTurnRule(new EndGame(ListOrderedStacks)); - //gameMode.addEndTurnRule(new VoidDeck()); - //gameMode.addEndTurnRule(new CompleteHand()); - } - protected void createDeck() { switch (true) @@ -159,31 +175,17 @@ namespace TheGameExtreme.model.manager protected void testPossibility(Card card, Stack orderedStack, bool bottomUp) { - if (gameMode.checkPlayRule(card, orderedStack, bottomUp, CurrentHand)) - { - Card oldCard = orderedStack.Peek(); - playerList[currentIndexPlayer].joue(card); - CurrentCardPlayed.Add(card); - orderedStack.Push(card); - OnTopRangeChanged(new TopRangeChangedEventArgs(card, oldCard, ListOrderedStacks.IndexOf(orderedStack))); - //if (CurrentHand.Count == 0) - //{ - // endTurn(); // Presque bon, oublie juste d'afficher les nouvelles cartes - //} - } - else - { - throw new Exception(AppRessource.StrWrongStack); - } - - - //if ((bottomUp && card.Value > orderedStack.Peek().Value) || (!bottomUp && card.Value < orderedStack.Peek().Value) || card.Value == orderedStack.Peek().Value + 10 || card.Value == orderedStack.Peek().Value - 10) + //if (gameMode.checkPlayRule(card, orderedStack, bottomUp, CurrentHand)) //{ // Card oldCard = orderedStack.Peek(); // playerList[currentIndexPlayer].joue(card); // CurrentCardPlayed.Add(card); // orderedStack.Push(card); // OnTopRangeChanged(new TopRangeChangedEventArgs(card, oldCard, ListOrderedStacks.IndexOf(orderedStack))); + // //if (CurrentHand.Count == 0) + // //{ + // // endTurn(); // Presque bon, oublie juste d'afficher les nouvelles cartes + // //} //} //else //{ @@ -215,8 +217,6 @@ namespace TheGameExtreme.model.manager abstract public bool endTurn(); - abstract protected void pioche(); - abstract protected bool isEndGame(); abstract protected void tryToFindSoluce(List playableCard); diff --git a/TheGameExtreme/model/manager/SoloGameManager.cs b/TheGameExtreme/model/manager/SoloGameManager.cs index 38d7b2b..9c25c99 100644 --- a/TheGameExtreme/model/manager/SoloGameManager.cs +++ b/TheGameExtreme/model/manager/SoloGameManager.cs @@ -18,38 +18,38 @@ namespace TheGameExtreme.model.manager public override bool endTurn() { - if (gameMode.checkBeforeEndTurnRule(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) - { - //verifyNbCardPlay(); - pioche(); - currentIndexPlayer += 1; - if (currentIndexPlayer == playerList.Count) - { - currentIndexPlayer = 0; - } - CurrentHand = playerList[currentIndexPlayer].getCardList(); - OnPlayerChanged(new PlayerChangedEventArgs(CurrentHand, playerList[currentIndexPlayer].Pseudo)); - nbCardAtBeginOfTurn = CurrentHand.Count; - CurrentCardPlayed.Clear(); - if (gameMode.checkEndTurnRule(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) - { - //if (isEndGame()) // Ajouter le score en calculant les cartes restantes dans la pile et dans les mains des joueurs - //{ - // displayWinner(); - // return true; - //} - - return false; - } - else - { - return true; - } - } - else - { - return false; - } + //if (gameMode.checkBeforeEndTurnRule(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) + //{ + // //verifyNbCardPlay(); + // pioche(); + // currentIndexPlayer += 1; + // if (currentIndexPlayer == playerList.Count) + // { + // currentIndexPlayer = 0; + // } + // CurrentHand = playerList[currentIndexPlayer].getCardList(); + // OnPlayerChanged(new PlayerChangedEventArgs(CurrentHand, playerList[currentIndexPlayer].Pseudo)); + // nbCardAtBeginOfTurn = CurrentHand.Count; + // CurrentCardPlayed.Clear(); + // if (gameMode.checkEndTurnRule(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) + // { + // //if (isEndGame()) // Ajouter le score en calculant les cartes restantes dans la pile et dans les mains des joueurs + // //{ + // // displayWinner(); + // // return true; + // //} + + // return false; + // } + // else + // { + // return true; + // } + //} + //else + //{ + // return false; + //} } @@ -95,7 +95,7 @@ namespace TheGameExtreme.model.manager } } - protected override void pioche() + protected void pioche() { int nbPickedCard = nbMaxCard - CurrentHand.Count; for (int i = 0; i < nbPickedCard; i++)