diff --git a/TheGameExtreme/model/gameActions/classic/GameMode.cs b/TheGameExtreme/model/gameActions/classic/GameMode.cs index d2eda38..4e21293 100644 --- a/TheGameExtreme/model/gameActions/classic/GameMode.cs +++ b/TheGameExtreme/model/gameActions/classic/GameMode.cs @@ -16,6 +16,7 @@ namespace TheGameExtreme.model.gameActions.classic protected Deck deck; protected int nbMaxCard; public string Message { get; set; } + protected bool end; #region @@ -136,20 +137,12 @@ namespace TheGameExtreme.model.gameActions.classic public bool endTurn(List currentHand, List CurrentCardPlayed, Player player) { Message = null; - if (((TerminerSonTour)gameActions[2]).end(currentHand, NbCardAtBeginOfTurn, CurrentCardPlayed)) + if (((TerminerSonTour)gameActions[2]).end(currentHand, CurrentCardPlayed)) { pioche(currentHand, player); CurrentCardPlayed.Clear(); OnPlayerChanged(null); - if (((TerminerSonTour)gameActions[2]).Test(currentHand)) - { - return false; - } - else - { - OnEndGame(new EventArgs()); - return true; - } + return end; } else { @@ -158,6 +151,19 @@ namespace TheGameExtreme.model.gameActions.classic } } + public void TestEndGame(List currentHand) + { + if (((TerminerSonTour)gameActions[2]).Test(currentHand)) + { + end = false; + } + else + { + OnEndGame(new EventArgs()); + end = true; + } + } + public string getScore() { return deck.size().ToString(); diff --git a/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs b/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs index 92a16cf..23f2aa4 100644 --- a/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs +++ b/TheGameExtreme/model/gameActions/classic/JouerUneCarte.cs @@ -21,18 +21,24 @@ namespace TheGameExtreme.model.gameActions.classic { if (valueCard.CompareTo(card.Value) == 0) { - if (orderedStackSelected >= 0 && orderedStackSelected < 4) + if (orderedStackSelected >= 0 && orderedStackSelected < ListOrderedStacks.Size) { - if (orderedStackSelected < 2) + bool success; + if (orderedStackSelected < (ListOrderedStacks.Size * 0.5)) { ErrorMessage = null; - return rule(card, ListOrderedStacks.getStack(orderedStackSelected), true, player, CurrentCardPlayed); + success = rule(card, ListOrderedStacks.getStack(orderedStackSelected), true, player, CurrentCardPlayed); } else { ErrorMessage = null; - return rule(card, ListOrderedStacks.getStack(orderedStackSelected), false, player, CurrentCardPlayed); + success = rule(card, ListOrderedStacks.getStack(orderedStackSelected), false, player, CurrentCardPlayed); } + if (success) + { + CurrentHand.Remove(card); + } + return success; } else { diff --git a/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs b/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs index 8c2d250..c7f2348 100644 --- a/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs +++ b/TheGameExtreme/model/gameActions/classic/TerminerSonTour.cs @@ -13,7 +13,7 @@ namespace TheGameExtreme.model.gameActions.classic { } - public bool end(List CurrentHand, int nbCardAtBeginOfTurn, List CurrentCardPlayed) + public bool end(List CurrentHand, List CurrentCardPlayed) { // Si carte qui fait piocher que d'un, vĂ©rifier la bonne pioche (penser si elle vient d'ĂȘtre recouverte) // Sinon @@ -44,9 +44,22 @@ namespace TheGameExtreme.model.gameActions.classic { CurrentHand.ForEach(card => { - if (card.Value > ListOrderedStacks.getStack(0).Peek().Value || card.Value > ListOrderedStacks.getStack(1).Peek().Value || card.Value < ListOrderedStacks.getStack(2).Peek().Value || card.Value < ListOrderedStacks.getStack(3).Peek().Value) + for (int i = 0; i < ListOrderedStacks.Size; i++) { - playableCard.Add(card); + if (i < (ListOrderedStacks.Size * 0.5)) + { + if (card.Value > ListOrderedStacks.getStack(i).Peek().Value) + { + playableCard.Add(card); + } + } + else + { + if (card.Value < ListOrderedStacks.getStack(i).Peek().Value) + { + playableCard.Add(card); + } + } } }); } diff --git a/TheGameExtreme/model/manager/GameManager.cs b/TheGameExtreme/model/manager/GameManager.cs index 0184fc4..0b374f3 100644 --- a/TheGameExtreme/model/manager/GameManager.cs +++ b/TheGameExtreme/model/manager/GameManager.cs @@ -18,6 +18,7 @@ namespace TheGameExtreme.model.manager public string EndMessage { get; set; } protected int currentIndexPlayer; protected List currentHand; + protected bool win; public List CurrentHand { get { return currentHand; } @@ -60,8 +61,17 @@ namespace TheGameExtreme.model.manager CurrentHand = parametreur.players[currentIndexPlayer].getCardList(); i++; // Garde fou } - PlayerChanged?.Invoke(source, new PlayerChangedEventArgs(CurrentHand, parametreur.players[currentIndexPlayer].Pseudo)); - parametreur.GameMode.NbCardAtBeginOfTurn = CurrentHand.Count; + if (i == 5) + { + EndMessage = AppRessource.StrWin; + win = true; + } + else + { + parametreur.GameMode.TestEndGame(CurrentHand); + PlayerChanged?.Invoke(source, new PlayerChangedEventArgs(CurrentHand, parametreur.players[currentIndexPlayer].Pseudo)); + parametreur.GameMode.NbCardAtBeginOfTurn = CurrentHand.Count; + } } #endregion @@ -100,6 +110,11 @@ namespace TheGameExtreme.model.manager else { EndMessage = parametreur.GameMode.Message; + if (win) + { + OnEndGame(this, new EventArgs()); + return true; + } return false; } } diff --git a/TheGameExtreme/model/piles/Piles.cs b/TheGameExtreme/model/piles/Piles.cs index 66d360b..b717d56 100644 --- a/TheGameExtreme/model/piles/Piles.cs +++ b/TheGameExtreme/model/piles/Piles.cs @@ -8,9 +8,11 @@ namespace TheGameExtreme.model.piles { protected List> ListOrderedStacks { get; set; } = new List>(); + public int Size { get; set; } public Piles(int nbPile) { + Size = nbPile; for (int i = 0; i < nbPile; i++) { ListOrderedStacks.Add(new Stack()); diff --git a/TheGameExtreme/view/MainPage.xaml b/TheGameExtreme/view/MainPage.xaml index 48ba878..96fd05b 100644 --- a/TheGameExtreme/view/MainPage.xaml +++ b/TheGameExtreme/view/MainPage.xaml @@ -81,7 +81,8 @@ Grid.Column="2" x:Name="gameOption">