示例#1
0
文件: Ville.java 项目: TD-JAVA/Horde
 // Méthode qui permet à un joueur de participer aux constructions en cours.
 public String[] participerAuChantier(Joueur ceJoueur) {
   String[] fini = {"", ""};
   int num, choix, pointUse;
   // S'il existe des batiments en cours de construction
   if (!this.getBatimentEnCours().isEmpty()) {
     Outils.affichage(afficherConstructionEnCours());
     Outils.affichage(Journal.consulterDescription(36));
     choix = Outils.donnerReponseChiffre(batimentEnCours.size() - 1);
     Outils.affichage(
         Journal.consulterDescription(74)
             + batimentEnCours.get(choix).getConso_pa()
             + Journal.consulterDescription(75));
     Outils.affichage(Journal.consulterDescription(76));
     // Si le joueur confirme vouloir participer aux constructions
     if (Outils.conversionBoolean(sc.next())) {
       Outils.affichage(Journal.consulterDescription(77));
       num = Outils.donnerReponseChiffre(ceJoueur.getPa());
       pointUse = batimentEnCours.get(choix).getConso_pa();
       if (batimentEnCours
           .get(choix)
           .setConso_pa((batimentEnCours.get(choix).getConso_pa() - num))) {
         fini[0] = "Y";
         fini[1] = batimentEnCours.get(choix).getNom();
         ceJoueur.setPa(ceJoueur.getPa() - pointUse);
       } else {
         ceJoueur.setPa(ceJoueur.getPa() - num);
       }
     }
   } else {
     fini[0] = "N";
     fini[1] = Journal.consulterDescription(115);
   }
   return fini;
 }
示例#2
0
  /**
   * Permet de recuperer le score de l'equipe qui correspond à la somme des scores de joueurs de
   * l'équipe.
   *
   * @return le score
   */
  public int getScore() {
    int somme = 0;

    for (Joueur joueur : joueurs) somme += joueur.getScore();

    return somme;
  }
示例#3
0
  /** Traitement lors d'un clic sur le bouton fin redéploiement */
  public void cliqueFinRedeploiement() {
    if (joueurEnCours.getPeuple().getNbUniteEnMain() == 0) {
      if ((etape == 2 || etape == 3)) {
        if (Game.getInstance().askConf("Confirmer la fin du redéploiement ?")) {
          if (etape == 2) {

            if (tempEnDeclin) {
              joueurEnCours.getPeuple().decliner();

              tempEnDeclin = false;
            }

            /* on passe à l'étape redéploiement des autres joueurs */
            setEtape(3);

            /* et on indique que le joueur passe au tour suivant pour après ne pas le faire rejouer */
            indexSauvJoueurEnCours = indexJoueurEnCours;

            indexJoueurEnCours = 0;
          }

          if (!deploiementSuivant()) {
            joueurSuivant();
          }

          Game.getInstance().majInfos();
        }
      }
    } else {
      new WinWarn("Il vous reste des unités en main, placez-les !");
    }
  }
示例#4
0
 /**
  * Voir les informations des personnages sur les bandeaux des joueurs
  *
  * @param positionCaseSelectionné position de la case selectionné
  */
 public void voirInfoPersonnage(int[] positionCaseSelectionné) {
   Personnage p = plateau.caseGetPersonnage(positionCaseSelectionné);
   if (p != null) {
     if (joueur1.possedePersonnage(p)) ihmjeu.getBandeau1().getInfo().miseAJour(p);
     else if (joueur2.possedePersonnage(p)) ihmjeu.getBandeau2().getInfo().miseAJour(p);
   }
 }
示例#5
0
  /** Demande aux joueurs ayant des unités en main de les placer */
  public boolean deploiementSuivant() {
    int nextJoueur =
        (indexSauvJoueurEnCours + 1) == lstJoueurs.size() ? 0 : (indexSauvJoueurEnCours + 1);

    for (; indexJoueurEnCours < lstJoueurs.size(); indexJoueurEnCours++) {
      if (indexJoueurEnCours == nextJoueur) {
        continue;
      }

      joueurEnCours = lstJoueurs.get(indexJoueurEnCours);

      Peuple p = joueurEnCours.getPeuple();

      if (p != null && p.getNbUniteEnMain() > 0) {
        Game.getInstance().showTemp(joueurEnCours.getNom() + " se redéploie.");

        return true;
      }
    }

    indexJoueurEnCours = indexSauvJoueurEnCours;
    joueurEnCours = lstJoueurs.get(indexSauvJoueurEnCours);

    return false;
  }
