Avancement sur les messages d'erreur de fin de tour et la fin de tour

master
cldupland 6 years ago
parent 2eaa2125a7
commit 93dde67e78

@ -7,6 +7,7 @@ namespace TheGameExtreme.model.gameActions
public abstract class GameAction public abstract class GameAction
{ {
protected Piles ListOrderedStacks { get; set; } protected Piles ListOrderedStacks { get; set; }
public String ErrorMessage { get; set; }
protected GameAction(Piles listOrderedStacks) protected GameAction(Piles listOrderedStacks)
{ {

@ -15,6 +15,7 @@ namespace TheGameExtreme.model.gameActions.classic
protected int nbCardAtBeginOfTurn = 7; protected int nbCardAtBeginOfTurn = 7;
protected Deck deck; protected Deck deck;
private int nbMaxCard; private int nbMaxCard;
public String Message { get; set; }
#region #region
@ -96,19 +97,26 @@ namespace TheGameExtreme.model.gameActions.classic
public void pioche(List<Card> currentHand, Player player) public void pioche(List<Card> currentHand, Player player)
{ {
Message = null;
((Piocher)gameActions[0]).pioche(currentHand, deck, player); ((Piocher)gameActions[0]).pioche(currentHand, deck, player);
} }
public void playCard(int valueCard, List<Card> currentHand, int orderedStackSelected, Player player, List<Card> CurrentCardPlayed) public void playCard(int valueCard, List<Card> currentHand, int orderedStackSelected, Player player, List<Card> CurrentCardPlayed)
{ {
Message = null;
if (((JouerUneCarte)gameActions[1]).play(valueCard, currentHand, orderedStackSelected, player, CurrentCardPlayed)) if (((JouerUneCarte)gameActions[1]).play(valueCard, currentHand, orderedStackSelected, player, CurrentCardPlayed))
{ {
OnTopRangeChanged(new TopRangeChangedEventArgs(piles.getStack(orderedStackSelected).Peek(), ((JouerUneCarte)gameActions[1]).OldCard, orderedStackSelected)); OnTopRangeChanged(new TopRangeChangedEventArgs(piles.getStack(orderedStackSelected).Peek(), ((JouerUneCarte)gameActions[1]).OldCard, orderedStackSelected));
} }
else
{
Message = ((JouerUneCarte)gameActions[1]).ErrorMessage;
}
} }
public bool endTurn(List<Card> currentHand, List<Card> CurrentCardPlayed, Player player) public bool endTurn(List<Card> currentHand, List<Card> CurrentCardPlayed, Player player)
{ {
Message = null;
if (((TerminerSonTour)gameActions[2]).end(currentHand, nbCardAtBeginOfTurn, CurrentCardPlayed)) if (((TerminerSonTour)gameActions[2]).end(currentHand, nbCardAtBeginOfTurn, CurrentCardPlayed))
{ {
pioche(currentHand, player); pioche(currentHand, player);
@ -120,118 +128,46 @@ namespace TheGameExtreme.model.gameActions.classic
} }
else else
{ {
Message = ((TerminerSonTour)gameActions[2]).ErrorMessage;
return true; return true;
} }
//if (isEndGame()) // Ajouter le score en calculant les cartes restantes dans la pile et dans les mains des joueurs
//{
// displayWinner();
// return true;
//}
//else
//{
// return true;
//}
} }
//protected void displayWinner() #region Decaler dans un GameAction
//{
// if (win)
// {
// EndMessage = "Le jeu est terminé!\n Bravo vous avez gagné!";
// EndMessage = AppRessource.StrWin;
// }
//}
// 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) public bool isEndGame(List<Card> currentHand)
// { {
// beforeEndTurnRule?.Add(rule); if (currentHand.Count != 0)
// } {
List<Card> playableCard = new List<Card>();
// public void addCommonRule(Rule rule) tryToFindSoluce(playableCard, currentHand);
// { return testEndGame(playableCard);
// // Vérifier que se ne soit ni une PlayRule, ni une EndTurnRule ? }
// commonRule?.Add(rule); return false;
// } }
// 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) protected void tryToFindSoluce(List<Card> playableCard, List<Card> currentHand)
// { {
// foreach (BeforeEndTurnRule rule in beforeEndTurnRule) currentHand.ForEach(card =>
// { {
// if (!rule.Test(CurrentCardPlayed, nbCardAtBeginOfTurn, CurrentHand)) // Gestion des messages pour savoir qu'elle règle n'est pas respecter. if (card.Value > piles.getStack(0).Peek().Value || card.Value > piles.getStack(1).Peek().Value || card.Value < piles.getStack(2).Peek().Value || card.Value < piles.getStack(3).Peek().Value)
// { {
// return false; playableCard.Add(card);
// } }
// } });
// foreach (Rule rule in commonRule) }
// {
// } protected bool testEndGame(List<Card> playableCard)
// return true; {
// } if (playableCard.Count < 2)
{
Message = "Le jeu est terminé!\n Désolé, vous avez perdu... Essayez encore!";
return true;
}
// public bool checkEndTurnRule(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand) return false;
// { }
// 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)
// {
// } #endregion
// return true;
// }
} }
} }

