Debut de la reconstruction du model

master
cldupland 6 years ago
parent e7c0991826
commit 8092190f3c

@ -19,6 +19,9 @@
<Folder Include="model\Card\rapidCard\" />
<Folder Include="model\rule\endTurnRules\" />
<Folder Include="model\rule\beforeEndTurnRules\" />
<Folder Include="model\gameActions\" />
<Folder Include="model\gameActions\extreme\" />
<Folder Include="model\gameActions\classic\" />
</ItemGroup>
<ItemGroup>
<Compile Remove="model\effect\StopColm.cs" />

@ -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<Rule> playRule = new List<Rule>();
private List<Rule> beforeEndTurnRule = new List<Rule>();
private List<Rule> endTurnRule = new List<Rule>();
private List<Rule> commonRule = new List<Rule>();
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<Card> orderedStack, bool bottomUp, List<Card> 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<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> 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<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> 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;
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.gameActions
{
public class GameAction
{
public abstract GameAction()
{
}
}
}

@ -0,0 +1,115 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.gameActions;
namespace TheGameExtreme.model.gameActions.classic
{
public class GameMode
{
protected List<GameAction> gameActions;
public GameMode()
{
gameActions = new List<GameAction>();
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<Rule> playRule = new List<Rule>();
// private List<Rule> beforeEndTurnRule = new List<Rule>();
// private List<Rule> endTurnRule = new List<Rule>();
// private List<Rule> commonRule = new List<Rule>();
// 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<Card> orderedStack, bool bottomUp, List<Card> 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<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> 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<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> 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;
// }
//}
}

@ -0,0 +1,15 @@
using System;
namespace TheGameExtreme.model.gameActions.classic
{
public class JouerUneCarte : GameAction
{
public JouerUneCarte()
{
}
public void play()
{
}
}
}

@ -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()
{
}
}
}

@ -0,0 +1,15 @@
using System;
namespace TheGameExtreme.model.gameActions.classic
{
public class TerminerSonTour : GameAction
{
public TerminerSonTour()
{
}
public void end()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.gameActions.extreme
{
public class ExtremeJouerUneCarte : JouerUneCarte
{
public ExtremeJouerUneCarte()
{
}
}
}

@ -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());
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.gameActions.extreme
{
public class ExtremePiocher : Piocher
{
public ExtremePiocher()
{
}
}
}

@ -0,0 +1,10 @@
using System;
namespace TheGameExtreme.model.gameActions.extreme
{
public class ExtremeTerminerSonTour : TerminerSonTour
{
public ExtremeTerminerSonTour()
{
}
}
}

@ -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<Card> CurrentCardPlayed = new List<Card>();
protected string langue;
protected GameMode gameMode;
protected GameManager(int nbPlayer, List<String> 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<Card> 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<Card> playableCard);

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

Loading…
Cancel
Save