示例#6
0
 /** Verifie si un des deux joueurs gagne la partie */
 public void verifiegagner() {
   Joueur j;
   if (this.verifieEquipeKO(joueur1)) j = joueur2;
   else if (this.verifieEquipeKO(joueur2)) j = joueur1;
   else j = null;
   if (j != null) {
     JOptionPane.showMessageDialog(
         null,
         "Bravo le joueur " + j.getNom() + " a gagner la partie",
         "Fin de la Partie",
         JOptionPane.NO_OPTION,
         new ImageIcon("image/gagner.png"));
     Object[] options = {"Recommencer une nouvelle partie", " Quitter le jeu"};
     int confirm =
         JOptionPane.showOptionDialog(
             null,
             "Que voulez vous faire ?",
             "Quitter le jeu",
             JOptionPane.YES_NO_OPTION,
             JOptionPane.QUESTION_MESSAGE,
             null,
             options,
             options[1]);
     if (confirm == 1) {
       System.exit(0);
     } else if (confirm == 0) {
       ihmjeu.dispose();
       new Jeu();
     }
   }
 }
示例#7
0
  /** Phase de redeploiement */
  public void redeploiement() {
    setEtape(2);
    miseEnMain();
    joueurEnCours.getPeuple().calcBonusUnite();

    Game.getInstance().majInfos();

    Game.getInstance().showTemp(joueurEnCours.getNom() + " se redéploie.");
  }
示例#8
0
 /** De 2 à 5 joueurs */
 @Override
 public void initialisation(Plateau p, List<Joueur> joueurs) {
   premierTour = true;
   initialiserCouleurs();
   this.joueurs = joueurs;
   for (Joueur joueur : joueurs) {
     joueur.initialiserTasDeCartes();
   }
   joueurCourant = joueurs.get(0);
 }
示例#9
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);
 }
示例#10
0
  /**
   * Permet de retirer un joueur de l'equipe. Corollaire : Le joueur quittera egalement son
   * emplacement.
   *
   * @param joueur le joueur
   */
  public void retirerJoueur(Joueur joueur) {
    // effacement
    joueurs.remove(joueur);

    // quitte l'emplacement
    if (joueur.getEmplacement() != null) joueur.getEmplacement().retirerJoueur();

    // quitte l'equipe
    joueur.setEquipe(null);
  }
示例#11
0
  /**
   * Permet de savoir si l'équipe est hors jeu.
   *
   * <p>Si tous les joueurs de l'équipe sont hors jeu, l'équipe est considérée comme hors jeu.
   *
   * @return true si elle l'est, false sinon
   */
  public boolean estHorsJeu() {
    Joueur joueur;
    Enumeration<Joueur> e = joueurs.elements();
    while (e.hasMoreElements()) {
      joueur = e.nextElement();

      // si il y au moins un joueur pas hors jeu
      if (!joueur.estHorsJeu()) return false;
    }

    return true;
  }
示例#12
0
  @Override
  public Joueur gagne() {

    Joueur gagnant = new Joueur("test", "J", 0);
    if (jeuFini()) {
      for (Joueur j : joueurs) {
        if (gagnant.getArgentGagne() < j.getArgentGagne()) {
          gagnant = j;
        }
      }
    }
    return gagnant;
  }
示例#13
0
 @Override
 public String toString() {
   return "Match Simple ("
       + getTour()
       + ") : "
       + j1.prenomNom()
       + " VS "
       + j2.prenomNom()
       + " - "
       + getDate()
       + ", à "
       + getRealTime();
 }
