diff --git a/TheGameExtreme/TheGameExtreme.csproj b/TheGameExtreme/TheGameExtreme.csproj
index f51a7d1..794e9f5 100644
--- a/TheGameExtreme/TheGameExtreme.csproj
+++ b/TheGameExtreme/TheGameExtreme.csproj
@@ -17,7 +17,8 @@
-
+
+
diff --git a/TheGameExtreme/model/GameMode.cs b/TheGameExtreme/model/GameMode.cs
index cd3cafe..0aeb0ae 100644
--- a/TheGameExtreme/model/GameMode.cs
+++ b/TheGameExtreme/model/GameMode.cs
@@ -2,7 +2,8 @@
using System.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.rule;
-using TheGameExtreme.model.rule.endRule;
+using TheGameExtreme.model.rule.beforeEndTurnRules;
+using TheGameExtreme.model.rule.endTurnRules;
using TheGameExtreme.model.rule.playRules;
namespace TheGameExtreme.model
@@ -11,6 +12,7 @@ namespace TheGameExtreme.model
{
private List playRule = new List();
+ private List beforeEndTurnRule = new List();
private List endTurnRule = new List();
private List commonRule = new List();
@@ -28,17 +30,38 @@ namespace TheGameExtreme.model
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)
+ public bool checkPlayRule(Card card, Stack orderedStack, bool bottomUp, List CurrentHand)
{
foreach(PlayRule rule in playRule)
{
- if (!rule.Test(card, orderedStack, bottomUp)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter.
+ 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;
}
@@ -50,11 +73,11 @@ namespace TheGameExtreme.model
return true;
}
- public bool checkEndTurnRule()
+ public bool checkEndTurnRule(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand)
{
foreach (EndTurnRule rule in endTurnRule)
{
- if (!rule.Test()) // Gestion des messages pour savoir qu'elle règle n'est pas respecter.
+ if (!rule.Test(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter.
{
return false;
}
diff --git a/TheGameExtreme/model/manager/GameManager.cs b/TheGameExtreme/model/manager/GameManager.cs
index 9b348ba..d50d2ba 100644
--- a/TheGameExtreme/model/manager/GameManager.cs
+++ b/TheGameExtreme/model/manager/GameManager.cs
@@ -3,7 +3,8 @@ using System.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.deck;
using TheGameExtreme.model.@event;
-using TheGameExtreme.model.rule.endRule;
+using TheGameExtreme.model.rule.beforeEndTurnRules;
+using TheGameExtreme.model.rule.endTurnRules;
using TheGameExtreme.model.rule.playRules;
namespace TheGameExtreme.model.manager
@@ -36,8 +37,22 @@ namespace TheGameExtreme.model.manager
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.Add(new Stack());
ListOrderedStacks.Add(new Stack());
ListOrderedStacks.Add(new Stack());
@@ -54,21 +69,19 @@ namespace TheGameExtreme.model.manager
ListOrderedStacks[i].Push(new ClassicCard(100));
}
}
+ }
+ 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 VoidHand());
-
- createDeck();
- defineNbMaxCard();
- distribueCard();
-
- CurrentHand = playerList[currentIndexPlayer].getCardList();
- nbCardAtBeginOfTurn = CurrentHand.Count;
+ //gameMode.addEndTurnRule(new VoidDeck());
+ //gameMode.addEndTurnRule(new CompleteHand());
}
protected void createDeck()
@@ -146,17 +159,17 @@ namespace TheGameExtreme.model.manager
protected void testPossibility(Card card, Stack orderedStack, bool bottomUp)
{
- if (gameMode.checkPlayRule(card, orderedStack, 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
- }
+ //if (CurrentHand.Count == 0)
+ //{
+ // endTurn(); // Presque bon, oublie juste d'afficher les nouvelles cartes
+ //}
}
else
{
diff --git a/TheGameExtreme/model/manager/SoloGameManager.cs b/TheGameExtreme/model/manager/SoloGameManager.cs
index fb4b0b3..38d7b2b 100644
--- a/TheGameExtreme/model/manager/SoloGameManager.cs
+++ b/TheGameExtreme/model/manager/SoloGameManager.cs
@@ -18,29 +18,40 @@ namespace TheGameExtreme.model.manager
public override bool endTurn()
{
- //if (gameMode.checkEndTurnRule())
- //{
- verifyNbCardPlay();
+ 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;
+ //}
- currentIndexPlayer += 1;
- if (currentIndexPlayer == playerList.Count)
- {
- currentIndexPlayer = 0;
+ return false;
+ }
+ else
+ {
+ return true;
+ }
}
- CurrentHand = playerList[currentIndexPlayer].getCardList();
- OnPlayerChanged(new PlayerChangedEventArgs(CurrentHand, playerList[currentIndexPlayer].Pseudo));
- nbCardAtBeginOfTurn = CurrentHand.Count;
- CurrentCardPlayed.Clear();
-
- if (isEndGame()) // Ajouter le score en calculant les cartes restantes dans la pile et dans les mains des joueurs
+ else
{
- displayWinner();
- return true;
+ return false;
}
- return false;
+
}
protected void verifyNbCardPlay()
diff --git a/TheGameExtreme/model/rule/Rule.cs b/TheGameExtreme/model/rule/Rule.cs
index 5d9d5ee..09f55ad 100644
--- a/TheGameExtreme/model/rule/Rule.cs
+++ b/TheGameExtreme/model/rule/Rule.cs
@@ -6,10 +6,6 @@ namespace TheGameExtreme.model.rule
public abstract class Rule
{
- public Rule()
- {
- }
-
public bool Test()
{
throw new NotImplementedException();
diff --git a/TheGameExtreme/model/rule/beforeEndTurnRules/BeforeEndTurnRule.cs b/TheGameExtreme/model/rule/beforeEndTurnRules/BeforeEndTurnRule.cs
new file mode 100644
index 0000000..fc4f267
--- /dev/null
+++ b/TheGameExtreme/model/rule/beforeEndTurnRules/BeforeEndTurnRule.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using TheGameExtreme.model.card;
+
+namespace TheGameExtreme.model.rule.beforeEndTurnRules
+{
+ public abstract class BeforeEndTurnRule : Rule
+ {
+
+ public abstract bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand);
+
+ }
+}
diff --git a/TheGameExtreme/model/rule/endRule/NbCardPlay.cs b/TheGameExtreme/model/rule/beforeEndTurnRules/NbCardPlay.cs
similarity index 61%
rename from TheGameExtreme/model/rule/endRule/NbCardPlay.cs
rename to TheGameExtreme/model/rule/beforeEndTurnRules/NbCardPlay.cs
index 2b6ea35..bc8faa4 100644
--- a/TheGameExtreme/model/rule/endRule/NbCardPlay.cs
+++ b/TheGameExtreme/model/rule/beforeEndTurnRules/NbCardPlay.cs
@@ -1,24 +1,23 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
-using TheGameExtreme.model.card.rapidCard;
-namespace TheGameExtreme.model.rule.endRule
+namespace TheGameExtreme.model.rule.beforeEndTurnRules
{
- public class NbCardPlay : EndTurnRule
+ public class NbCardPlay : BeforeEndTurnRule
{
- public NbCardPlay()
- {
- }
-
override public bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand)
{
- if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 2)
+ if (CurrentHand.Count == 0)
{
return true;
}
- return false;
+ if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 2)
+ {
+ return false;
+ }
+ return true;
}
}
diff --git a/TheGameExtreme/model/rule/endRule/VoidHand.cs b/TheGameExtreme/model/rule/endRule/VoidHand.cs
deleted file mode 100644
index 32601d8..0000000
--- a/TheGameExtreme/model/rule/endRule/VoidHand.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using System;
-using System.Collections.Generic;
-using TheGameExtreme.model.card;
-
-namespace TheGameExtreme.model.rule.endRule
-{
- public class VoidHand : EndTurnRule
- {
- public VoidHand()
- {
- }
-
- public override bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand)
- {
- throw new NotImplementedException();
- }
- }
-}
diff --git a/TheGameExtreme/model/rule/endTurnRules/CompleteHand.cs b/TheGameExtreme/model/rule/endTurnRules/CompleteHand.cs
new file mode 100644
index 0000000..6c73a77
--- /dev/null
+++ b/TheGameExtreme/model/rule/endTurnRules/CompleteHand.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using TheGameExtreme.model.card;
+
+namespace TheGameExtreme.model.rule.endTurnRules
+{
+ public class CompleteHand : EndTurnRule
+ {
+
+ public static readonly String REGLE_COMPLETEHAND = "Complete Hand";
+
+ public override bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand)
+ {
+ // Si carte qui fait piocher que d'un vérifier la bonne pioche (penser si elle vient d'être recouverte)
+ // Sinon
+ if (nbCardAtBeginOfTurn == CurrentCardPlayed.Count)
+ {
+ return true;
+ }
+ return false;
+ }
+
+ }
+}
diff --git a/TheGameExtreme/model/rule/endRule/EndGame.cs b/TheGameExtreme/model/rule/endTurnRules/EndGame.cs
similarity index 88%
rename from TheGameExtreme/model/rule/endRule/EndGame.cs
rename to TheGameExtreme/model/rule/endTurnRules/EndGame.cs
index 6bc870f..88e20f4 100644
--- a/TheGameExtreme/model/rule/endRule/EndGame.cs
+++ b/TheGameExtreme/model/rule/endTurnRules/EndGame.cs
@@ -3,11 +3,13 @@ using System.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.card.rapidCard;
-namespace TheGameExtreme.model.rule.endRule
+namespace TheGameExtreme.model.rule.endTurnRules
{
public class EndGame : EndTurnRule
{
+ public static readonly String REGLE_ENDGAME = "End Game";
+
public List> ListOrderedStacks { get; set; }
public EndGame(List> ListOrderedStacks)
@@ -45,15 +47,15 @@ namespace TheGameExtreme.model.rule.endRule
{
if (Equals(c.getName(), ThreeCard.CARD_THREE))
{
- return true;
+ return false;
}
}
}
else if (playableCard.Count < 2)
{
- return true;
+ return false;
}
- return false;
+ return true;
}
}
diff --git a/TheGameExtreme/model/rule/endRule/EndTurnRule.cs b/TheGameExtreme/model/rule/endTurnRules/EndTurnRule.cs
similarity index 73%
rename from TheGameExtreme/model/rule/endRule/EndTurnRule.cs
rename to TheGameExtreme/model/rule/endTurnRules/EndTurnRule.cs
index 11d35a1..d9670f7 100644
--- a/TheGameExtreme/model/rule/endRule/EndTurnRule.cs
+++ b/TheGameExtreme/model/rule/endTurnRules/EndTurnRule.cs
@@ -2,13 +2,10 @@
using System.Collections.Generic;
using TheGameExtreme.model.card;
-namespace TheGameExtreme.model.rule.endRule
+namespace TheGameExtreme.model.rule.endTurnRules
{
public abstract class EndTurnRule : Rule
{
- public EndTurnRule()
- {
- }
public abstract bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand);
diff --git a/TheGameExtreme/model/rule/endRule/VoidDeck.cs b/TheGameExtreme/model/rule/endTurnRules/VoidDeck.cs
similarity index 73%
rename from TheGameExtreme/model/rule/endRule/VoidDeck.cs
rename to TheGameExtreme/model/rule/endTurnRules/VoidDeck.cs
index 4e96ada..397af2d 100644
--- a/TheGameExtreme/model/rule/endRule/VoidDeck.cs
+++ b/TheGameExtreme/model/rule/endTurnRules/VoidDeck.cs
@@ -2,13 +2,12 @@
using System.Collections.Generic;
using TheGameExtreme.model.card;
-namespace TheGameExtreme.model.rule.endRule
+namespace TheGameExtreme.model.rule.endTurnRules
{
public class VoidDeck : EndTurnRule
{
- public VoidDeck()
- {
- }
+
+ public static readonly String REGLE_VOIDDECK = "Void Deck";
public override bool Test(List CurrentCardPlayed, int nbCardAtBeginOfTurn, List CurrentHand)
{
diff --git a/TheGameExtreme/model/rule/playRules/Ascendant.cs b/TheGameExtreme/model/rule/playRules/Ascendant.cs
index 209cab6..6069687 100644
--- a/TheGameExtreme/model/rule/playRules/Ascendant.cs
+++ b/TheGameExtreme/model/rule/playRules/Ascendant.cs
@@ -9,11 +9,7 @@ namespace TheGameExtreme.model.rule.playRules
public static readonly String REGLE_ASCENDANT = "Ascendant";
- public Ascendant()
- {
- }
-
- override public bool Test(Card playedCard, Stack stack, bool bottomUp)
+ override public bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand)
{
if (bottomUp && playedCard.Value > stack.Peek().Value)
{
diff --git a/TheGameExtreme/model/rule/playRules/Descendant.cs b/TheGameExtreme/model/rule/playRules/Descendant.cs
index 3a3d761..4ebcfbc 100644
--- a/TheGameExtreme/model/rule/playRules/Descendant.cs
+++ b/TheGameExtreme/model/rule/playRules/Descendant.cs
@@ -9,13 +9,9 @@ namespace TheGameExtreme.model.rule.playRules
public static readonly String REGLE_DESCENDANT = "Descendant";
- public Descendant()
+ override public bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand)
{
- }
-
- override public bool Test(Card playedCard, Stack stack, bool bottomUp)
- {
- if (bottomUp && playedCard.Value > stack.Peek().Value)
+ if (!bottomUp && playedCard.Value < stack.Peek().Value)
{
return true;
}
diff --git a/TheGameExtreme/model/rule/playRules/PasDeDix.cs b/TheGameExtreme/model/rule/playRules/PasDeDix.cs
index ca3a98d..699a6fa 100644
--- a/TheGameExtreme/model/rule/playRules/PasDeDix.cs
+++ b/TheGameExtreme/model/rule/playRules/PasDeDix.cs
@@ -9,11 +9,7 @@ namespace TheGameExtreme.model.rule.playRules
public static readonly String REGLE_PASDEDIX = "PasDeDix";
- public PasDeDix()
- {
- }
-
- override public bool Test(Card playedCard, Stack stack, bool bottomUp)
+ override public bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand)
{
if ((stack.Peek().Value + 10) == playedCard.Value || (stack.Peek().Value - 10) == playedCard.Value)
{
diff --git a/TheGameExtreme/model/rule/playRules/PlayRule.cs b/TheGameExtreme/model/rule/playRules/PlayRule.cs
index 50a393a..29289f2 100644
--- a/TheGameExtreme/model/rule/playRules/PlayRule.cs
+++ b/TheGameExtreme/model/rule/playRules/PlayRule.cs
@@ -6,11 +6,6 @@ namespace TheGameExtreme.model.rule.playRules
{
public abstract class PlayRule : Rule
{
-
- public PlayRule()
- {
- }
-
- public abstract bool Test(Card playedCard, Stack stack, bool bottomUp);
+ public abstract bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand);
}
}
diff --git a/TheGameExtreme/model/rule/playRules/VoidHand.cs b/TheGameExtreme/model/rule/playRules/VoidHand.cs
new file mode 100644
index 0000000..88a1cc2
--- /dev/null
+++ b/TheGameExtreme/model/rule/playRules/VoidHand.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using TheGameExtreme.model.card;
+
+namespace TheGameExtreme.model.rule.playRules
+{
+ public class VoidHand : PlayRule
+ {
+
+ public static readonly String REGLE_VOIDHAND = "Void Hand";
+
+ override public bool Test(Card playedCard, Stack stack, bool bottomUp, List CurrentHand)
+ {
+ if (CurrentHand.Count == 0)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ }
+}
diff --git a/TheGameExtreme/view/MainPage.xaml b/TheGameExtreme/view/MainPage.xaml
index 9c74626..8c1858a 100644
--- a/TheGameExtreme/view/MainPage.xaml
+++ b/TheGameExtreme/view/MainPage.xaml
@@ -1,4 +1,5 @@
+