diff --git a/TheGameExtreme/model/gameActions/GameAction.cs b/TheGameExtreme/model/gameActions/GameAction.cs index b2e9acc..62f408b 100644 --- a/TheGameExtreme/model/gameActions/GameAction.cs +++ b/TheGameExtreme/model/gameActions/GameAction.cs @@ -1,10 +1,16 @@ using System; +using System.Collections.Generic; +using TheGameExtreme.model.card; + namespace TheGameExtreme.model.gameActions { - public class GameAction + public abstract class GameAction { - public abstract GameAction() + protected Piles ListOrderedStacks { get; set; } + + protected GameAction(Piles listOrderedStacks) { + ListOrderedStacks = listOrderedStacks; } } } diff --git a/TheGameExtreme/model/gameActions/Piles.cs b/TheGameExtreme/model/gameActions/Piles.cs new file mode 100644 index 0000000..30c0a46 --- /dev/null +++ b/TheGameExtreme/model/gameActions/Piles.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using TheGameExtreme.model.card; + +namespace TheGameExtreme.model.gameActions +{ + public class Piles + { + + public List> ListOrderedStacks { get; set; } + + public Piles() + { + ListOrderedStacks = new List>(); + + ListOrderedStacks.Add(new Stack()); + ListOrderedStacks.Add(new Stack()); + ListOrderedStacks.Add(new Stack()); + ListOrderedStacks.Add(new Stack()); + + for (int i = 0; i < 4; i++) + { + if (i < 2) + { + ListOrderedStacks[i].Push(new ClassicCard(1)); + } + else + { + ListOrderedStacks[i].Push(new ClassicCard(100)); + } + } + } + + public Stack getStack(int i) + { + return ListOrderedStacks[i]; + } + } +} diff --git a/TheGameExtreme/model/gameActions/classic/GameMode.cs b/TheGameExtreme/model/gameActions/classic/GameMode.cs index 0c8aec8..ddbfa25 100644 --- a/TheGameExtreme/model/gameActions/classic/GameMode.cs +++ b/TheGameExtreme/model/gameActions/classic/GameMode.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using TheGameExtreme.model.card; using TheGameExtreme.model.gameActions; namespace TheGameExtreme.model.gameActions.classic @@ -8,14 +9,20 @@ namespace TheGameExtreme.model.gameActions.classic { protected List gameActions; + protected Piles piles; public GameMode() { gameActions = new List(); - gameActions.Add(new Piocher()); - gameActions.Add(new JouerUneCarte()); - gameActions.Add(new TerminerSonTour()); + gameActions.Add(new Piocher(piles)); + gameActions.Add(new JouerUneCarte(piles)); + gameActions.Add(new TerminerSonTour(piles)); + } + + public void load() + { + piles = new Piles(); } public void pioche() @@ -23,14 +30,18 @@ namespace TheGameExtreme.model.gameActions.classic ((Piocher)gameActions[0]).pioche(); } - public void playCard() + public void playCard(int valueCard, List CurrentHand, int orderedStackSelected, Player player, List CurrentCardPlayed) { - ((JouerUneCarte)gameActions[0]).play(); + ((JouerUneCarte)gameActions[1]).play(valueCard, CurrentHand, orderedStackSelected, player, CurrentCardPlayed); + if (CurrentHand.Count == 0) + { + endTurn(); // Presque bon, oublie juste d'afficher les nouvelles cartes + } } public void endTurn() { - ((TerminerSonTour)gameActions[0]).end(); + ((TerminerSonTour)gameActions[2]).end(); } @@ -111,5 +122,5 @@ namespace TheGameExtreme.model.gameActions.classic // } // return true; // } - //} + } } diff --git a/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs b/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs index 5d44832..cec789a 100644 --- a/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs +++ b/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs @@ -1,15 +1,61 @@ using System; +using System.Collections.Generic; +using TheGameExtreme.model.card; + namespace TheGameExtreme.model.gameActions.classic { public class JouerUneCarte : GameAction { - public JouerUneCarte() + + public JouerUneCarte(Piles ListOrderedStacks) : base(ListOrderedStacks) { } - public void play() + public void play(int valueCard, List CurrentHand, int orderedStackSelected, Player player, List CurrentCardPlayed) { + foreach (Card card in CurrentHand) + { + if (valueCard == card.Value) + { + if (orderedStackSelected >= 0 && orderedStackSelected < 4) + { + if (orderedStackSelected < 2) + { + rule(card, ListOrderedStacks.getStack(orderedStackSelected), true, player, CurrentCardPlayed); + } + else + { + rule(card, ListOrderedStacks.getStack(orderedStackSelected), false, player, CurrentCardPlayed); + } + } + else + { + throw new Exception(AppRessource.StrCantGetStack); + } + return; + } + } + } + private void rule(Card card, Stack stack, bool bottomUp, Player player, List CurrentCardPlayed) + { + if ((bottomUp && card.Value > stack.Peek().Value) || (!bottomUp && card.Value < stack.Peek().Value) || card.Value == stack.Peek().Value - 10 || card.Value == stack.Peek().Value + 10) + { + Card oldCard = stack.Peek(); + player.joue(card); + CurrentCardPlayed.Add(card); + stack.Push(card); + //OnTopRangeChanged(new TopRangeChangedEventArgs(card, oldCard, ListOrderedStacks.IndexOf(orderedStack))); + } + else + { + throw new Exception(AppRessource.StrWrongStack); + } + //if (EndMessage != null) + //{ + // //throw new Exception("Le jeu est fini! Veuillez lancer une nouvelle partie!"); + // throw new Exception(AppRessource.StrEndOfGame); + //} } } } diff --git a/TheGameExtreme/model/gameActions/classic/Piocher.cs b/TheGameExtreme/model/gameActions/classic/Piocher.cs index ef602ac..3f16e3e 100644 --- a/TheGameExtreme/model/gameActions/classic/Piocher.cs +++ b/TheGameExtreme/model/gameActions/classic/Piocher.cs @@ -1,9 +1,12 @@ using System; +using System.Collections.Generic; +using TheGameExtreme.model.card; + namespace TheGameExtreme.model.gameActions.classic { public class Piocher : GameAction { - public Piocher() + public Piocher(Piles ListOrderedStacks) : base(ListOrderedStacks) { } diff --git a/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs b/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs index e4d67e6..4117899 100644 --- a/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs +++ b/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs @@ -3,7 +3,7 @@ namespace TheGameExtreme.model.gameActions.classic { public class TerminerSonTour : GameAction { - public TerminerSonTour() + public TerminerSonTour(Piles ListOrderedStacks) : base(ListOrderedStacks) { } diff --git a/TheGameExtreme/model/gameActions/extreme/ExtremeJouerUneCarte.cs b/TheGameExtreme/model/gameActions/extreme/ExtremeJouerUneCarte.cs index bd0081f..9877c84 100644 --- a/TheGameExtreme/model/gameActions/extreme/ExtremeJouerUneCarte.cs +++ b/TheGameExtreme/model/gameActions/extreme/ExtremeJouerUneCarte.cs @@ -1,9 +1,11 @@ using System; +using TheGameExtreme.model.gameActions.classic; + namespace TheGameExtreme.model.gameActions.extreme { public class ExtremeJouerUneCarte : JouerUneCarte { - public ExtremeJouerUneCarte() + public ExtremeJouerUneCarte(Piles ListOrderedStacks) : base(ListOrderedStacks) { } } diff --git a/TheGameExtreme/model/gameActions/extreme/ExtremeMode.cs b/TheGameExtreme/model/gameActions/extreme/ExtremeMode.cs index 65dc39b..f38dcd2 100644 --- a/TheGameExtreme/model/gameActions/extreme/ExtremeMode.cs +++ b/TheGameExtreme/model/gameActions/extreme/ExtremeMode.cs @@ -1,4 +1,5 @@ using System; +using TheGameExtreme.model.gameActions.classic; namespace TheGameExtreme.model.gameActions.extreme { @@ -6,9 +7,9 @@ namespace TheGameExtreme.model.gameActions.extreme { public ExtremeMode() { - gameActions.Add(new ExtremePiocher()); - gameActions.Add(new ExtremeJouerUneCarte()); - gameActions.Add(new ExtremeTerminerSonTour()); + gameActions.Add(new ExtremePiocher(piles)); + gameActions.Add(new ExtremeJouerUneCarte(piles)); + gameActions.Add(new ExtremeTerminerSonTour(piles)); } } } diff --git a/TheGameExtreme/model/gameActions/extreme/ExtremePiocher.cs b/TheGameExtreme/model/gameActions/extreme/ExtremePiocher.cs index 6f74b9b..e0ff5df 100644 --- a/TheGameExtreme/model/gameActions/extreme/ExtremePiocher.cs +++ b/TheGameExtreme/model/gameActions/extreme/ExtremePiocher.cs @@ -1,9 +1,11 @@ using System; +using TheGameExtreme.model.gameActions.classic; + namespace TheGameExtreme.model.gameActions.extreme { public class ExtremePiocher : Piocher { - public ExtremePiocher() + public ExtremePiocher(Piles ListOrderedStacks) : base(ListOrderedStacks) { } } diff --git a/TheGameExtreme/model/gameActions/extreme/ExtremeTerminerSonTour.cs b/TheGameExtreme/model/gameActions/extreme/ExtremeTerminerSonTour.cs index 39092d7..501e352 100644 --- a/TheGameExtreme/model/gameActions/extreme/ExtremeTerminerSonTour.cs +++ b/TheGameExtreme/model/gameActions/extreme/ExtremeTerminerSonTour.cs @@ -1,9 +1,11 @@ using System; +using TheGameExtreme.model.gameActions.classic; + namespace TheGameExtreme.model.gameActions.extreme { public class ExtremeTerminerSonTour : TerminerSonTour { - public ExtremeTerminerSonTour() + public ExtremeTerminerSonTour(Piles ListOrderedStacks) : base(ListOrderedStacks) { } } diff --git a/TheGameExtreme/model/manager/GameManager.cs b/TheGameExtreme/model/manager/GameManager.cs index efd9fa2..8a840a6 100644 --- a/TheGameExtreme/model/manager/GameManager.cs +++ b/TheGameExtreme/model/manager/GameManager.cs @@ -17,87 +17,37 @@ namespace TheGameExtreme.model.manager /* 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; - protected List playerList = new List(); - public List> ListOrderedStacks { get; set; } protected Deck deck; - protected bool win = true; - public String EndMessage { get; set; } + public readonly int nbPlayer; + protected List players = new List(); public event EventHandler TopRangeChanged; public event EventHandler PlayerChanged; - public List CurrentHand { get; set; } - protected int nbCardAtBeginOfTurn; + public Piles ListOrderedStacks { get; set; } + //protected int nbCardAtBeginOfTurn; + protected int nbMaxCard; protected List CurrentCardPlayed = new List(); - protected string langue; + public String EndMessage { get; set; } - protected GameManager(int nbPlayer, List players) - { - ListOrderedStacks = new List>(); - CurrentHand = new List(); - this.nbPlayer = nbPlayer; - players.ForEach(player => playerList.Add(new Player(player))); + public List CurrentHand { get; set; } + + protected GameManager(List playersNames, GameMode gameMode) + { + nbPlayer = players.Count; + playersNames.ForEach(playerName => players.Add(new Player(playerName))); - initStacks(); + this.gameMode = gameMode; + gameMode.load(); - initRule(); + ListOrderedStacks = new Piles(); createDeck(); defineNbMaxCard(); distribueCard(); - CurrentHand = playerList[currentIndexPlayer].getCardList(); - nbCardAtBeginOfTurn = CurrentHand.Count; - } - - protected void initStacks() - { - ListOrderedStacks.Add(new Stack()); - ListOrderedStacks.Add(new Stack()); - ListOrderedStacks.Add(new Stack()); - ListOrderedStacks.Add(new Stack()); - - for (int i = 0; i < 4; i++) - { - if (i < 2) - { - ListOrderedStacks[i].Push(new ClassicCard(1)); - } - else - { - ListOrderedStacks[i].Push(new ClassicCard(100)); - } - } + CurrentHand = players[0].getCardList(); } protected void createDeck() @@ -134,7 +84,8 @@ namespace TheGameExtreme.model.manager { for (int i = 0; i < nbMaxCard; i++) { - playerList.ForEach(player => { + players.ForEach(player => + { int r = new Random().Next(0, deck.size() - 1); player.pioche(deck.getCard(r)); deck.removeAt(r); @@ -144,91 +95,191 @@ namespace TheGameExtreme.model.manager public void joue(int valueCard, int orderedStackSelected) { - if (EndMessage != null) - { - //throw new Exception("Le jeu est fini! Veuillez lancer une nouvelle partie!"); - throw new Exception(AppRessource.StrEndOfGame); - } - foreach(Card card in CurrentHand) - { - if (valueCard == card.Value) - { - if (orderedStackSelected >= 0 && orderedStackSelected < 4) - { - if (orderedStackSelected < 2) - { - testPossibility(card, ListOrderedStacks[orderedStackSelected], true); - } - else - { - testPossibility(card, ListOrderedStacks[orderedStackSelected], false); - } - } - else - { - throw new Exception(AppRessource.StrCantGetStack); - } - return; - } - } + gameMode.playCard(valueCard, CurrentHand, orderedStackSelected, players[0], CurrentCardPlayed); // Mettre le joueur actif } - 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); - //} - } - protected internal void OnTopRangeChanged(TopRangeChangedEventArgs args) - { - TopRangeChanged?.Invoke(this, args); - } - protected internal void OnPlayerChanged(PlayerChangedEventArgs args) - { - PlayerChanged?.Invoke(this, args); - } - public bool isCanPlay() - { - if (CurrentHand.Count > 0) - { - return true; - } - else - { - return false; - } - } - abstract public bool endTurn(); - abstract protected bool isEndGame(); - abstract protected void tryToFindSoluce(List playableCard); - abstract protected bool testEndGame(List playableCard); - abstract protected bool effectLose(); - public int getCurentIndexPlayer() - { - return currentIndexPlayer; - } + + + + + + + + + + + //public readonly int nbPlayer; + //protected int nbMaxCard; + //protected int currentIndexPlayer; + //protected List playerList = new List(); + //public List> ListOrderedStacks { get; set; } + //protected Deck deck; + //protected bool win = true; + //public String EndMessage { get; set; } + //public List CurrentHand { get; set; } + //protected int nbCardAtBeginOfTurn; + //protected List CurrentCardPlayed = new List(); + //protected string langue; + //public event EventHandler TopRangeChanged; + //public event EventHandler PlayerChanged; + + + //protected GameManager(int nbPlayer, List players) + //{ + // ListOrderedStacks = new List>(); + // CurrentHand = new List(); + + // this.nbPlayer = nbPlayer; + // players.ForEach(player => playerList.Add(new Player(player))); + + + // initStacks(); + + // initRule(); + + // createDeck(); + // defineNbMaxCard(); + // distribueCard(); + + // CurrentHand = playerList[currentIndexPlayer].getCardList(); + // nbCardAtBeginOfTurn = CurrentHand.Count; + //} + + //protected void initStacks() + //{ + // ListOrderedStacks = new List>(); + + // ListOrderedStacks.Add(new Stack()); + // ListOrderedStacks.Add(new Stack()); + // ListOrderedStacks.Add(new Stack()); + // ListOrderedStacks.Add(new Stack()); + + // for (int i = 0; i < 4; i++) + // { + // if (i < 2) + // { + // ListOrderedStacks[i].Push(new ClassicCard(1)); + // } + // else + // { + // ListOrderedStacks[i].Push(new ClassicCard(100)); + // } + // } + //} + + //protected void createDeck() + //{ + // switch (true) + // { + // case false: + // deck = new ClassicDeck(); + // break; + + // default: + // deck = new ExtremeDeck(); + // break; + // } + //} + + //protected void defineNbMaxCard() + //{ + // switch (nbPlayer) + // { + // case 1: + // nbMaxCard = 8; + // break; + // case 2: + // nbMaxCard = 7; + // break; + // default: + // nbMaxCard = 6; + // break; + // } + //} + + //protected void distribueCard() + //{ + // for (int i = 0; i < nbMaxCard; i++) + // { + // players.ForEach(player => + // { + // int r = new Random().Next(0, deck.size() - 1); + // player.pioche(deck.getCard(r)); + // deck.removeAt(r); + // }); + // } + //} + + //public void joue(int valueCard, int orderedStackSelected) + //{ + // gameMode.playCard(valueCard, CurrentHand, orderedStackSelected, players[0], CurrentCardPlayed); // Mettre le joueur actif + //} + + //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); + // //} + //} + + //protected internal void OnTopRangeChanged(TopRangeChangedEventArgs args) + //{ + // TopRangeChanged?.Invoke(this, args); + //} + + //protected internal void OnPlayerChanged(PlayerChangedEventArgs args) + //{ + // PlayerChanged?.Invoke(this, args); + //} + + //public bool isCanPlay() + //{ + // if (CurrentHand.Count > 0) + // { + // return true; + // } + // else + // { + // return false; + // } + //} + + //abstract public bool endTurn(); + + //abstract protected bool isEndGame(); + + //abstract protected void tryToFindSoluce(List playableCard); + + //abstract protected bool testEndGame(List playableCard); + + //abstract protected bool effectLose(); + + //public int getCurentIndexPlayer() + //{ + // return currentIndexPlayer; + //} } } diff --git a/TheGameExtreme/model/manager/MultiplayerGameManager.cs b/TheGameExtreme/model/manager/MultiplayerGameManager.cs index 858d083..46dbe13 100644 --- a/TheGameExtreme/model/manager/MultiplayerGameManager.cs +++ b/TheGameExtreme/model/manager/MultiplayerGameManager.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; +using TheGameExtreme.model.gameActions.classic; namespace TheGameExtreme.model.manager { public abstract class MultiplayerGameManager : GameManager { - protected MultiplayerGameManager(int nbPlayer, List players) : base(nbPlayer, players) + protected MultiplayerGameManager(List players, GameMode gameMode) : base(players, gameMode) { } } diff --git a/TheGameExtreme/model/manager/SoloGameManager.cs b/TheGameExtreme/model/manager/SoloGameManager.cs index 9c25c99..04d1c9b 100644 --- a/TheGameExtreme/model/manager/SoloGameManager.cs +++ b/TheGameExtreme/model/manager/SoloGameManager.cs @@ -3,175 +3,176 @@ using System.Collections.Generic; using TheGameExtreme.model.card; using TheGameExtreme.model.card.rapidCard; using TheGameExtreme.model.@event; +using TheGameExtreme.model.gameActions.classic; namespace TheGameExtreme.model.manager { public class SoloGameManager : GameManager { - public SoloGameManager(int nbPlayer, List players) - : base(nbPlayer, players) + public SoloGameManager(List players, GameMode gameMode) + : base(players, gameMode) { } - 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; - //} - - - } - - protected void verifyNbCardPlay() - { - foreach (Card cardPlayed in CurrentCardPlayed) - { - if (Equals(cardPlayed.GetType(), ThreeCard.CARD_THREE)) - { - if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 3) // Penser à vérifier s'il a joué une ThreeCard pour regarder s'il a bien joué 3 cartes - { - testIsEndGame(); - } - return; - } - } - if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 2) // Penser à vérifier s'il a joué une ThreeCard pour regarder s'il a bien joué 3 cartes - { - testIsEndGame(); - } - } - - protected void testIsEndGame() - { - if (isEndGame()) - { - displayWinner(); - } - else - { - //throw new Exception("Vous n'avez pas joué assez de carte!"); - throw new Exception(AppRessources_br.StrCardPlayedLessThanTwo); - } - } - - protected void displayWinner() - { - if (win) - { - EndMessage = "Le jeu est terminé!\n Bravo vous avez gagné!"; - EndMessage = AppRessource.StrWin; - } - } - - protected void pioche() - { - int nbPickedCard = nbMaxCard - CurrentHand.Count; - for (int i = 0; i < nbPickedCard; i++) - { - if (deck.size() == 0) - { - return; - } - int random = new Random().Next(0, deck.size() - 1); - playerList[currentIndexPlayer].pioche(deck.getCard(random)); - deck.removeAt(random); - } - } - - protected override bool isEndGame() - { - if (CurrentHand.Count != 0) - { - List playableCard = new List(); - tryToFindSoluce(playableCard); - return testEndGame(playableCard); - } - return false; - } - - protected override void tryToFindSoluce(List playableCard) - { - CurrentHand.ForEach(card => - { - if (card.Value > ListOrderedStacks[0].Peek().Value || card.Value > ListOrderedStacks[1].Peek().Value || card.Value < ListOrderedStacks[2].Peek().Value || card.Value < ListOrderedStacks[3].Peek().Value) - { - playableCard.Add(card); - } - }); - } - - protected override bool testEndGame(List playableCard) - { - if (playableCard.Count == 2) - { - foreach (Card c in playableCard) - { - if (Equals(c.getName(), ThreeCard.CARD_THREE)) - { - win = false; - EndMessage = "Le jeu est terminé!\n Désolé, vous avez perdu... Vous deviez jouer trois cartes à cause de l'effet \"Trois cartes joué\" hors votre jeu ne permet pas d'en jouer autant! Essayez encore!"; - return true; - } - } - } - else if (playableCard.Count < 2) - { - win = false; - EndMessage = "Le jeu est terminé!\n Désolé, vous avez perdu... Essayez encore!"; - return true; - } - else if (effectLose()) - { - win = false; - EndMessage = "Désolé, vous n'avez pas recouvert la tête de mort... Réessayez ;)"; - return true; - } - - return false; - } - - protected override bool effectLose() - { - foreach (Stack orderedStack in ListOrderedStacks) - { - if (Equals(orderedStack.Peek().getName(), EndGameCard.CARD_ENDGAME)) - { - return true; - } - } - return false; - } + //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; + // //} + + + //} + + //protected void verifyNbCardPlay() + //{ + // foreach (Card cardPlayed in CurrentCardPlayed) + // { + // if (Equals(cardPlayed.GetType(), ThreeCard.CARD_THREE)) + // { + // if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 3) // Penser à vérifier s'il a joué une ThreeCard pour regarder s'il a bien joué 3 cartes + // { + // testIsEndGame(); + // } + // return; + // } + // } + // if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 2) // Penser à vérifier s'il a joué une ThreeCard pour regarder s'il a bien joué 3 cartes + // { + // testIsEndGame(); + // } + //} + + //protected void testIsEndGame() + //{ + // if (isEndGame()) + // { + // displayWinner(); + // } + // else + // { + // //throw new Exception("Vous n'avez pas joué assez de carte!"); + // throw new Exception(AppRessources_br.StrCardPlayedLessThanTwo); + // } + //} + + //protected void displayWinner() + //{ + // if (win) + // { + // EndMessage = "Le jeu est terminé!\n Bravo vous avez gagné!"; + // EndMessage = AppRessource.StrWin; + // } + //} + + //protected void pioche() + //{ + // int nbPickedCard = nbMaxCard - CurrentHand.Count; + // for (int i = 0; i < nbPickedCard; i++) + // { + // if (deck.size() == 0) + // { + // return; + // } + // int random = new Random().Next(0, deck.size() - 1); + // playerList[currentIndexPlayer].pioche(deck.getCard(random)); + // deck.removeAt(random); + // } + //} + + //protected override bool isEndGame() + //{ + // if (CurrentHand.Count != 0) + // { + // List playableCard = new List(); + // tryToFindSoluce(playableCard); + // return testEndGame(playableCard); + // } + // return false; + //} + + //protected override void tryToFindSoluce(List playableCard) + //{ + // CurrentHand.ForEach(card => + // { + // if (card.Value > ListOrderedStacks[0].Peek().Value || card.Value > ListOrderedStacks[1].Peek().Value || card.Value < ListOrderedStacks[2].Peek().Value || card.Value < ListOrderedStacks[3].Peek().Value) + // { + // playableCard.Add(card); + // } + // }); + //} + + //protected override bool testEndGame(List playableCard) + //{ + // if (playableCard.Count == 2) + // { + // foreach (Card c in playableCard) + // { + // if (Equals(c.getName(), ThreeCard.CARD_THREE)) + // { + // win = false; + // EndMessage = "Le jeu est terminé!\n Désolé, vous avez perdu... Vous deviez jouer trois cartes à cause de l'effet \"Trois cartes joué\" hors votre jeu ne permet pas d'en jouer autant! Essayez encore!"; + // return true; + // } + // } + // } + // else if (playableCard.Count < 2) + // { + // win = false; + // EndMessage = "Le jeu est terminé!\n Désolé, vous avez perdu... Essayez encore!"; + // return true; + // } + // else if (effectLose()) + // { + // win = false; + // EndMessage = "Désolé, vous n'avez pas recouvert la tête de mort... Réessayez ;)"; + // return true; + // } + + // return false; + //} + + //protected override bool effectLose() + //{ + // foreach (Stack orderedStack in ListOrderedStacks) + // { + // if (Equals(orderedStack.Peek().getName(), EndGameCard.CARD_ENDGAME)) + // { + // return true; + // } + // } + // return false; + //} } } diff --git a/TheGameExtreme/model/manager/multiplayer/LocalGameManager.cs b/TheGameExtreme/model/manager/multiplayer/LocalGameManager.cs index 46bcd00..648b211 100644 --- a/TheGameExtreme/model/manager/multiplayer/LocalGameManager.cs +++ b/TheGameExtreme/model/manager/multiplayer/LocalGameManager.cs @@ -1,43 +1,44 @@ using System; using System.Collections.Generic; using TheGameExtreme.model.card; +using TheGameExtreme.model.gameActions.classic; namespace TheGameExtreme.model.manager { public class LocalGameManager : MultiplayerGameManager { - public LocalGameManager(int nbPlayer, List players) : base(nbPlayer, players) + public LocalGameManager(List players, GameMode gameMode) : base(players, gameMode) { } - public override bool endTurn() - { - throw new NotImplementedException(); - } + //public override bool endTurn() + //{ + // throw new NotImplementedException(); + //} - protected override bool effectLose() - { - throw new NotImplementedException(); - } + //protected override bool effectLose() + //{ + // throw new NotImplementedException(); + //} - protected override bool isEndGame() - { - throw new NotImplementedException(); - } + //protected override bool isEndGame() + //{ + // throw new NotImplementedException(); + //} - protected override void pioche() - { - throw new NotImplementedException(); - } + //protected override void pioche() + //{ + // throw new NotImplementedException(); + //} - protected override bool testEndGame(List playableCard) - { - throw new NotImplementedException(); - } + //protected override bool testEndGame(List playableCard) + //{ + // throw new NotImplementedException(); + //} - protected override void tryToFindSoluce(List playableCard) - { - throw new NotImplementedException(); - } + //protected override void tryToFindSoluce(List playableCard) + //{ + // throw new NotImplementedException(); + //} } } diff --git a/TheGameExtreme/model/manager/multiplayer/RemoteGameManager.cs b/TheGameExtreme/model/manager/multiplayer/RemoteGameManager.cs index ec70b7e..d950c83 100644 --- a/TheGameExtreme/model/manager/multiplayer/RemoteGameManager.cs +++ b/TheGameExtreme/model/manager/multiplayer/RemoteGameManager.cs @@ -1,43 +1,44 @@ using System; using System.Collections.Generic; using TheGameExtreme.model.card; +using TheGameExtreme.model.gameActions.classic; namespace TheGameExtreme.model.manager.multiplayer { public class RemoteGameManager : MultiplayerGameManager { - public RemoteGameManager(int nbPlayer, List players) : base(nbPlayer, players) + public RemoteGameManager(List players, GameMode gameMode) : base(players, gameMode) { } - public override bool endTurn() - { - throw new NotImplementedException(); - } + //public override bool endTurn() + //{ + // throw new NotImplementedException(); + //} - protected override bool effectLose() - { - throw new NotImplementedException(); - } + //protected override bool effectLose() + //{ + // throw new NotImplementedException(); + //} - protected override bool isEndGame() - { - throw new NotImplementedException(); - } + //protected override bool isEndGame() + //{ + // throw new NotImplementedException(); + //} - protected override void pioche() - { - throw new NotImplementedException(); - } + //protected override void pioche() + //{ + // throw new NotImplementedException(); + //} - protected override bool testEndGame(List playableCard) - { - throw new NotImplementedException(); - } + //protected override bool testEndGame(List playableCard) + //{ + // throw new NotImplementedException(); + //} - protected override void tryToFindSoluce(List playableCard) - { - throw new NotImplementedException(); - } + //protected override void tryToFindSoluce(List playableCard) + //{ + // throw new NotImplementedException(); + //} } } diff --git a/TheGameExtreme/view/MainPage.xaml.cs b/TheGameExtreme/view/MainPage.xaml.cs index 0468ab0..0c5e5e0 100644 --- a/TheGameExtreme/view/MainPage.xaml.cs +++ b/TheGameExtreme/view/MainPage.xaml.cs @@ -145,14 +145,14 @@ namespace TheGameExtreme.view private void endTurn(object sender, EventArgs args) { - if (viewmodel.endTurn()) - { - botPanel.Children.Add(button); - } - else - { - inflateHand(); - } + //if (viewmodel.endTurn()) + //{ + // botPanel.Children.Add(button); + //} + //else + //{ + // inflateHand(); + //} } } } diff --git a/TheGameExtreme/viewmodel/Main.cs b/TheGameExtreme/viewmodel/Main.cs index feaf382..5bc04e3 100644 --- a/TheGameExtreme/viewmodel/Main.cs +++ b/TheGameExtreme/viewmodel/Main.cs @@ -4,6 +4,7 @@ using System.Collections.ObjectModel; using System.ComponentModel; using TheGameExtreme.model.card; using TheGameExtreme.model.@event; +using TheGameExtreme.model.gameActions.classic; using TheGameExtreme.model.manager; namespace TheGameExtreme.viewmodel @@ -45,7 +46,7 @@ namespace TheGameExtreme.viewmodel public Main() { - gameManager = new SoloGameManager(2, new List { "Clément", "Baptiste" }) ; // Donner le nom des joueurs + gameManager = new SoloGameManager(new List { "Clément", "Baptiste" }, new GameMode()) ; // Donner le nom des joueurs gameManager.TopRangeChanged += OnTopRangeChanged; @@ -67,31 +68,19 @@ namespace TheGameExtreme.viewmodel BindingChanged?.Invoke(this, args); } + + + + + + + /** * * * @return booléen de fin de jeu */ public bool played(int numStack, int valueCard) - { - if (gameManager.isCanPlay()) - { - return playOneCard(numStack, valueCard); - } - else - { - Alert = "Le joueur n'a plus de carte dans sa main!"; - // Faire un toast - return false; - } - } - - /** - * - * - * @return booléen de fin de jeu - */ - private bool playOneCard(int numStack, int valueCard) { try { @@ -102,28 +91,66 @@ namespace TheGameExtreme.viewmodel return true; } } - catch(Exception e) + catch (Exception e) { // Faire un toast Alert = e.Message; } return false; - } - public bool endTurn() - { - try - { - bool isEnd = gameManager.endTurn(); - Alert = gameManager.EndMessage; - return isEnd; - } - catch(Exception e) - { - Alert = e.Message; - return false; - } + + + + //if (gameManager.isCanPlay()) + //{ + // return playOneCard(numStack, valueCard); + //} + //else + //{ + // Alert = "Le joueur n'a plus de carte dans sa main!"; + // // Faire un toast + // return false; + //} } - } + ///** + // * + // * + // * @return booléen de fin de jeu + // */ + //private bool playOneCard(int numStack, int valueCard) + //{ + // try + // { + // gameManager.joue(valueCard, numStack); + // if (gameManager.EndMessage != null) + // { + // Alert = gameManager.EndMessage; + // return true; + // } + // } + // catch(Exception e) + // { + // // Faire un toast + // Alert = e.Message; + // } + // return false; + //} + + //public bool endTurn() + //{ + // try + // { + // bool isEnd = gameManager.endTurn(); + // Alert = gameManager.EndMessage; + // return isEnd; + // } + // catch(Exception e) + // { + // Alert = e.Message; + // return false; + // } + //} + + } }