Fin de la version brouillon du model

master
cldupland 6 years ago
parent 93dde67e78
commit 2d1df465e8

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model;
using TheGameExtreme.model.gameActions.classic;
namespace TheGameExtreme
{
public class Parametreur
{
public GameMode GameMode { get; set; }
public List<Player> players = new List<Player>();
public int NbPlayer { get; set; }
public Parametreur(GameMode gameMode)
{
GameMode = gameMode;
}
public void Prepare()
{
NbPlayer = players.Count;
GameMode.load(NbPlayer, players);
}
public void AddPlayer(Player player)
{
if (player != null)
{
players.Add(player);
}
}
}
}

@ -14,11 +14,7 @@
<Folder Include="viewmodel\" />
<Folder Include="model\card\" />
<Folder Include="model\deck\" />
<Folder Include="model\rule\" />
<Folder Include="model\rule\playRules\" />
<Folder Include="model\Card\rapidCard\" />
<Folder Include="model\rule\endTurnRules\" />
<Folder Include="model\rule\beforeEndTurnRules\" />
<Folder Include="model\gameActions\" />
<Folder Include="model\gameActions\extreme\" />
<Folder Include="model\gameActions\classic\" />

@ -3,23 +3,23 @@ using System.ComponentModel;
namespace TheGameExtreme.model.card
{
public abstract class Card : INotifyPropertyChanged
public abstract class Card // : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
//public event PropertyChangedEventHandler PropertyChanged;
private int value;
public int Value
{
get { return value; }
set {
this.value = value;
OnPropertyChange("Value");
//OnPropertyChange("Value");
}
}
private void OnPropertyChange(string v)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(v));
}
//private void OnPropertyChange(string v)
//{
// PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(v));
//}
public Card(int value)

@ -123,7 +123,7 @@ namespace TheGameExtreme.model.gameActions.classic
nbCardAtBeginOfTurn = currentHand.Count;
CurrentCardPlayed.Clear();
OnPlayerChanged(new PlayerChangedEventArgs(currentHand, player.Pseudo));
OnPlayerChanged(null);
return false;
}
else

