コード例 #1
0
 /**
  * Distribue le reste des cartes. 2 cartes pour celui qui a pris à l'atout et 3 cartes pour les
  * autres.
  *
  * @param joueurPrend joueur ayant pris a l'atout
  */
 private void distribuerDeuxiemeTour(Joueur joueurPrend) {
   Joueur premierJoueur = table.joueurSuivant(joueurDonneur);
   this.joueurCourant = table.joueurSuivant(joueurDonneur);
   int nbCarte = 2;
   do {
     for (int i = 0; i < nbCarte; i++) {
       this.joueurCourant
           .getMain()
           .ajouter(table.getPaquet().retirerPremiereCarte(), this.table.getCouleurAtout());
     }
     if (this.joueurCourant != joueurPrend) { // voir .equals()
       this.joueurCourant
           .getMain()
           .ajouter(table.getPaquet().retirerPremiereCarte(), this.table.getCouleurAtout());
     }
     this.joueurCourant = table.joueurSuivant(this.joueurCourant);
   } while (this.joueurCourant != premierJoueur);
 }
コード例 #2
0
 /** Permet de récupérer les cartes dans la main des joueurs. */
 private void recupererCartesMain() {
   Joueur premierJoueur = this.joueurCourant;
   do {
     for (Carte carte : joueurCourant.getMain().hashtableToList()) {
       this.table.getPaquet().ajouter(carte);
       joueurCourant.getMain().supprimer(carte);
     }
     this.joueurCourant = table.joueurSuivant(this.joueurCourant);
   } while (this.joueurCourant != premierJoueur);
 }
コード例 #3
0
 /**
  * Permet de distribuer les cartes du paquet aux joueurs.
  *
  * @param nbCarte nombre de cartes à distribuer
  */
 private void distribuer(int nbCarte) {
   Joueur premierJoueur = this.joueurCourant;
   do {
     for (int i = 0; i < nbCarte; i++) {
       this.joueurCourant
           .getMain()
           .ajouter(table.getPaquet().retirerPremiereCarte(), this.table.getCouleurAtout());
     }
     this.joueurCourant = table.joueurSuivant(this.joueurCourant);
   } while (this.joueurCourant != premierJoueur);
 }
コード例 #4
0
 /**
  * Deuxieme tour de table pour proposer aux joueurs de prendre à l'atout à une autre couleur.
  *
  * @return Renvoit le jouer qui a pris, null le cas échéant.
  */
 private Joueur quiPrendDeuxiemeDonne() {
   this.table.setCouleurAtout(null);
   Joueur joueurPrend = null;
   int i = 0;
   while (this.table.getCouleurAtout() == null && i < 4) {
     Terminal.ecrireStringln(
         "---------DEUXIEME DONNE----------\nJoueur courant : " + joueurCourant);
     this.table.setCouleurAtout(joueurCourant.prendDeuxiemeDonne());
     Terminal.ecrireStringln("\ncouleur Choisie :" + this.table.getCouleurAtout());
     if (this.table.getCouleurAtout() == null) {
       joueurCourant = table.joueurSuivant(joueurCourant);
     } else {
       joueurPrend = joueurCourant;
     }
     i++;
   }
   return joueurPrend;
 }
コード例 #5
0
 /**
  * Premier tour de table pour proposer aux joueurs de prendre à l'atout la carte retournée.
  *
  * @return Renvoit le jouer qui a pris, null le cas échéant.
  */
 private Joueur quiPrendPremiereDonne() {
   Joueur joueurPrend = null;
   int i = 0;
   // tend que personne n'a pris ET que tout le monde n'as pas été interrogé
   while (joueurPrend == null && i < 4) {
     Terminal.ecrireStringln(
         "---------PREMIERE DONNE----------\nJoueur courant : "
             + this.joueurCourant
             + "\nCarte retournée:"
             + this.table.getCarteRetournee());
     if (joueurCourant.prendPremiereDonne()) {
       joueurPrend = joueurCourant;
       this.table.setCouleurAtout(this.table.getCarteRetournee().getCouleur());
       Terminal.ecrireStringln(joueurCourant + " PREND");
     } else {
       Terminal.ecrireStringln(joueurCourant + " PASSE");
     }
     i++;
     joueurCourant = table.joueurSuivant(joueurCourant);
   }
   return joueurPrend;
 }
