private void CarteJouee(Joueur joueur, Carte carte) { if (carte.Valeur == Valeur.ChangementSens) { InverserSens(); } var listeValeursQuiPassentLeTour = new [] { Valeur.PasseTour, Valeur.Plus2, Valeur.Plus4 }; if (listeValeursQuiPassentLeTour.Contains(carte.Valeur)) { IncrementerTour(); FairePiocherJoueur(carte.Valeur); } IncrementerTour(); }
public void JouerCarte(Joueur joueur, Carte carte) { var joueurTour = tour.JoueurDuTour; if (joueurTour.Nom != joueur.Nom) { throw new MauvaisJoueurDeJouerException(); } var joueurQuiJoue = Joueurs.First(_ => _.Nom == joueur.Nom); if (joueurQuiJoue.Main.All(_ => _ != carte)) { throw new JoueurNePossedePasLaCarteException(); } var derniereCarte = talon.DerniereCarte; if (!derniereCarte.EstNoire() && !carte.EstSuperJoker() && !carte.EstJoker() && derniereCarte.Couleur != carte.Couleur && derniereCarte.Valeur != carte.Valeur) { throw new MauvaiseCarteJoueeException(); } if (derniereCarte.EstNoire() && !talon.CouleurJeu.HasValue) { throw new CouleurDeJeuPasEncoreChoisieException(); } if (derniereCarte.EstNoire() && talon.CouleurJeu.HasValue && carte.Couleur != talon.CouleurJeu) { throw new MauvaiseCarteJoueeException(); } if (CarteJouee != null) { CarteJouee(joueur, carte); } }
public Carte Compare(Carte Pile) { if (this.Valeur == Pile.Valeur) { Pile.Couleur = this.Couleur; Pile.bCouleur = new SolidBrush(this.Couleur); return(null); } else if (Pile.Couleur == this.Couleur) { Pile.Valeur = this.Valeur; Pile.NomValeur = this.NomValeur; return(null); } else if (Pile.Couleur == Color.Black || this.Couleur == Color.Black) { Pile.Valeur = this.Valeur; Pile.NomValeur = this.NomValeur; Pile.Couleur = this.Couleur; Pile.bCouleur = new SolidBrush(this.Couleur); return(null); } //La pile devient la carte jouee else { MessageBox.Show("La carte jouée doit avoir le même chiffre ou la même couleur que la carte de pile", "Carte non jouable"); return(this); } //Renvoie null pour supprimer la carte jouée si elle est correct ou renvoie la carte si elle n'est pas correct }
public int ValeurEffet(Carte Pile) { return(Pile.Valeur); // Renvoi la valeur de la carte }