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
{
protected Piles ListOrderedStacks { get; set; }
public String ErrorMessage { get; set; }
protected GameAction(Piles listOrderedStacks)
{

@ -15,6 +15,7 @@ namespace TheGameExtreme.model.gameActions.classic
protected int nbCardAtBeginOfTurn = 7;
protected Deck deck;
private int nbMaxCard;
public String Message { get; set; }
#region
@ -96,19 +97,26 @@ namespace TheGameExtreme.model.gameActions.classic
public void pioche(List<Card> currentHand, Player player)
{
Message = null;
((Piocher)gameActions[0]).pioche(currentHand, deck, player);
}
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))
{
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)
{
Message = null;
if (((TerminerSonTour)gameActions[2]).end(currentHand, nbCardAtBeginOfTurn, CurrentCardPlayed))
{
pioche(currentHand, player);
@ -120,118 +128,46 @@ namespace TheGameExtreme.model.gameActions.classic
}
else
{
Message = ((TerminerSonTour)gameActions[2]).ErrorMessage;
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()
//{
// 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);
// }
#region Decaler dans un GameAction
// 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 isEndGame(List<Card> currentHand)
{
if (currentHand.Count != 0)
{
List<Card> playableCard = new List<Card>();
tryToFindSoluce(playableCard, currentHand);
return testEndGame(playableCard);
}
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)
// {
protected void tryToFindSoluce(List<Card> playableCard, List<Card> currentHand)
{
currentHand.ForEach(card =>
{
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)
{
playableCard.Add(card);
}
});
}
// }
// return true;
// }
protected bool testEndGame(List<Card> playableCard)
{
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)
// {
// 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 false;
}
// }
// return true;
// }
#endregion
}
}

@ -9,6 +9,7 @@ namespace TheGameExtreme.model.gameActions.classic
public Card OldCard { get; set; }
public JouerUneCarte(Piles ListOrderedStacks) : base(ListOrderedStacks)
{
}
@ -23,16 +24,18 @@ namespace TheGameExtreme.model.gameActions.classic
{
if (orderedStackSelected < 2)
{
ErrorMessage = null;
return rule(card, ListOrderedStacks.getStack(orderedStackSelected), true, player, CurrentCardPlayed);
}
else
{
ErrorMessage = null;
return rule(card, ListOrderedStacks.getStack(orderedStackSelected), false, player, CurrentCardPlayed);
}
}
else
{
throw new Exception(AppRessource.StrCantGetStack);
ErrorMessage = AppRessource.StrCantGetStack;
}
}
}
@ -53,13 +56,9 @@ namespace TheGameExtreme.model.gameActions.classic
}
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 TerminerSonTour(Piles ListOrderedStacks) : base(ListOrderedStacks)
{
}
@ -19,7 +21,12 @@ namespace TheGameExtreme.model.gameActions.classic
{ // Ne pas oublié de gérer les ThreeCard
return Test(CurrentHand);
}
return false;
else
{
ErrorMessage = AppRessource.StrCardPlayedLessThanTwo;
return false;
}
}
public bool Test(List<Card> CurrentHand)

@ -2,13 +2,9 @@
using System.Collections.Generic;
using System.ComponentModel;
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;
namespace TheGameExtreme.model.manager
{
@ -74,7 +70,7 @@ namespace TheGameExtreme.model.manager
protected GameManager(List<string> playersNames, GameMode gameMode)
{
nbPlayer = players.Count;
nbPlayer = playersNames.Count;
playersNames.ForEach(playerName => players.Add(new Player(playerName)));
this.gameMode = gameMode;
@ -89,12 +85,34 @@ namespace TheGameExtreme.model.manager
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()
{
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.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.card.rapidCard;
using TheGameExtreme.model.@event;
using TheGameExtreme.model.gameActions.classic;
namespace TheGameExtreme.model.manager

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

Loading…
Cancel
Save