Exemple #1
0
        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();
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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
        }
Exemple #4
0
 public int ValeurEffet(Carte Pile)
 {
     return(Pile.Valeur);  // Renvoi la valeur de la carte
 }