示例#14
0
  /**
   * Traitements en fonction du territoire cliqué
   *
   * @param territoire Territoire cliqué par l'utilisateur
   */
  public void cliqueTerritoire(Territoire territoire) {
    if (etape == 0 || etape == 1) {
      // Phase d'attaque

      if (joueurEnCours.getPeuple().equals(territoire.getOccupant())) {
        List<Peuple> ls = territoire.getPrisesDuTerritoire(tourEnCours);

        if (!ls.contains(getJoueurEnCours().getPeuple())
            && Game.getInstance().askAbandon(territoire)) {
          getJoueurEnCours().getPeuple().abandonTerritoire(territoire);
        }
      } else {
        // if(coutAttaque(territoire) > joueurEnCours.getPeuple().)
        if (getJoueurEnCours().peutAttaquerUnTerritoire(territoire) || territoire.estEnBordure()) {

          if (Game.getInstance().askAttaque(territoire)) {

            if (getJoueurEnCours().attaquer(territoire) && etape == 0) {
              etape = 1;
            }
          }

        } else {
          new WinWarn("Vous ne pouvez pas attaquer ce territoire.");
          return;
        }
      }

      Game.getInstance().majInfos();

    } else if (etape == 2 || etape == 3) {
      // Phase de redéploiement

      if (joueurEnCours.getPeuple().equals(territoire.getOccupant())) {
        int nbPion = Game.getInstance().askNbPion(territoire);

        if (nbPion > 0) {
          getJoueurEnCours().getPeuple().addNbUniteEnMain(-(nbPion - territoire.getNbUnite()));
          territoire.setNbUnite(nbPion);
        } else if (nbPion == 0) {
          if (Game.getInstance().askAbandon(territoire)) {
            getJoueurEnCours().getPeuple().abandonTerritoire(territoire);
          }
        }

        Game.getInstance().majInfos();
      } else {
        new WinWarn("Vous ne pouvez que vous redéployer sur un de vos territoires");
      }
    }
  }
示例#15
0
  public void initHands() {

    for (Joueur joueur : joueurs) {
      joueur.prendreCarte(pioche.piocherCarte());
      joueur.prendreCarte(pioche.piocherCarte());
      fini.put(joueur, new StringBuffer("f"));
    }

    for (Joueur joueur : joueurs) {
      if (joueur.getPts() == 21) {
        for (Joueur j : joueurs) fini.get(j).setCharAt(0, 't');
        JOptionPane.showMessageDialog(null, "BLACKJACK ! Bien joué " + joueur.getPseudo() + "!");
      }
    }
  }
示例#16
0
 public String affiche() {
   return "Match Simple - "
       + getTour()
       + " ("
       + getDate()
       + " à "
       + getRealTime()
       + ")\nSur le "
       + getCourt()
       + ".\n\n"
       + j1.prenomNom()
       + " Contre "
       + j2.prenomNom()
       + "\n\nVoulez-vous modifier ce match ?";
 }
示例#17
0
  /**
   * On distribue 2 cartes troupes à chaque joueur Methode appelé dans "distributionCartesDepart(x,
   * y)"
   *
   * @param hjoueur hashset des joueurs
   * @param htitre hashset des titres
   */
  public void distributionTitreDepart(Set<Joueur> hjoueur, Set<Titre> htitre) {
    // On copie le hashSet des titre dans un tableau
    // On modifiera donc uniquement le tableau et non le hashSet d'initialisation
    Titre[] tabtitre = htitre.toArray(new Titre[htitre.size()]);
    // On convertit le tableau en liste pour mélanger et plus de simplicitée.
    ArrayList<Titre> list = new ArrayList<Titre>(Arrays.asList(tabtitre));
    Collections.shuffle(list);

    for (Joueur j : hjoueur) {
      // On affecte le titre au joueur
      j.setTitre(list.get(0));
      // On supprimer le titre de la liste pour ne pas le redonner
      list.remove(0);
    }
  }
  /** {@inheritDoc} */
  @Override
  public int determinerJoueurLePlusFort(Partie p) {
    int indexJoueur = -1;
    for (Iterator<Joueur> joueurs = p.getJoueurs().iterator(); joueurs.hasNext(); ) {
      Joueur j = joueurs.next();
      if (indexJoueur == -1 && !j.equals(p.getJoueurPresent())) {
        indexJoueur = p.getJoueurs().indexOf(j);
      } else if (!j.equals(p.getJoueurPresent())
          && (j.getNombreTotalDeCartes()
              < p.getJoueurs().get(indexJoueur).getNombreTotalDeCartes())) {
        indexJoueur = p.getJoueurs().indexOf(j);
      }
    }

    return indexJoueur;
  }
