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
{
public class HandCardChangedEventArgs
public class HandCardChangedEventArgs : EventArgs
{
public Card NewCard { get; set; }

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

@ -16,6 +16,8 @@ namespace TheGameExtreme.model.manager
public override void endTurn()
{
// Vérifie que l'utilisateur a bien joué deux cartes
pioche();
currentIndexPlayer += 1;
@ -59,48 +61,6 @@ namespace TheGameExtreme.model.manager
return testEndGame(playableCard);
}
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)

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

@ -25,10 +25,14 @@ namespace TheGameExtreme
{
InitializeComponent();
viewmodel = new Main(Alert);
viewmodel = new Main();
viewmodel.BindingChanged += OnBindingChanged;
Alert.SetBinding(Label.TextProperty, new Binding("Alert", source: viewmodel));
inflateHand();
//pile0.SetBinding(Label.TextProperty, new Binding("Stack0", source: viewmodel));
//pile1.SetBinding(Label.TextProperty, new Binding("Stack1", 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));
}
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)
{
switch (args.NumStackChanged)
{
case 0:
pile0.SetBinding(Label.TextProperty, new Binding("ListOrderedStacks[0].Peek().Value", source: viewmodel));
pile0.Text = args.NewTopRangeCard.Value.ToString();
break;
case 1:
pile1.SetBinding(Label.TextProperty, new Binding("ListOrderedStacks[1].Peek().Value", source: viewmodel));
pile1.Text = args.NewTopRangeCard.Value.ToString();
break;
case 2:
pile2.SetBinding(Label.TextProperty, new Binding("ListOrderedStacks[2].Peek().Value", source: viewmodel));
pile2.Text = args.NewTopRangeCard.Value.ToString();
break;
case 3:
pile3.SetBinding(Label.TextProperty, new Binding("ListOrderedStacks[3].Peek().Value", source: viewmodel));
pile3.Text = args.NewTopRangeCard.Value.ToString();
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)
{
viewmodel.Alert = "";
int numStack;
if (checkbox0.IsChecked)
{
@ -82,7 +110,8 @@ namespace TheGameExtreme
}
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));
}
@ -90,6 +119,7 @@ namespace TheGameExtreme
private void endTurn(object sender, EventArgs args)
{
viewmodel.endTurn();
inflateHand();
}
}
}

@ -1,40 +1,40 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using TheGameExtreme.model;
using TheGameExtreme.model.@event;
using TheGameExtreme.model.manager;
using Xamarin.Forms;
namespace TheGameExtreme.viewmodel
{
public class Main : INotifyPropertyChanged
{
Label alert;
private GameManager gameManager;
public List<Card> CurrentHand { get; set; }
public List<Stack<Card>> listOrderedStacks;
public List<Stack<Card>> ListOrderedStacks
public event EventHandler<TopRangeChangedEventArgs> BindingChanged;
public event PropertyChangedEventHandler PropertyChanged;
private string alert = "";
public String Alert
{
get { return listOrderedStacks; }
get { return alert; }
set
{
listOrderedStacks = value;
OnPropertyChanged("Stack change");
alert = value;
OnPropertyChanged("Alert");
}
}
private void OnPropertyChanged(string info)
protected virtual void OnPropertyChanged(string info)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info));
}
public event EventHandler<TopRangeChangedEventArgs> BindingChanged;
public event PropertyChangedEventHandler PropertyChanged;
private GameManager gameManager;
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.TopRangeChanged += OnTopRangeChanged;
@ -43,7 +43,7 @@ namespace TheGameExtreme.viewmodel
CurrentHand = gameManager.CurrentHand;
ListOrderedStacks = gameManager.ListOrderedStacks;
ListOrderedStacks = new ObservableCollection<Stack<Card>>(gameManager.ListOrderedStacks);
}
public Main()
@ -68,7 +68,7 @@ namespace TheGameExtreme.viewmodel
}
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
}
}
@ -82,9 +82,9 @@ namespace TheGameExtreme.viewmodel
catch(Exception e)
{
// Faire un toast
alert.Text = e.Message;
}
Alert = e.Message;
}
}
public void endTurn()
{

Loading…
Cancel
Save