Correction d'erreur

master
cldupland 5 years ago
parent cdc2bef24a
commit c34206e528

@ -16,6 +16,7 @@ namespace TheGameExtreme.model.gameActions.classic
protected Deck deck; protected Deck deck;
protected int nbMaxCard; protected int nbMaxCard;
public string Message { get; set; } public string Message { get; set; }
protected bool end;
#region #region
@ -136,20 +137,12 @@ namespace TheGameExtreme.model.gameActions.classic
public bool endTurn(List<Card> currentHand, List<Card> CurrentCardPlayed, Player player) public bool endTurn(List<Card> currentHand, List<Card> CurrentCardPlayed, Player player)
{ {
Message = null; Message = null;
if (((TerminerSonTour)gameActions[2]).end(currentHand, NbCardAtBeginOfTurn, CurrentCardPlayed)) if (((TerminerSonTour)gameActions[2]).end(currentHand, CurrentCardPlayed))
{ {
pioche(currentHand, player); pioche(currentHand, player);
CurrentCardPlayed.Clear(); CurrentCardPlayed.Clear();
OnPlayerChanged(null); OnPlayerChanged(null);
if (((TerminerSonTour)gameActions[2]).Test(currentHand)) return end;
{
return false;
}
else
{
OnEndGame(new EventArgs());
return true;
}
} }
else else
{ {
@ -158,6 +151,19 @@ namespace TheGameExtreme.model.gameActions.classic
} }
} }
public void TestEndGame(List<Card> currentHand)
{
if (((TerminerSonTour)gameActions[2]).Test(currentHand))
{
end = false;
}
else
{
OnEndGame(new EventArgs());
end = true;
}
}
public string getScore() public string getScore()
{ {
return deck.size().ToString(); return deck.size().ToString();

@ -21,18 +21,24 @@ namespace TheGameExtreme.model.gameActions.classic
{ {
if (valueCard.CompareTo(card.Value) == 0) if (valueCard.CompareTo(card.Value) == 0)
{ {
if (orderedStackSelected >= 0 && orderedStackSelected < 4) if (orderedStackSelected >= 0 && orderedStackSelected < ListOrderedStacks.Size)
{ {
if (orderedStackSelected < 2) bool success;
if (orderedStackSelected < (ListOrderedStacks.Size * 0.5))
{ {
ErrorMessage = null; ErrorMessage = null;
return rule(card, ListOrderedStacks.getStack(orderedStackSelected), true, player, CurrentCardPlayed); success = rule(card, ListOrderedStacks.getStack(orderedStackSelected), true, player, CurrentCardPlayed);
} }
else else
{ {
ErrorMessage = null; ErrorMessage = null;
return rule(card, ListOrderedStacks.getStack(orderedStackSelected), false, player, CurrentCardPlayed); success = rule(card, ListOrderedStacks.getStack(orderedStackSelected), false, player, CurrentCardPlayed);
} }
if (success)
{
CurrentHand.Remove(card);
}
return success;
} }
else else
{ {

@ -13,7 +13,7 @@ namespace TheGameExtreme.model.gameActions.classic
{ {
} }
public bool end(List<Card> CurrentHand, int nbCardAtBeginOfTurn, List<Card> CurrentCardPlayed) public bool end(List<Card> CurrentHand, List<Card> CurrentCardPlayed)
{ {
// Si carte qui fait piocher que d'un, vérifier la bonne pioche (penser si elle vient d'être recouverte) // Si carte qui fait piocher que d'un, vérifier la bonne pioche (penser si elle vient d'être recouverte)
// Sinon // Sinon
@ -44,9 +44,22 @@ namespace TheGameExtreme.model.gameActions.classic
{ {
CurrentHand.ForEach(card => CurrentHand.ForEach(card =>
{ {
if (card.Value > ListOrderedStacks.getStack(0).Peek().Value || card.Value > ListOrderedStacks.getStack(1).Peek().Value || card.Value < ListOrderedStacks.getStack(2).Peek().Value || card.Value < ListOrderedStacks.getStack(3).Peek().Value) for (int i = 0; i < ListOrderedStacks.Size; i++)
{ {
playableCard.Add(card); if (i < (ListOrderedStacks.Size * 0.5))
{
if (card.Value > ListOrderedStacks.getStack(i).Peek().Value)
{
playableCard.Add(card);
}
}
else
{
if (card.Value < ListOrderedStacks.getStack(i).Peek().Value)
{
playableCard.Add(card);
}
}
} }
}); });
} }

@ -18,6 +18,7 @@ namespace TheGameExtreme.model.manager
public string EndMessage { get; set; } public string EndMessage { get; set; }
protected int currentIndexPlayer; protected int currentIndexPlayer;
protected List<Card> currentHand; protected List<Card> currentHand;
protected bool win;
public List<Card> CurrentHand public List<Card> CurrentHand
{ {
get { return currentHand; } get { return currentHand; }
@ -60,8 +61,17 @@ namespace TheGameExtreme.model.manager
CurrentHand = parametreur.players[currentIndexPlayer].getCardList(); CurrentHand = parametreur.players[currentIndexPlayer].getCardList();
i++; // Garde fou i++; // Garde fou
} }
PlayerChanged?.Invoke(source, new PlayerChangedEventArgs(CurrentHand, parametreur.players[currentIndexPlayer].Pseudo)); if (i == 5)
parametreur.GameMode.NbCardAtBeginOfTurn = CurrentHand.Count; {
EndMessage = AppRessource.StrWin;
win = true;
}
else
{
parametreur.GameMode.TestEndGame(CurrentHand);
PlayerChanged?.Invoke(source, new PlayerChangedEventArgs(CurrentHand, parametreur.players[currentIndexPlayer].Pseudo));
parametreur.GameMode.NbCardAtBeginOfTurn = CurrentHand.Count;
}
} }
#endregion #endregion
@ -100,6 +110,11 @@ namespace TheGameExtreme.model.manager
else else
{ {
EndMessage = parametreur.GameMode.Message; EndMessage = parametreur.GameMode.Message;
if (win)
{
OnEndGame(this, new EventArgs());
return true;
}
return false; return false;
} }
} }

@ -8,9 +8,11 @@ namespace TheGameExtreme.model.piles
{ {
protected List<Stack<Card>> ListOrderedStacks { get; set; } = new List<Stack<Card>>(); protected List<Stack<Card>> ListOrderedStacks { get; set; } = new List<Stack<Card>>();
public int Size { get; set; }
public Piles(int nbPile) public Piles(int nbPile)
{ {
Size = nbPile;
for (int i = 0; i < nbPile; i++) for (int i = 0; i < nbPile; i++)
{ {
ListOrderedStacks.Add(new Stack<Card>()); ListOrderedStacks.Add(new Stack<Card>());

@ -76,7 +76,8 @@
Grid.Column="2" Grid.Column="2"
x:Name="gameOption"> x:Name="gameOption">
<Button <Button
Text="End Turn" x:Name="EndTurnButton"
Text=""
HorizontalOptions="End" HorizontalOptions="End"
VerticalOptions="Start" VerticalOptions="Start"
BackgroundColor="{DynamicResource SkyBlueColor}" BackgroundColor="{DynamicResource SkyBlueColor}"

@ -36,6 +36,8 @@ namespace TheGameExtreme.view
InitializeComponent(); InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false); NavigationPage.SetHasNavigationBar(this, false);
EndTurnButton.Text = AppRessource.StrEndTurn; // Trouver le moyen d'avoir du binding
viewmodel = new Main(playersNames); viewmodel = new Main(playersNames);
viewmodel.EndGame += OnEndGame; viewmodel.EndGame += OnEndGame;

@ -116,23 +116,23 @@ namespace TheGameExtreme.view
touchDictionary.Values.CopyTo(infos, 0); touchDictionary.Values.CopyTo(infos, 0);
SKMatrix touchMatrix = SKMatrix.MakeIdentity(); SKMatrix touchMatrix = SKMatrix.MakeIdentity();
if (infos.Length == 1) //if (infos.Length == 1)
{ //{
SKPoint prevPoint = infos[0].PreviousPoint; SKPoint prevPoint = infos[0].PreviousPoint;
SKPoint newPoint = infos[0].NewPoint; SKPoint newPoint = infos[0].NewPoint;
SKPoint pivotPoint = Matrix.MapPoint(textPaint.MeasureText(Value) / 2, textPaint.TextSize / 2); SKPoint pivotPoint = Matrix.MapPoint(textPaint.MeasureText(Value) / 2, textPaint.TextSize / 2);
touchMatrix = TouchManager.OneFingerManipulate(prevPoint, newPoint, pivotPoint); touchMatrix = TouchManager.OneFingerManipulate(prevPoint, newPoint, pivotPoint);
} //}
else if (infos.Length >= 2) //else if (infos.Length >= 2)
{ //{
int pivotIndex = infos[0].NewPoint == infos[0].PreviousPoint ? 0 : 1; // int pivotIndex = infos[0].NewPoint == infos[0].PreviousPoint ? 0 : 1;
SKPoint pivotPoint = infos[pivotIndex].NewPoint; // SKPoint pivotPoint = infos[pivotIndex].NewPoint;
SKPoint newPoint = infos[1 - pivotIndex].NewPoint; // SKPoint newPoint = infos[1 - pivotIndex].NewPoint;
SKPoint prevPoint = infos[1 - pivotIndex].PreviousPoint; // SKPoint prevPoint = infos[1 - pivotIndex].PreviousPoint;
touchMatrix = TouchManager.TwoFingerManipulate(prevPoint, newPoint, pivotPoint); // touchMatrix = TouchManager.TwoFingerManipulate(prevPoint, newPoint, pivotPoint);
} //}
SKMatrix matrix = Matrix; SKMatrix matrix = Matrix;
SKMatrix.PostConcat(ref matrix, touchMatrix); SKMatrix.PostConcat(ref matrix, touchMatrix);

@ -53,7 +53,7 @@ namespace TheGameExtreme.viewmodel
public Main(List<string> playersNames) public Main(List<string> playersNames)
{ {
int nbPile = 4; int nbPile = 8;
playersNames.ForEach(name => players.Add(new PlayerVM(new Player(name)))); playersNames.ForEach(name => players.Add(new PlayerVM(new Player(name))));
Parametreur parametreur = new Parametreur(new GameMode(new ClassicPiles(nbPile), new ClassicDeck())); Parametreur parametreur = new Parametreur(new GameMode(new ClassicPiles(nbPile), new ClassicDeck()));
players.ForEach(player => parametreur.AddPlayer(player.View)); players.ForEach(player => parametreur.AddPlayer(player.View));
@ -70,7 +70,7 @@ namespace TheGameExtreme.viewmodel
Pseudo = players[0].Pseudo; Pseudo = players[0].Pseudo;
for (int i = 0; i < nbPile; i++) for (int i = 0; i < gameManager.getPiles().Size; i++)
{ {
Stack<Card> pileView = gameManager.getPiles().getStack(i); Stack<Card> pileView = gameManager.getPiles().getStack(i);
Stack<CardVM> pile = new Stack<CardVM>(); Stack<CardVM> pile = new Stack<CardVM>();
@ -116,6 +116,17 @@ namespace TheGameExtreme.viewmodel
Alert = gameManager.EndMessage; Alert = gameManager.EndMessage;
return false; return false;
} }
else
{
foreach(CardVM card in CurrentHand)
{
if (card.Value.CompareTo(valueCard) == 0)
{
CurrentHand.Remove(card);
break;
}
}
}
listOrderedStacks[numStack].Push(new CardVM(gameManager.getPiles().getStack(numStack).Peek())); listOrderedStacks[numStack].Push(new CardVM(gameManager.getPiles().getStack(numStack).Peek()));
return true; return true;
} }

Loading…
Cancel
Save