@ -9,6 +9,7 @@ namespace TheGameExtreme.model.gameActions.classic
public Card OldCard { get; set; } public Card OldCard { get; set; }
public JouerUneCarte(Piles ListOrderedStacks) : base(ListOrderedStacks) public JouerUneCarte(Piles ListOrderedStacks) : base(ListOrderedStacks)
{ {
} }
@ -23,16 +24,18 @@ namespace TheGameExtreme.model.gameActions.classic
{ {
if (orderedStackSelected < 2) if (orderedStackSelected < 2)
{ {
ErrorMessage = null;
return rule(card, ListOrderedStacks.getStack(orderedStackSelected), true, player, CurrentCardPlayed); return rule(card, ListOrderedStacks.getStack(orderedStackSelected), true, player, CurrentCardPlayed);
} }
else else
{ {
ErrorMessage = null;
return rule(card, ListOrderedStacks.getStack(orderedStackSelected), false, player, CurrentCardPlayed); return rule(card, ListOrderedStacks.getStack(orderedStackSelected), false, player, CurrentCardPlayed);
} }
} }
else else
{ {
throw new Exception(AppRessource.StrCantGetStack); ErrorMessage = AppRessource.StrCantGetStack;
} }
} }
} }
@ -53,13 +56,9 @@ namespace TheGameExtreme.model.gameActions.classic
} }
else else
{ {
throw new Exception(AppRessource.StrWrongStack); ErrorMessage = AppRessource.StrWrongStack;
return false;
} }
//if (EndMessage != null)
//{
// //throw new Exception("Le jeu est fini! Veuillez lancer une nouvelle partie!");
// throw new Exception(AppRessource.StrEndOfGame);
//}
} }
} }
} }

@ -7,6 +7,8 @@ namespace TheGameExtreme.model.gameActions.classic
{ {
public class TerminerSonTour : GameAction public class TerminerSonTour : GameAction
{ {
public TerminerSonTour(Piles ListOrderedStacks) : base(ListOrderedStacks) public TerminerSonTour(Piles ListOrderedStacks) : base(ListOrderedStacks)
{ {
} }
@ -19,9 +21,14 @@ namespace TheGameExtreme.model.gameActions.classic
{ // Ne pas oublié de gérer les ThreeCard { // Ne pas oublié de gérer les ThreeCard
return Test(CurrentHand); return Test(CurrentHand);
} }
else
{
ErrorMessage = AppRessource.StrCardPlayedLessThanTwo;
return false; return false;
} }
}
public bool Test(List<Card> CurrentHand) public bool Test(List<Card> CurrentHand)
{ {
if (CurrentHand.Count != 0) if (CurrentHand.Count != 0)

@ -2,13 +2,9 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using TheGameExtreme.model.card; using TheGameExtreme.model.card;
using TheGameExtreme.model.deck;
using TheGameExtreme.model.@event; using TheGameExtreme.model.@event;
using TheGameExtreme.model.gameActions; using TheGameExtreme.model.gameActions;
using TheGameExtreme.model.gameActions.classic; using TheGameExtreme.model.gameActions.classic;
using TheGameExtreme.model.rule.beforeEndTurnRules;
using TheGameExtreme.model.rule.endTurnRules;
using TheGameExtreme.model.rule.playRules;
namespace TheGameExtreme.model.manager namespace TheGameExtreme.model.manager
{ {
@ -74,7 +70,7 @@ namespace TheGameExtreme.model.manager
protected GameManager(List<string> playersNames, GameMode gameMode) protected GameManager(List<string> playersNames, GameMode gameMode)
{ {
nbPlayer = players.Count; nbPlayer = playersNames.Count;
playersNames.ForEach(playerName => players.Add(new Player(playerName))); playersNames.ForEach(playerName => players.Add(new Player(playerName)));
this.gameMode = gameMode; this.gameMode = gameMode;
@ -89,12 +85,34 @@ namespace TheGameExtreme.model.manager
public void joue(int valueCard, int orderedStackSelected) public void joue(int valueCard, int orderedStackSelected)
{ {
gameMode.playCard(valueCard, currentHand, orderedStackSelected, players[0], CurrentCardPlayed); // Mettre le joueur actif gameMode.playCard(valueCard, currentHand, orderedStackSelected, players[currentIndexPlayer], CurrentCardPlayed); // Mettre le joueur actif
EndMessage = gameMode.Message;
} }
public bool endTurn() public bool endTurn()
{ {
return gameMode.endTurn(currentHand, CurrentCardPlayed, players[0]); if(gameMode.endTurn(currentHand, CurrentCardPlayed, players[currentIndexPlayer]))
{
EndMessage = gameMode.Message;
if (isEndGame())
{
EndMessage = gameMode.Message;
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
private bool isEndGame()
{
return gameMode.isEndGame(currentHand);
} }

@ -1,8 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.card.rapidCard;
using TheGameExtreme.model.@event;
using TheGameExtreme.model.gameActions.classic; using TheGameExtreme.model.gameActions.classic;
namespace TheGameExtreme.model.manager namespace TheGameExtreme.model.manager

@ -82,21 +82,25 @@ namespace TheGameExtreme.viewmodel
*/ */
public bool played(int numStack, int valueCard) public bool played(int numStack, int valueCard)
{ {
try //try
{ //{
gameManager.joue(valueCard, numStack); gameManager.joue(valueCard, numStack);
if (gameManager.EndMessage != null)
{
Alert = gameManager.EndMessage; Alert = gameManager.EndMessage;
return true;
} //if (gameManager.EndMessage != null)
} //{
catch (Exception e) // Alert = gameManager.EndMessage;
{ // return true;
// Faire un toast //}
Alert = e.Message;
}
return false; return false;
//}
//catch (Exception e)
//{
// // Faire un toast
// Alert = e.Message;
//}
//return false;
@ -114,19 +118,11 @@ namespace TheGameExtreme.viewmodel
} }
public bool endTurn() public bool endTurn()
{
try
{ {
bool isEnd = gameManager.endTurn(); bool isEnd = gameManager.endTurn();
Alert = gameManager.EndMessage; Alert = gameManager.EndMessage;
return isEnd; return isEnd;
} }
catch (Exception e)
{
Alert = e.Message;
return false;
}
}

Loading…
Cancel
Save