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

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.rule;
using TheGameExtreme.model.rule.endRule;
using TheGameExtreme.model.rule.playRules;
@ -33,11 +34,14 @@ namespace TheGameExtreme.model
commonRule?.Add(rule);
}
public bool testPlayRule()
public bool checkPlayRule(Card card, Stack<Card> orderedStack, bool bottomUp)
{
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)
{
@ -46,11 +50,14 @@ namespace TheGameExtreme.model
return true;
}
public bool testEndTurnRule()
public bool checkEndTurnRule()
{
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)
{

@ -3,6 +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.playRules;
namespace TheGameExtreme.model.manager
{
@ -24,6 +26,8 @@ namespace TheGameExtreme.model.manager
protected List<Card> CurrentCardPlayed = new List<Card>();
protected string langue;
protected GameMode gameMode;
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();
defineNbMaxCard();
distribueCard();
@ -134,18 +146,36 @@ namespace TheGameExtreme.model.manager
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();
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)
//{
// 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)

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

@ -6,5 +6,33 @@ namespace TheGameExtreme.model.rule
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.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.card.rapidCard;
namespace TheGameExtreme.model.rule.endRule
{
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.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.endRule
{
@ -7,5 +9,8 @@ namespace TheGameExtreme.model.rule.endRule
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.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.endRule
{
public class VoidDeck : EndTurnRule
@ -6,5 +9,10 @@ namespace TheGameExtreme.model.rule.endRule
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.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.endRule
{
public class VoidHand : EndTurnRule
@ -6,5 +9,10 @@ namespace TheGameExtreme.model.rule.endRule
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.Collections.Generic;
using TheGameExtreme.model.card;
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;
}

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
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;
}

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
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;
}

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

Loading…
Cancel
Save