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++)