예제 #1
0
        private void DonnerDeuxiemeMain(List<Carte> cartes, Joueur donneur)
        {
            for (int i = 0; i < 4; i++)
            {
                Joueur prochainJoueur = GetJoueurSuivant(donneur);

                IEnumerable<Carte> cartesADonner = GetCartes(prochainJoueur == _preneur ? 2 : 3, cartes);
                prochainJoueur.Cartes.AddRange(cartesADonner);
            }
        }
예제 #2
0
        public void JouerPartie()
        {
            _donneur = ChoisirDonneur(_joueurs);

            while (_eux.Score < _nbPointsMax && _nous.Score < _nbPointsMax)
            {
                JouerTour();
                _donneur = GetJoueurSuivant(_donneur);
            }
        }
예제 #3
0
        private void DonnerPremiereMain(List<Carte> cartes, Joueur donneur)
        {
            for (int i = 0; i < 4; i++)
            {
                Joueur prochainJoueur = GetJoueurSuivant(donneur);
                IEnumerable<Carte> cartesADonner = GetCartes(3, cartes);
                prochainJoueur.Cartes.AddRange(cartesADonner);
            }

            for (int i = 0; i < 4; i++)
            {
                Joueur prochainJoueur = GetJoueurSuivant(donneur);
                IEnumerable<Carte> cartesADonner = GetCartes(2, cartes);
                prochainJoueur.Cartes.AddRange(cartesADonner);
            }
        }
예제 #4
0
        public Partie(int nbPointsMax, Joueur joueurOuest, Joueur joueurNord, Joueur joueurEst, Joueur joueurSud)
        {
            _nbPointsMax = nbPointsMax;
            _joueurs = new List<Joueur>
            {
                joueurOuest,
                joueurSud,
                joueurEst,
                joueurNord,
            };

            _nous = new Paire(joueurNord, joueurSud);
            _eux = new Paire(joueurOuest, joueurEst);
            _cartes = new List<Carte>(Paquet.TrenteDeuxCartes);
            _cartes.Melanger();
        }
예제 #5
0
        public Partie(int nbPointsMax, Joueur joueurOuest, Joueur joueurNord, Joueur joueurEst, Joueur joueurSud)
        {
            _nbPointsMax = nbPointsMax;
            _joueurs     = new List <Joueur>
            {
                joueurOuest,
                joueurSud,
                joueurEst,
                joueurNord,
            };

            _nous   = new Paire(joueurNord, joueurSud);
            _eux    = new Paire(joueurOuest, joueurEst);
            _cartes = new List <Carte>(Paquet.TrenteDeuxCartes);
            _cartes.Melanger();
        }
예제 #6
0
 private Joueur GetJoueurSuivant(Joueur joueurCourant)
 {
     int positionJoueurCourant = _joueurs.FindIndex(j => j == joueurCourant);
     int positionProchainJoueur = (positionJoueurCourant + 1) % _joueurs.Count;
     return _joueurs[positionProchainJoueur];
 }
예제 #7
0
        private void JouerTour()
        {
            _cartes.Couper();
            DonnerPremiereMain(_cartes, _donneur);
            Carte vire = GetCartes(1, _cartes).First();
            _joueurCourant = GetJoueurSuivant(_donneur);
            Prise prise = GetPrise(vire);

            if (prise == null) return;

            _preneur = prise.Preneur;
            _atout = prise.Couleur;

            DonnerDeuxiemeMain(_cartes, _donneur);

            while (_joueurs[0].Cartes.Count > 0)
            {
                JouerPli(_preneur, _donneur);
            }
        }
예제 #8
0
 private void JouerPli(Joueur preneur, Joueur donneur)
 {
     var pli = new Dictionary<Joueur, Carte>();
     Couleur? couleurDemandee = null;
     for (int i = 0; i < 4; i++)
     {
         Carte carte = _joueurCourant.GetCarteAJouer(pli, couleurDemandee);
         pli.Add(_joueurCourant, carte);
         if (i == 0)
         {
             couleurDemandee = carte.Couleur;
         }
         _joueurCourant = GetJoueurSuivant(_joueurCourant);
     }
 }