Continuation de l'ea transformation du model pour intégration des nouvelles règles

master
cldupland 6 years ago
parent 62cb2e102b
commit b00eb55fd0

@ -2960,7 +2960,7 @@
"_parent": { "_parent": {
"$ref": "AAAAAAFuOxVwFhhvcas=" "$ref": "AAAAAAFuOxVwFhhvcas="
}, },
"font": "Arial;13;1", "font": "Arial;13;3",
"left": 2093, "left": 2093,
"top": 1319, "top": 1319,
"width": 149.931640625, "width": 149.931640625,
@ -6153,7 +6153,8 @@
} }
] ]
} }
] ],
"isAbstract": true
}, },
{ {
"_type": "UMLClass", "_type": "UMLClass",

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.rule; using TheGameExtreme.model.rule;
using TheGameExtreme.model.rule.endRule; using TheGameExtreme.model.rule.endRule;
using TheGameExtreme.model.rule.playRules; using TheGameExtreme.model.rule.playRules;
@ -33,11 +34,14 @@ namespace TheGameExtreme.model
commonRule?.Add(rule); commonRule?.Add(rule);
} }
public bool testPlayRule() public bool checkPlayRule(Card card, Stack<Card> orderedStack, bool bottomUp)
{ {
foreach(PlayRule rule in playRule) foreach(PlayRule rule in playRule)
{ {
if (!rule.Test(card, orderedStack, bottomUp)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter.
{
return false;
}
} }
foreach (Rule rule in commonRule) foreach (Rule rule in commonRule)
{ {
@ -46,11 +50,14 @@ namespace TheGameExtreme.model
return true; return true;
} }
public bool testEndTurnRule() public bool checkEndTurnRule()
{ {
foreach (EndTurnRule rule in endTurnRule) foreach (EndTurnRule rule in endTurnRule)
{ {
if (!rule.Test()) // Gestion des messages pour savoir qu'elle règle n'est pas respecter.
{
return false;
}
} }
foreach (Rule rule in commonRule) foreach (Rule rule in commonRule)
{ {

@ -3,6 +3,8 @@ using System.Collections.Generic;
using TheGameExtreme.model.card; using TheGameExtreme.model.card;
using TheGameExtreme.model.deck; using TheGameExtreme.model.deck;
using TheGameExtreme.model.@event; using TheGameExtreme.model.@event;
using TheGameExtreme.model.rule.endRule;
using TheGameExtreme.model.rule.playRules;
namespace TheGameExtreme.model.manager namespace TheGameExtreme.model.manager
{ {
@ -24,6 +26,8 @@ namespace TheGameExtreme.model.manager
protected List<Card> CurrentCardPlayed = new List<Card>(); protected List<Card> CurrentCardPlayed = new List<Card>();
protected string langue; protected string langue;
protected GameMode gameMode;
protected GameManager(int nbPlayer, List<String> players) protected GameManager(int nbPlayer, List<String> players)
{ {
@ -51,6 +55,14 @@ namespace TheGameExtreme.model.manager
} }
} }
gameMode = new GameMode();
gameMode.addPlayRule(new Ascendant());
gameMode.addPlayRule(new Descendant());
gameMode.addPlayRule(new PasDeDix());
gameMode.addEndTurnRule(new EndGame(ListOrderedStacks));
gameMode.addEndTurnRule(new VoidDeck());
gameMode.addEndTurnRule(new VoidHand());
createDeck(); createDeck();
defineNbMaxCard(); defineNbMaxCard();
distribueCard(); distribueCard();
@ -134,18 +146,36 @@ namespace TheGameExtreme.model.manager
protected void testPossibility(Card card, Stack<Card> orderedStack, bool bottomUp) protected void testPossibility(Card card, Stack<Card> orderedStack, bool bottomUp)
{ {
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))
{ {
Card oldCard = orderedStack.Peek(); Card oldCard = orderedStack.Peek();
playerList[currentIndexPlayer].joue(card); playerList[currentIndexPlayer].joue(card);
CurrentCardPlayed.Add(card); CurrentCardPlayed.Add(card);
orderedStack.Push(card); orderedStack.Push(card);
OnTopRangeChanged(new TopRangeChangedEventArgs(card, oldCard, ListOrderedStacks.IndexOf(orderedStack))); OnTopRangeChanged(new TopRangeChangedEventArgs(card, oldCard, ListOrderedStacks.IndexOf(orderedStack)));
if (CurrentHand.Count == 0)
{
endTurn(); // Presque bon, oublie juste d'afficher les nouvelles cartes
}
} }
else else
{ {
throw new Exception(AppRessource.StrWrongStack); 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)
//{
// Card oldCard = orderedStack.Peek();
// playerList[currentIndexPlayer].joue(card);
// CurrentCardPlayed.Add(card);
// orderedStack.Push(card);
// OnTopRangeChanged(new TopRangeChangedEventArgs(card, oldCard, ListOrderedStacks.IndexOf(orderedStack)));
//}
//else
//{
// throw new Exception(AppRessource.StrWrongStack);
//}
} }
protected internal void OnTopRangeChanged(TopRangeChangedEventArgs args) protected internal void OnTopRangeChanged(TopRangeChangedEventArgs args)

@ -17,9 +17,12 @@ namespace TheGameExtreme.model.manager
public override bool endTurn() public override bool endTurn()
{ {
verifyNbCardPlay();
//if (gameMode.checkEndTurnRule())
//{
verifyNbCardPlay();
pioche(); pioche();
//}
currentIndexPlayer += 1; currentIndexPlayer += 1;
if (currentIndexPlayer == playerList.Count) if (currentIndexPlayer == playerList.Count)

@ -6,5 +6,33 @@ namespace TheGameExtreme.model.rule
public RapidEffect() public RapidEffect()
{ {
} }
// Checker les cartes du haut de pile et celle joué.
//protected bool effectLose()
//{
// foreach (Stack<Card> orderedStack in ListOrderedStacks)
// {
// if (Equals(orderedStack.Peek().getName(), EndGameCard.CARD_ENDGAME))
// {
// return true;
// }
// }
// return false;
//}
//foreach (Card cardPlayed in CurrentCardPlayed)
//{
// if (Equals(cardPlayed.GetType(), ThreeCard.CARD_THREE))
// {
// if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 3)
// {
// return true;
// }
// }
//}
} }
} }

@ -1,11 +1,60 @@
using System; using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.card.rapidCard;
namespace TheGameExtreme.model.rule.endRule namespace TheGameExtreme.model.rule.endRule
{ {
public class EndGame : EndTurnRule public class EndGame : EndTurnRule
{ {
public EndGame()
public List<Stack<Card>> ListOrderedStacks { get; set; }
public EndGame(List<Stack<Card>> ListOrderedStacks)
{ {
this.ListOrderedStacks = ListOrderedStacks;
}
public override bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand)
{
if (CurrentHand.Count != 0)
{
List<Card> playableCard = new List<Card>();
tryToFindSoluce(playableCard, CurrentHand);
return testEndGame(playableCard);
}
return false;
}
protected void tryToFindSoluce(List<Card> playableCard, List<Card> CurrentHand)
{
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 bool testEndGame(List<Card> playableCard)
{
if (playableCard.Count == 2)
{
foreach (Card c in playableCard)
{
if (Equals(c.getName(), ThreeCard.CARD_THREE))
{
return true;
}
}
}
else if (playableCard.Count < 2)
{
return true;
}
return false;
}
} }
} }

@ -1,4 +1,6 @@
using System; using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.endRule namespace TheGameExtreme.model.rule.endRule
{ {
@ -7,5 +9,8 @@ namespace TheGameExtreme.model.rule.endRule
public EndTurnRule() public EndTurnRule()
{ {
} }
public abstract bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand);
} }
} }

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.card.rapidCard;
namespace TheGameExtreme.model.rule.endRule
{
public class NbCardPlay : EndTurnRule
{
public NbCardPlay()
{
}
override public bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand)
{
if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 2)
{
return true;
}
return false;
}
}
}