@ -13,12 +13,8 @@ namespace TheGameExtreme.model.manager
/* GameMaster implémente un mode de jeu (classe fille de gameMode qui connait les actions a effectué en fonction du mode de jeu */
protected GameMode gameMode;
public readonly int nbPlayer;
protected List<Player> players = new List<Player>();
protected Parametreur preparateur;
public Piles ListOrderedStacks { get; set; }
//protected int nbCardAtBeginOfTurn;
protected int nbMaxCard;
protected List<Card> CurrentCardPlayed = new List<Card>();
public String EndMessage { get; set; }
protected int currentIndexPlayer;
@ -48,55 +44,50 @@ namespace TheGameExtreme.model.manager
{
TopRangeChanged?.Invoke(this, args);
}
protected internal void OnPlayerChanged(PlayerChangedEventArgs args)
protected internal void OnPlayerChanged(object source, PlayerChangedEventArgs args)
{
currentIndexPlayer += 1;
if (currentIndexPlayer == players.Count)
if (currentIndexPlayer == preparateur.players.Count)
{
currentIndexPlayer = 0;
}
CurrentHand = players[currentIndexPlayer].getCardList();
PlayerChanged?.Invoke(this, args);
CurrentHand = preparateur.players[currentIndexPlayer].getCardList();
PlayerChanged?.Invoke(this, new PlayerChangedEventArgs(CurrentHand, preparateur.players[currentIndexPlayer].Pseudo));
}
#endregion
//protected bool win = true;
//public String EndMessage { get; set; }
protected GameManager(List<string> playersNames, GameMode gameMode)
protected GameManager(Parametreur parametreur)
{
nbPlayer = playersNames.Count;
playersNames.ForEach(playerName => players.Add(new Player(playerName)));
this.preparateur = parametreur;
parametreur.Prepare();
this.gameMode = gameMode;
gameMode.load(nbPlayer, players);
parametreur.GameMode.TopRangeChanged += OnTopRangeChanged;
gameMode.TopRangeChanged += OnTopRangeChanged;
parametreur.GameMode.PlayerChanged += OnPlayerChanged;
CurrentHand = players[0].getCardList();
CurrentHand = parametreur.players[0].getCardList();
}
public void joue(int valueCard, int orderedStackSelected)
{
gameMode.playCard(valueCard, currentHand, orderedStackSelected, players[currentIndexPlayer], CurrentCardPlayed); // Mettre le joueur actif
EndMessage = gameMode.Message;
preparateur.GameMode.playCard(valueCard, currentHand, orderedStackSelected, preparateur.players[currentIndexPlayer], CurrentCardPlayed); // Mettre le joueur actif
EndMessage = preparateur.GameMode.Message;
}
public bool endTurn()
{
if(gameMode.endTurn(currentHand, CurrentCardPlayed, players[currentIndexPlayer]))
if(preparateur.GameMode.endTurn(currentHand, CurrentCardPlayed, preparateur.players[currentIndexPlayer]))
{
EndMessage = gameMode.Message;
EndMessage = preparateur.GameMode.Message;
if (isEndGame())
{
EndMessage = gameMode.Message;
EndMessage = preparateur.GameMode.Message;
return true;
}
else
@ -112,7 +103,7 @@ namespace TheGameExtreme.model.manager
private bool isEndGame()
{
return gameMode.isEndGame(currentHand);
return preparateur.GameMode.isEndGame(currentHand);
}

@ -6,7 +6,7 @@ namespace TheGameExtreme.model.manager
{
public abstract class MultiplayerGameManager : GameManager
{
protected MultiplayerGameManager(List<string> players, GameMode gameMode) : base(players, gameMode)
protected MultiplayerGameManager(Parametreur parametreur) : base(parametreur)
{
}
}

@ -7,8 +7,8 @@ namespace TheGameExtreme.model.manager
public class SoloGameManager : GameManager
{
public SoloGameManager(List<String> players, GameMode gameMode)
: base(players, gameMode)
public SoloGameManager(Parametreur parametreur)
: base(parametreur)
{
}

@ -7,7 +7,7 @@ namespace TheGameExtreme.model.manager
{
public class LocalGameManager : MultiplayerGameManager
{
public LocalGameManager(List<string> players, GameMode gameMode) : base(players, gameMode)
public LocalGameManager(Parametreur parametreur) : base(parametreur)
{
}

@ -7,7 +7,7 @@ namespace TheGameExtreme.model.manager.multiplayer
{
public class RemoteGameManager : MultiplayerGameManager
{
public RemoteGameManager(List<string> players, GameMode gameMode) : base(players, gameMode)
public RemoteGameManager(Parametreur parametreur) : base(parametreur)
{
}

@ -1,10 +0,0 @@
using System;
namespace TheGameExtreme.model.rule
{
public class InfinitEffect : Rule
{
public InfinitEffect()
{
}
}
}

@ -1,38 +0,0 @@
using System;
namespace TheGameExtreme.model.rule
{
public class RapidEffect : Rule
{
public RapidEffect()
{
}
// Checker les cartes du haut de pile et celle joué.
//protected bool effectLose()
//{
// foreach (Stack<Card> orderedStack in ListOrderedStacks)
// {
// if (Equals(orderedStack.Peek().getName(), EndGameCard.CARD_ENDGAME))
// {
// return true;
// }
// }
// return false;
//}
//foreach (Card cardPlayed in CurrentCardPlayed)
//{
// if (Equals(cardPlayed.GetType(), ThreeCard.CARD_THREE))
// {
// if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 3)
// {
// return true;
// }
// }
//}
}
}

@ -1,15 +0,0 @@
using System;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule
{
public abstract class Rule
{
public bool Test()
{
throw new NotImplementedException();
}
}
}

@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.beforeEndTurnRules
{
public abstract class BeforeEndTurnRule : Rule
{
public abstract bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand);
}
}

@ -1,24 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.beforeEndTurnRules
{
public class NbCardPlay : BeforeEndTurnRule
{
override public bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand)
{
if (CurrentHand.Count == 0)
{
return true;
}
if ((nbCardAtBeginOfTurn - CurrentHand.Count) < 2)
{
return false;
}
return true;
}
}
}

@ -1,24 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.endTurnRules
{
public class CompleteHand : EndTurnRule
{
public static readonly String REGLE_COMPLETEHAND = "Complete Hand";
public override bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand)
{
// Si carte qui fait piocher que d'un, vérifier la bonne pioche (penser si elle vient d'être recouverte)
// Sinon
if (nbCardAtBeginOfTurn == CurrentCardPlayed.Count)
{
return true;
}
return false;
}
}
}

@ -1,62 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
using TheGameExtreme.model.card.rapidCard;
namespace TheGameExtreme.model.rule.endTurnRules
{
public class EndGame : EndTurnRule
{
public static readonly String REGLE_ENDGAME = "End Game";
public List<Stack<Card>> ListOrderedStacks { get; set; }
public EndGame(List<Stack<Card>> ListOrderedStacks)
{
this.ListOrderedStacks = ListOrderedStacks;
}
public override bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand)
{
if (CurrentHand.Count != 0)
{
List<Card> playableCard = new List<Card>();
tryToFindSoluce(playableCard, CurrentHand);
return testEndGame(playableCard);
}
return false;
}
protected void tryToFindSoluce(List<Card> playableCard, List<Card> CurrentHand)
{
CurrentHand.ForEach(card =>
{
if (card.Value > ListOrderedStacks[0].Peek().Value || card.Value > ListOrderedStacks[1].Peek().Value || card.Value < ListOrderedStacks[2].Peek().Value || card.Value < ListOrderedStacks[3].Peek().Value)
{
playableCard.Add(card);
}
});
}
protected bool testEndGame(List<Card> playableCard)
{
if (playableCard.Count == 2)
{
foreach (Card c in playableCard)
{
if (Equals(c.getName(), ThreeCard.CARD_THREE))
{
return false;
}
}
}
else if (playableCard.Count < 2)
{
return false;
}
return true;
}
}
}

@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.endTurnRules
{
public abstract class EndTurnRule : Rule
{
public abstract bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand);
}
}

@ -1,17 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.endTurnRules
{
public class VoidDeck : EndTurnRule
{
public static readonly String REGLE_VOIDDECK = "Void Deck";
public override bool Test(List<Card> CurrentCardPlayed, int nbCardAtBeginOfTurn, List<Card> CurrentHand)
{
throw new NotImplementedException();
}
}
}

@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.playRules
{
public class Ascendant : PlayRule
{
public static readonly String REGLE_ASCENDANT = "Ascendant";
override public bool Test(Card playedCard, Stack<Card> stack, bool bottomUp, List<Card> CurrentHand)
{
if (bottomUp && playedCard.Value > stack.Peek().Value)
{
return true;
}
return false;
}
}
}

@ -1,21 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.playRules
{
public class Descendant : PlayRule
{
public static readonly String REGLE_DESCENDANT = "Descendant";
override public bool Test(Card playedCard, Stack<Card> stack, bool bottomUp, List<Card> CurrentHand)
{
if (!bottomUp && playedCard.Value < stack.Peek().Value)
{
return true;
}
return false;
}
}
}

@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.playRules
{
public class PasDeDix : PlayRule
{
public static readonly String REGLE_PASDEDIX = "PasDeDix";
override public bool Test(Card playedCard, Stack<Card> stack, bool bottomUp, List<Card> CurrentHand)
{
if ((stack.Peek().Value + 10) == playedCard.Value || (stack.Peek().Value - 10) == playedCard.Value)
{
return true;
}
return false;
}
}
}

@ -1,11 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.playRules
{
public abstract class PlayRule : Rule
{
public abstract bool Test(Card playedCard, Stack<Card> stack, bool bottomUp, List<Card> CurrentHand);
}
}

@ -1,22 +0,0 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model.card;
namespace TheGameExtreme.model.rule.playRules
{
public class VoidHand : PlayRule
{
public static readonly String REGLE_VOIDHAND = "Void Hand";
override public bool Test(Card playedCard, Stack<Card> stack, bool bottomUp, List<Card> CurrentHand)
{
if (CurrentHand.Count == 0)
{
return false;
}
return true;
}
}
}

@ -33,12 +33,19 @@ namespace TheGameExtreme.view
viewmodel.BindingChanged += OnBindingChanged;
//viewmodel.PlayerChanged += OnPlayerChanged;
Alert.SetBinding(Label.TextProperty, new Binding("Alert", source: viewmodel));
pseudo.SetBinding(Label.TextProperty, new Binding("Pseudo", source: viewmodel));
inflateHand();
}
//private void OnPlayerChanged(object sender, PlayerChangedEventArgs args)
//{
// inflateHand();
//}
private void inflateHand()
{
Hand.Children.Clear();
@ -145,6 +152,7 @@ namespace TheGameExtreme.view
private void endTurn(object sender, EventArgs args)
{
viewmodel.Alert = "";
if (viewmodel.endTurn())
{
botPanel.Children.Add(button);

@ -0,0 +1,33 @@
using System;
using System.ComponentModel;
using TheGameExtreme.model.card;
namespace TheGameExtreme.viewmodel
{
public class CardVM : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public Card View { get; set; }
private int value;
public int Value {
get { return value; }
set
{
this.value = value;
OnPropertyChanged("Value");
}
}
protected virtual void OnPropertyChanged(string info)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(info));
}
public CardVM(Card view)
{
View = view;
Value = view.Value;
}
}
}

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using TheGameExtreme.model;
using TheGameExtreme.model.card;
using TheGameExtreme.model.@event;
using TheGameExtreme.model.gameActions.classic;
@ -12,8 +13,10 @@ namespace TheGameExtreme.viewmodel
public class Main : INotifyPropertyChanged
{
//public event EventHandler<PlayerChangedEventArgs> PlayerChanged;
public event EventHandler<TopRangeChangedEventArgs> BindingChanged;
public event PropertyChangedEventHandler PropertyChanged;
private List<PlayerVM> players = new List<PlayerVM>();
private string alert = "";
public String Alert
{
@ -46,14 +49,20 @@ namespace TheGameExtreme.viewmodel
public Main()
{
gameManager = new SoloGameManager(new List<String> { "Clément", "Baptiste" }, new GameMode()) ; // Donner le nom des joueurs
List<string> playersNames = new List<string> { "Clément", "Baptiste" };
playersNames.ForEach(name => players.Add(new PlayerVM(new Player(name))));
Parametreur parametreur = new Parametreur(new GameMode());
players.ForEach(player => parametreur.AddPlayer(player.View));
gameManager = new SoloGameManager(parametreur) ; // Donner le nom des joueurs
gameManager.TopRangeChanged += OnTopRangeChanged;
gameManager.TopRangeChanged += OnBindingChanged;
gameManager.PlayerChanged += OnPlayerChanged;
CurrentHand = gameManager.CurrentHand;
Pseudo = players[0].Pseudo;
//ListOrderedStacks = new ObservableCollection<Stack<Card>>(gameManager.ListOrderedStacks);
}
@ -61,9 +70,10 @@ namespace TheGameExtreme.viewmodel
{
CurrentHand = args.NewCurrentHand;
Pseudo = args.Pseudo;
//PlayerChanged?.Invoke(this, args);
}
public void OnTopRangeChanged(object source, TopRangeChangedEventArgs args)
public void OnBindingChanged(object source, TopRangeChangedEventArgs args)
{
BindingChanged?.Invoke(this, args);
}

@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using TheGameExtreme.model;
using TheGameExtreme.model.card;
using TheGameExtreme.model.@event;
namespace TheGameExtreme.viewmodel
{
public class PlayerVM
{
public Player View { get; set; }
public string Pseudo { get; set; }
private List<CardVM> cardList = new List<CardVM>();
//public event EventHandler<HandCardChangedEventArgs> HandCardChanged;
public PlayerVM(Player view)
{
View = view;
Pseudo = view.Pseudo;
view.getCardList().ForEach(card => cardList.Add(new CardVM(card)));
View.HandCardChanged += OnHandCardChanged;
}
private void OnHandCardChanged(object sender, HandCardChangedEventArgs args)
{
if (args.NewCard == null)
{
cardList.RemoveAt(args.Position);
}
else
{
cardList.Insert(args.Position, new CardVM(args.NewCard));
}
}
public void pioche(CardVM card)
{
View.pioche(card.View);
}
public List<CardVM> getCardList()
{
return cardList;
}
}
}
Loading…
Cancel
Save