Merge branch 'master' of gitlab.iut-clermont.uca.fr:cldupland/thegameextreme

master
Baptiste ARNAUD 6 years ago
commit 90492eca01

@ -1,15 +0,0 @@
using System;
namespace TheGameExtreme.model.@event
{
public class CurrentPlayerChangedEventArgs
{
public int NewCurrentPlayer { get; set; }
public CurrentPlayerChangedEventArgs(int newCurrentPlayer)
{
NewCurrentPlayer = newCurrentPlayer;
}
}
}

@ -3,7 +3,7 @@ using System.Collections.Generic;
namespace TheGameExtreme.model.@event namespace TheGameExtreme.model.@event
{ {
public class HandCardChangedEventArgs public class HandCardChangedEventArgs : EventArgs
{ {
public Card NewCard { get; set; } public Card NewCard { get; set; }

@ -1,6 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using TheGameExtreme.model.effect; using TheGameExtreme.model.effect;
using TheGameExtreme.model.@event; using TheGameExtreme.model.@event;
@ -19,7 +18,6 @@ namespace TheGameExtreme.model.manager
protected bool win = true; protected bool win = true;
public event EventHandler<TopRangeChangedEventArgs> TopRangeChanged; public event EventHandler<TopRangeChangedEventArgs> TopRangeChanged;
public event EventHandler<PlayerChangedEventArgs> PlayerChanged; public event EventHandler<PlayerChangedEventArgs> PlayerChanged;
//public event EventHandler<CurrentPlayerChangedEventArgs> CurrentPlayerChanged;
public List<Card> CurrentHand { get; set; } public List<Card> CurrentHand { get; set; }
@ -111,7 +109,7 @@ namespace TheGameExtreme.model.manager
public void joue(int valueCard, int orderedStackSelected) public void joue(int valueCard, int orderedStackSelected)
{ {
CurrentHand.ForEach(card => foreach(Card card in CurrentHand)
{ {
if (valueCard == card.Value) if (valueCard == card.Value)
{ {
@ -119,21 +117,25 @@ namespace TheGameExtreme.model.manager
{ {
if (orderedStackSelected < 2) if (orderedStackSelected < 2)
{ {
testPossibility(card, ListOrderedStacks[orderedStackSelected], false); testPossibility(card, ListOrderedStacks[orderedStackSelected], true);
} }
else else
{ {
testPossibility(card, ListOrderedStacks[orderedStackSelected], true); testPossibility(card, ListOrderedStacks[orderedStackSelected], false);
}
} }
else
{
throw new Exception("La pile choisie n'existe pas!");
} }
return; return;
} }
}); }
} }
protected void testPossibility(Card card, Stack<Card> orderedStack, bool bottomUp) protected void testPossibility(Card card, Stack<Card> orderedStack, bool bottomUp)
{ {
if ((bottomUp && card.Value > orderedStack.Peek().Value) || (!bottomUp && card.Value < orderedStack.Peek().Value)) 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(); Card oldCard = orderedStack.Peek();
playerList[currentIndexPlayer].joue(card); playerList[currentIndexPlayer].joue(card);
@ -156,11 +158,6 @@ namespace TheGameExtreme.model.manager
PlayerChanged?.Invoke(this, args); PlayerChanged?.Invoke(this, args);
} }
//protected internal void OnCurrentPlayerChanged(CurrentPlayerChangedEventArgs args)
//{
// CurrentPlayerChanged?.Invoke(this, args);
//}
public bool isCanPlay() public bool isCanPlay()
{ {
if (CurrentHand.Count > 0) if (CurrentHand.Count > 0)

@ -16,6 +16,8 @@ namespace TheGameExtreme.model.manager
public override void endTurn() public override void endTurn()
{ {
// Vérifie que l'utilisateur a bien joué deux cartes
pioche(); pioche();
currentIndexPlayer += 1; currentIndexPlayer += 1;
@ -59,48 +61,6 @@ namespace TheGameExtreme.model.manager
return testEndGame(playableCard); return testEndGame(playableCard);
} }
return false; return false;
//playerList.ForEach(player =>
//{
// if (player.getCardList().Count != 0)
// {
// List<Card> playableCard = new List<Card>();
// List<Card> cardList = new List<Card>(player.getCardList());
// cardList.ForEach(card =>
// {
// if (card.Value < descendingCardListOrder1.Peek().Value || card.Value < descendingCardListOrder2.Peek().Value || card.Value > ascendingCardListOrder1.Peek().Value || card.Value > ascendingCardListOrder2.Peek().Value)
// {
// playableCard.Add(card);
// }
// });
// if (playableCard.Count < 3 && playableCard.Count >= 2)
// {
// foreach (Card c in playableCard)
// {
// // Tester si c'est une classe ThreeCard
// // Si oui:
// if (currentPlayer == playerList.IndexOf(player))
// {
// win = false;
// endGame = true;
// return;
// }
// }
// }
// else if (playableCard.Count < 2)
// {
// if (currentPlayer == playerList.IndexOf(player))
// {
// win = false;
// endGame = true;
// return;
// }
// }
// }
//});
} }
protected override void tryToFindSoluce(List<Card> playableCard) protected override void tryToFindSoluce(List<Card> playableCard)

@ -56,7 +56,8 @@
Orientation="Horizontal" Orientation="Horizontal"
Padding="0,5,0,5"> Padding="0,5,0,5">
<StackLayout <StackLayout
Orientation="Horizontal"> Orientation="Horizontal"
x:Name="Hand">
<Button x:Name="card1" Clicked="played" /> <Button x:Name="card1" Clicked="played" />
<Button x:Name="card2" Clicked="played" /> <Button x:Name="card2" Clicked="played" />
<Button x:Name="card3" Clicked="played" /> <Button x:Name="card3" Clicked="played" />

@ -25,10 +25,14 @@ namespace TheGameExtreme
{ {
InitializeComponent(); InitializeComponent();
viewmodel = new Main(Alert); viewmodel = new Main();
viewmodel.BindingChanged += OnBindingChanged; viewmodel.BindingChanged += OnBindingChanged;
Alert.SetBinding(Label.TextProperty, new Binding("Alert", source: viewmodel));
inflateHand();
//pile0.SetBinding(Label.TextProperty, new Binding("Stack0", source: viewmodel)); //pile0.SetBinding(Label.TextProperty, new Binding("Stack0", source: viewmodel));
//pile1.SetBinding(Label.TextProperty, new Binding("Stack1", source: viewmodel)); //pile1.SetBinding(Label.TextProperty, new Binding("Stack1", source: viewmodel));
//pile2.SetBinding(Label.TextProperty, new Binding("Stack2", source: viewmodel)); //pile2.SetBinding(Label.TextProperty, new Binding("Stack2", source: viewmodel));
@ -42,27 +46,51 @@ namespace TheGameExtreme
//card7.SetBinding(Button.TextProperty, new Binding("ValueCard7", source: viewmodel)); //card7.SetBinding(Button.TextProperty, new Binding("ValueCard7", source: viewmodel));
} }
private void inflateHand()
{
Hand.Children.Clear();
for (int i = 0; i < viewmodel.CurrentHand.Count; i++)
{
Button card = new Button();
card.Text = viewmodel.CurrentHand[i].Value.ToString();
card.Clicked += played;
Hand.Children.Add(card);
}
}
private void OnBindingChanged(object sender, TopRangeChangedEventArgs args) private void OnBindingChanged(object sender, TopRangeChangedEventArgs args)
{ {
switch (args.NumStackChanged) switch (args.NumStackChanged)
{ {
case 0: case 0:
pile0.SetBinding(Label.TextProperty, new Binding("ListOrderedStacks[0].Peek().Value", source: viewmodel)); pile0.Text = args.NewTopRangeCard.Value.ToString();
break; break;
case 1: case 1:
pile1.SetBinding(Label.TextProperty, new Binding("ListOrderedStacks[1].Peek().Value", source: viewmodel)); pile1.Text = args.NewTopRangeCard.Value.ToString();
break; break;
case 2: case 2:
pile2.SetBinding(Label.TextProperty, new Binding("ListOrderedStacks[2].Peek().Value", source: viewmodel)); pile2.Text = args.NewTopRangeCard.Value.ToString();
break; break;
case 3: case 3:
pile3.SetBinding(Label.TextProperty, new Binding("ListOrderedStacks[3].Peek().Value", source: viewmodel)); pile3.Text = args.NewTopRangeCard.Value.ToString();
break; break;
} }
for (int i = 0; i < Hand.Children.Count; i++)
{
Button b = Hand.Children[i] as Button;
if (String.Equals(b.Text,args.NewTopRangeCard.Value.ToString()))
{
Hand.Children.RemoveAt(i);
break;
}
}
} }
private void played(object sender, EventArgs args) private void played(object sender, EventArgs args)
{ {
viewmodel.Alert = "";
int numStack; int numStack;
if (checkbox0.IsChecked) if (checkbox0.IsChecked)
{ {
@ -82,7 +110,8 @@ namespace TheGameExtreme
} }
else else
{ {
throw new Exception(); viewmodel.Alert = "Aucune pile selectionné! Veuillez séléctionner une pile.";
return;
} }
viewmodel.played(numStack, Convert.ToInt32((sender as Button).Text)); viewmodel.played(numStack, Convert.ToInt32((sender as Button).Text));
} }
@ -90,6 +119,7 @@ namespace TheGameExtreme
private void endTurn(object sender, EventArgs args) private void endTurn(object sender, EventArgs args)
{ {
viewmodel.endTurn(); viewmodel.endTurn();
inflateHand();
} }
} }
} }