@ -1,4 +1,7 @@
using System; using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.endRule namespace TheGameExtreme.model.rule.endRule
{ {
public class VoidDeck : EndTurnRule public class VoidDeck : EndTurnRule
@ -6,5 +9,10 @@ namespace TheGameExtreme.model.rule.endRule
public VoidDeck() public VoidDeck()
{ {
} }
public override bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand)
{
throw new NotImplementedException();
}
} }
} }

@ -1,4 +1,7 @@
using System; using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.endRule namespace TheGameExtreme.model.rule.endRule
{ {
public class VoidHand : EndTurnRule public class VoidHand : EndTurnRule
@ -6,5 +9,10 @@ namespace TheGameExtreme.model.rule.endRule
public VoidHand() public VoidHand()
{ {
} }
public override bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand)
{
throw new NotImplementedException();
}
} }
} }

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using TheGameExtreme.model.card; using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.playRules namespace TheGameExtreme.model.rule.playRules
@ -12,9 +13,9 @@ namespace TheGameExtreme.model.rule.playRules
{ {
} }
public bool Test(Card upStack, Card playedCard, bool bottomUp) override public bool Test(Card playedCard, Stack<Card> stack, bool bottomUp)
{ {
if (bottomUp && playedCard.Value > upStack.Value) if (bottomUp && playedCard.Value > stack.Peek().Value)
{ {
return true; return true;
} }

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using TheGameExtreme.model.card; using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.playRules namespace TheGameExtreme.model.rule.playRules
@ -12,9 +13,9 @@ namespace TheGameExtreme.model.rule.playRules
{ {
} }
public bool Test(Card upStack, Card playedCard, bool bottomUp) override public bool Test(Card playedCard, Stack<Card> stack, bool bottomUp)
{ {
if (bottomUp && playedCard.Value > upStack.Value) if (bottomUp && playedCard.Value > stack.Peek().Value)
{ {
return true; return true;
} }

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using TheGameExtreme.model.card; using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.playRules namespace TheGameExtreme.model.rule.playRules
@ -12,9 +13,9 @@ namespace TheGameExtreme.model.rule.playRules
{ {
} }
public bool Test(Card upStack, Card playedCard) override public bool Test(Card playedCard, Stack<Card> stack, bool bottomUp)
{ {
if ((upStack.Value + 10) == playedCard.Value || (upStack.Value - 10) == playedCard.Value) if ((stack.Peek().Value + 10) == playedCard.Value || (stack.Peek().Value - 10) == playedCard.Value)
{ {
return true; return true;
} }

@ -1,11 +1,16 @@
using System; using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.playRules namespace TheGameExtreme.model.rule.playRules
{ {
public class PlayRule : Rule public abstract class PlayRule : Rule
{ {
public PlayRule() public PlayRule()
{ {
} }
public abstract bool Test(Card playedCard, Stack<Card> stack, bool bottomUp);
} }
} }

Loading…
Cancel
Save