コード例 #1
0
ファイル: Partie.java プロジェクト: Alcidauk/SmallWorldUtbm
  /** 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 !");
    }
  }
コード例 #2
0
ファイル: Partie.java プロジェクト: Alcidauk/SmallWorldUtbm
  /** 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 !");
    }
  }
コード例 #3
0
ファイル: Partie.java プロジェクト: Alcidauk/SmallWorldUtbm
  /** Phase de redeploiement */
  public void redeploiement() {
    setEtape(2);
    miseEnMain();
    joueurEnCours.getPeuple().calcBonusUnite();

    Game.getInstance().majInfos();

    Game.getInstance().showTemp(joueurEnCours.getNom() + " se redéploie.");
  }
コード例 #4
0
ファイル: Partie.java プロジェクト: Alcidauk/SmallWorldUtbm
  /** 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;
  }
コード例 #5
0
ファイル: Partie.java プロジェクト: Alcidauk/SmallWorldUtbm
  /** 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();
  }
コード例 #6
0
ファイル: Partie.java プロジェクト: Alcidauk/SmallWorldUtbm
 /** 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();
   }
 }
コード例 #7
0
ファイル: Partie.java プロジェクト: Alcidauk/SmallWorldUtbm
  /** 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();
    }
  }
コード例 #8
0
ファイル: Partie.java プロジェクト: Alcidauk/SmallWorldUtbm
  /**
   * 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");
      }
    }
  }