示例#19
0
  /** Traitement lors d'un clic sur le bouton passer en déclin */
  public void cliqueDeclin() {
    if (etape == 0
        && joueurEnCours.getPeupleDeclin() == null
        && Game.getInstance().askConf("Confirmer le passage en déclin ?")) {

      // joueurEnCours.getPeuple().decliner();
      // joueurSuivant();
      tempEnDeclin = true;

      setEtape(2);
      miseEnMain();

      Game.getInstance().showTemp(joueurEnCours.getNom() + " se redéploie.");
    }

    Game.getInstance().majInfos();
  }
示例#20
0
  /**
   * permet de fournir le coût de l'attaque d'un territoire donnée appelé depuis TerritoireCase
   *
   * @param t
   * @return
   */
  public double coutAttaque(Territoire t) {
    try {
      return t.coutAttaque(joueurEnCours.getPeuple());
    } catch (Exception e) {
    }

    return 0.0;
  }
示例#21
0
 @Override
 public Boolean jouer(Joueur j, Carte c) {
   Boolean ok = j.poserCarte(plateau, c);
   if (jeuFini()) {
     System.out.println("Le joueur " + gagne().getIdJoueur() + " a gagné !");
   }
   return ok;
 }
示例#22
0
  /** Met à jour les personnages s'ils sont KO */
  public void MAJPVPersonnage() {
    for (Personnage p : joueur1.getEquipe()) {
      if (p.isPointVieEgal0() && !p.isKO()) {
        p.setKO();
        Case c = plateau.getCase(p.getPosition());
        c.liberer();
      }
    }

    for (Personnage p : joueur2.getEquipe()) {
      if (p.isPointVieEgal0() && !p.isKO()) {
        p.setKO();
        Case c = plateau.getCase(p.getPosition());
        c.liberer();
      }
    }
  }
示例#23
0
  /**
   * Distribution de 2 cartes Troupes à chaque joueurs On retire les deux dernières cartes du paquet
   * de troupes
   *
   * @param hjoueur liste des joueurs
   * @param llct paquet des cartes troupes qui sert à donner des cartes aux joueurs
   */
  public void distributionCartesDepart(Set<Joueur> hjoueur, LinkedList<CarteTroupe> llct) {
    for (Joueur j : hjoueur) {
      // Distibution des titres aléatoirement
      distributionTitreDepart(hjoueur, hashTitre);

      int i = 0;
      // On prend la liste de carte troupe du joueur
      ArrayList<CarteTroupe> alct = j.getAlctroupe();

      // On ne prend que deux cartes troupes (à chaque fois la dernière du paquet)
      while (i < 2) {
        alct.add(llct.getLast());
        // On supprime la carte pour ne plus l'avoir dans le paquet
        llct.removeLast();
        i++;
      }
    }
  }
示例#24
0
 /** Traitement lors d'un clic sur le bouton fin tour */
 public void cliqueFinTour() {
   /* en mode conquete, confirmé, et possède au moins un territoire (sinon il ne peut pas redéployer...) */
   if (joueurEnCours.getPeuple().getTerritoiresOccupes().isEmpty()) {
     new WinWarn("Veuillez tout d'abord prendre au moins un territoire");
   } else if ((etape == 0 || etape == 1)
       && Game.getInstance().askConf("Confirmer la fin du tour ?")) {
     redeploiement();
   }
 }
示例#25
0
 public void methode(int valeurMalus, Joueur joueur) {
   valeurCarac = r.nextInt(carac.length);
   switch (valeurCarac) {
     case 0:
       joueur.setAttaque(joueur.attaque + valeurMalus);
       break;
     case 1:
       joueur.setDefense(joueur.defense + valeurMalus);
       break;
     case 2:
       joueur.setVitesse(joueur.vitesse + valeurMalus);
       break;
     case 3:
       joueur.setChance(joueur.chance + valeurMalus);
       break;
   }
   joueur.checkStat();
 }