@ -1,40 +1,40 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel; using System.ComponentModel;
using TheGameExtreme.model; using TheGameExtreme.model;
using TheGameExtreme.model.@event; using TheGameExtreme.model.@event;
using TheGameExtreme.model.manager; using TheGameExtreme.model.manager;
using Xamarin.Forms;
namespace TheGameExtreme.viewmodel namespace TheGameExtreme.viewmodel
{ {
public class Main : INotifyPropertyChanged public class Main : INotifyPropertyChanged
{ {
Label alert;
private GameManager gameManager; public event EventHandler<TopRangeChangedEventArgs> BindingChanged;
public List<Card> CurrentHand { get; set; } public event PropertyChangedEventHandler PropertyChanged;
public List<Stack<Card>> listOrderedStacks; private string alert = "";
public List<Stack<Card>> ListOrderedStacks public String Alert
{ {
get { return listOrderedStacks; } get { return alert; }
set set
{ {
listOrderedStacks = value; alert = value;
OnPropertyChanged("Stack change"); OnPropertyChanged("Alert");
} }
} }
private void OnPropertyChanged(string info) protected virtual void OnPropertyChanged(string info)
{ {
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info)); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info));
} }
public event EventHandler<TopRangeChangedEventArgs> BindingChanged; private GameManager gameManager;
public event PropertyChangedEventHandler PropertyChanged; public List<Card> CurrentHand { get; set; }
private ObservableCollection<Stack<Card>> ListOrderedStacks;
public Main(Label alert)
{
this.alert = alert;
public Main()
{
gameManager = new SoloGameManager(2, new List<String> { "Clément", "Baptiste" }) ; // Donner le nom des joueurs gameManager = new SoloGameManager(2, new List<String> { "Clément", "Baptiste" }) ; // Donner le nom des joueurs
gameManager.TopRangeChanged += OnTopRangeChanged; gameManager.TopRangeChanged += OnTopRangeChanged;
@ -43,7 +43,7 @@ namespace TheGameExtreme.viewmodel
CurrentHand = gameManager.CurrentHand; CurrentHand = gameManager.CurrentHand;
ListOrderedStacks = gameManager.ListOrderedStacks; ListOrderedStacks = new ObservableCollection<Stack<Card>>(gameManager.ListOrderedStacks);
} }
public Main() public Main()
@ -68,7 +68,7 @@ namespace TheGameExtreme.viewmodel
} }
else else
{ {
alert.Text = "Le joueur n'a plus de carte dans sa main!"; Alert = "Le joueur n'a plus de carte dans sa main!";
// Faire un toast // Faire un toast
} }
} }
@ -82,9 +82,9 @@ namespace TheGameExtreme.viewmodel
catch(Exception e) catch(Exception e)
{ {
// Faire un toast // Faire un toast
alert.Text = e.Message; Alert = e.Message;
}
} }
}
public void endTurn() public void endTurn()
{ {

Loading…
Cancel
Save