コード例 #6
0
  /** Jouer un pli. */
  private void jouerUnPli() {
    if (this.joueurCourant.getMain().getTailleMain() == 1) {
      this.table.nouveauPliCourant(true);
    } else {
      this.table.nouveauPliCourant(false);
    }
    Carte carteJouee = null;
    while (this.table.getPliCourant().size() < 4) {
      // Au premier tour avant de jouer quoi que ce soit, on analyse son jeu (juste pour voir les
      // annonces belote et re pour le moment)
      if (this.joueurCourant.getMain().getTailleMain() == 8) this.joueurCourant.analyserSonJeu();
      carteJouee = joueurCourant.jouerPli();

      this.table.jouerCarte(carteJouee, joueurCourant);
      joueurCourant = table.joueurSuivant(joueurCourant);
    }
    Terminal.ecrireStringln(
        "-------PLI FINI------\nJoueurMaitre : " + this.table.getPliCourant().getJoueurMaitre());
    this.table
        .getEquipeDuJoueur(this.table.getPliCourant().getJoueurMaitre())
        .ajouterPliRemporte(this.table.getPliCourant());
    joueurCourant = this.table.getPliCourant().getJoueurMaitre();
  }
コード例 #7
0
 /** Lancement de la partie. */
 public void debuterPartie() {
   this.joueurPrend = null;
   int jouer = 1;
   while (jouer == 1) {
     while (!this.partieFinie()) {
       switch (etat) {
         case PremiereDistribution:
           initIAForManche();
           Terminal.ecrireStringln("Donneur : " + this.joueurDonneur);
           this.joueurCourant = table.joueurSuivant(this.joueurDonneur);
           distribuer(3);
           distribuer(2);
           this.table.retournerUneCarte();
           etat = EtatPartieEnum.PremierTourDonne;
           break;
         case PremierTourDonne:
           this.joueurPrend = quiPrendPremiereDonne();
           if (this.joueurPrend == null) {
             etat = EtatPartieEnum.DeuxiemeTourDonne;
           } else {
             this.table.attribuerCarteRetourneeA(this.joueurPrend);
             etat = EtatPartieEnum.DeuxiemeDistribution;
           }
           break;
         case DeuxiemeTourDonne:
           this.joueurPrend = quiPrendDeuxiemeDonne();
           if (this.joueurPrend == null) {
             // Personne n'a pris, on re-distribue les cartes
             // on récupère les cartes
             recupererCartesMain();
             this.table.remettreCarteRetourneeDansLePaquet();
             // on mélange
             this.table.getPaquet().melanger(50);
             etat = EtatPartieEnum.PremiereDistribution;
           } else {
             this.table.attribuerCarteRetourneeA(this.joueurPrend);
             // TODO ça devrait aller dans distribuerDeuxiemeTour
             // ou au moins dans le case DeuxiemeDistribution
             Terminal.ecrireStringln(
                 "----FIN DE LA DONNE-----\n"
                     + this.joueurPrend.toString()
                     + " a pris à : "
                     + this.table.getCouleurAtout());
             etat = EtatPartieEnum.DeuxiemeDistribution;
           }
           break;
         case DeuxiemeDistribution:
           distribuerDeuxiemeTour(this.joueurPrend);
           this.joueurCourant = table.joueurSuivant(joueurDonneur);
           etat = EtatPartieEnum.PhaseDePli;
           break;
         case PhaseDePli:
           jouerUnPli();
           if (this.joueurCourant.getMain().getTailleMain() == 0) {
             /** *************** FIN DE LA MANCHE **************** */
             determinerScoreMancheCourante();
             this.joueurPrend = null;
             remettreLesPlisDansLeTas();
             this.table.reinitialiserLesAnnonces();
             this.joueurDonneur.coupe(this.table.getPaquet());
             this.joueurDonneur = table.joueurSuivant(this.joueurDonneur);
             etat = EtatPartieEnum.PremiereDistribution;
           } else {
             etat = EtatPartieEnum.PhaseDePli;
           }
           break;
       }
     }
     Terminal.ecrireStringln("FIN DE LA PARTIE \n---------------------");
     Terminal.ecrireStringln("Voulez-vous rejouer ? (oui - 1 / non - 0)");
     jouer = Terminal.lireInt();
     // reinitialiser les scores dans equipes
     this.table.getEquipes().get(0).resetScorePartie();
     this.table.getEquipes().get(1).resetScorePartie();
   }
   Terminal.ecrireStringln("Merci d'avoir joue a notre jeu !");
 }