示例#26
0
  /**
   * Permet d'ajouter un joueur dans l'équipe à un emplacement particulier.
   *
   * @param joueur le joueur
   * @param ej l'emplacement
   * @throws EmplacementOccupeException
   */
  public void ajouterJoueur(Joueur joueur, EmplacementJoueur ej) throws EmplacementOccupeException {
    if (joueur == null) throw new IllegalArgumentException();

    if (ej == null) throw new IllegalArgumentException();

    if (ej.getJoueur() != null) throw new EmplacementOccupeException("EmplacementJoueur occupé");

    // on retire le joueur de son ancienne equipe
    if (joueur.getEquipe() != null) joueur.getEquipe().retirerJoueur(joueur);

    // on l'ajout dans la nouvelle equipe
    joueurs.add(joueur);

    // on modifier sont equipe
    joueur.setEquipe(this);

    // on lui attribut le nouvel emplacement
    joueur.setEmplacementJoueur(ej);
  }
示例#27
0
  /** Changement de joueur dans le tour donné */
  public void joueurSuivant() {
    setEtape(0);

    /* on calcule les gains du tour et on met à jour les pts de victoire */
    int argent = joueurEnCours.calcArgentTour();

    Game.getInstance().showTemp(argent + " point(s) gagné(s) durant ce tour !");
    joueurEnCours.addArgent(argent);

    if (indexJoueurEnCours == lstJoueurs.size() - 1) {
      nouveauTour();
    } else {
      indexJoueurEnCours++;
      joueurEnCours = lstJoueurs.get(indexJoueurEnCours);

      if (joueurEnCours.getPeuple() == null) {
        Game.getInstance().selectionPeuple();
      } else if (joueurEnCours.getPeuple().getNbUnite() == 0) {
        remettreBoite(joueurEnCours.getPeuple());

        Game.getInstance().selectionPeuple();
      }

      miseEnMain();

      Game.getInstance().showTemp(joueurEnCours.getNom() + " attaque !");
    }
  }
示例#28
0
 /**
  * Place un personnage sur le plateau
  *
  * @param j joueur qui va placer les personnages
  * @param idPersonnage numero du personnage dans l'équipe du joueur
  * @param positionCaseSelectionné position de la case à placer le joueur
  * @throws CaseNonVide Exception
  * @throws CaseAdverse Exception
  */
 public void placerPersonnage(Joueur j, int idPersonnage, int[] positionCaseSelectionné)
     throws CaseNonVide, CaseAdverse {
   if (plateau.caseEstVide(positionCaseSelectionné)) {
     if (j == joueur1 && positionCaseSelectionné[0] < TaillePlateauX / 2
         || j == joueur2 && positionCaseSelectionné[0] >= (TaillePlateauX - TaillePlateauX / 2)) {
       Personnage p = j.getPersonnage(idPersonnage);
       p.setPosition(positionCaseSelectionné);
       plateau.poser(p, positionCaseSelectionné);
     } else throw new CaseAdverse();
   } else {
     throw new CaseNonVide();
   }
 }
示例#29
0
 // prélève de l'argent a tous les joueurs (sauf celui ayant tiré la carte)
 // pour le donner au joueur ayant tiré la carte (peut provoquer une faillite)
 @Override
 public void applyEffect(Joueur jou) {
   int i = 0;
   for (Joueur j : this.getMonopoly().getJoueurs()) {
     if (!j.equals(jou)) {
       if (j.getCash() - getMontant() >= 0) {
         j.setCash(j.getCash() - getMontant());
       } else {
         j.faillite();
       }
       i++;
     }
   }
   jou.setCash(jou.getCash() + (i * getMontant()));
 }
示例#30
0
  /** Méthode permettant de passer au tour suivant */
  public void nouveauTour() {
    tourEnCours++;

    if (tourEnCours >= nbTours) {
      Game.gameOver();

    } else {
      // RAZ des étapes
      etape = 0;
      indexJoueurEnCours = 0;

      joueurEnCours = this.lstJoueurs.get(indexJoueurEnCours);

      // Si le peuple n'a pas de joueur, il doit en choisir un
      if (joueurEnCours.getPeuple() == null) {
        Game.getInstance().selectionPeuple();
      }

      Game.getInstance().showTemp(joueurEnCours.getNom() + " attaque !");

      miseEnMain();
    }
  }