/// <summary> /// /// </summary> /// <param name="aPlayers"></param> public Score(Player[] aPlayers, int nbPlayer) { Player1 = aPlayers[0].Name; Score1 = aPlayers[0].GrandTotal; Player2 = aPlayers[1].Name; Score2 = aPlayers[1].GrandTotal; if (nbPlayer > 2) { Player3 = aPlayers[2].Name; Score3 = aPlayers[2].GrandTotal; } else { Player3 = ""; Score3 = 0; } if (nbPlayer > 3) { Player4 = aPlayers[3].Name; Score4 = aPlayers[3].GrandTotal; } else { Player4 = ""; Score4 = 0; } }
public ViewModelGame() { _nextPlayerCommand = new DelegateCommand(ExecuteNextPlayerCommand); _clickRollCommand = new DelegateCommand(ExecuteClickRollCommand); _clickDiceCommand = new DelegateCommand(ExecuteClickDiceCommand); _clickScoreCommand = new DelegateCommand(ExecuteClickScoreCommand); _iPlayer = 0; _nbLaps = 0; //_selectedPlayer = new Player(); ListPlayers = new Player[4]; }
private void DetachPlayer(Player player) { player.Game = null; OnPropertyChanged("Players"); }
private void AttachPlayer(Player player) { player.Game = this; OnPropertyChanged("Players"); }
private void calculateScorePlayer(Player player) { // Calcul des totaux player.TotalScore = player.calculateTotalScore(); player.TotalUpperSection = player.calculateTotalUpperSection(); player.TotalLowerSection = player.calculateTotalLowerSection(); player.GrandTotal = player.calculateGrandTotal(); }
/// <summary> /// Action lors de la sélection d'une combinaison /// </summary> /// <param name="parametre">La combinaison sélectionnée</param> protected virtual void ExecuteClickScoreCommand(object parametre) { SelectedCombination = parametre as Combination; // On bloque la combinaison sélectionnée pour qu'elle ne puisse plus être jouée SelectedCombination.IsNotFilled = false; // Remise à zéro des autres combinaisons foreach (Combination c in _selectedPlayer.Combinations) { if (SelectedCombination.Name != c.Name && c.IsNotFilled == true) { c.Value = 0; } } // Passage au joueur suivant if (IPlayer < NbPlayer - 1 ) { IPlayer++; } else { IPlayer = 0; // Incrémentation du nombre de tour effectués NbLaps++; } // Passage au joueur suivant tant que toutes les combinaisons ne sont pas jouées if (NbLaps < 13) { calculateScorePlayer(SelectedPlayer); SelectedPlayer = ListPlayers[IPlayer]; // On initialise un nouveau tour pour le prochain joueur initSelectedPlayer(); } else { //TODO 1 : Affichage d'une nouvelle page avec le tableau des scores + les totaux //TODO 2 : Ajout d'un bouton "Rejouer" List<Player> winners = new List<Player>(); // Liste des gagnants (plusieurs si égalité) foreach (Player player in Game.Players) { calculateScorePlayer(player); // Sauvegarde du/des gagnant(s) if (winners.Count() == 0) { winners.Add(player); } else { if (winners[winners.Count() - 1].GrandTotal <= player.GrandTotal) { // On vide la liste si le nouveau total est supérieur à l'ancien if (winners[winners.Count() - 1].GrandTotal < player.GrandTotal) { winners.Clear(); } winners.Add(player); } } } // Affichage d'un message donnant le(s) nom(s) du/des gagnant(s) et son/leur score String message = ""; if (winners.Count() == 1) { message = "\"" + winners[0].Name + "\" a gagné avec " + winners[0].GrandTotal + " points !"; } else { message = "Egalité ! "; for (int i = 0; i < winners.Count(); i++) { message += "\"" + winners[i].Name + "\", "; } message += " ont gagné avec " + winners[0].GrandTotal + " points !"; } var result = MessageBox.Show(message, "Partie terminée", MessageBoxButton.OKCancel); // Sauvegarde du Score en BDD Score s = new Score(ListPlayers, _nbPlayer); YahtzeeDataContext.Instance.Score.InsertOnSubmit(s); try { YahtzeeDataContext.Instance.SubmitChanges(); } catch (Exception e) { throw; } int nb = YahtzeeDataContext.Instance.Score.Count(); // Si le bouton OK est sélectionné, on affiche la page des scores if (result == MessageBoxResult.OK) { App.RootFrame.GoBack(); } } }
/// <summary> /// Méthode de chargement des données au début du jeu /// </summary> /// <param name="nbPlayer">Nombre de joueurs</param> /// <param name="pseudo1">Pseudo du joueur 1</param> /// <param name="pseudo2">Pseudo du joueur 2</param> /// <param name="pseudo3">Pseudo du joueur 3</param> /// <param name="pseudo4">Pseudo du joueur 4</param> public void LoadData(int nbPlayer, string pseudo1, string pseudo2, string pseudo3, string pseudo4) { NbPlayer = nbPlayer; ListPlayers[0] = new Player(pseudo1); ListPlayers[1] = new Player(pseudo2); if (nbPlayer > 2) { ListPlayers[2] = new Player(pseudo3); if (nbPlayer > 3) { ListPlayers[3] = new Player(pseudo4); } } _selectedPlayer = ListPlayers[0]; this.Game = new Models.Game(); this.Game.Players.AddRange(_listPlayers.Where( p => p != null)); this.initSelectedPlayer(); }