예제 #1
0
 /**
  * @param name
  * @return renvoit le pion et le retir de la liste des pions si il y en a encore un, renvoit null
  *     sinon, et ne touche pas à la liste des pions.
  */
 protected Pion getPion(ArrayList<Pion> listPion, String name) {
   for (Pion i : listPion) {
     if (i.getName().equals(name)) {
       listPion.remove(i);
       return i;
     }
   }
   return null;
 }
예제 #2
0
  /**
   * @param oldX, oldY, x, y, joueur
   * @return renvoit true si le pion de la case (oldX,oldY) peut être déplacer sur la case (x,y)
   *     Attention: Si la case sur laquelle on souhaite déplacer son pion est occupée par un pion
   *     adverse, cette methode renvoit true.
   */
  public boolean canMoveOnNewCase(int oldX, int oldY, int x, int y, boolean joueur) {
    Pion attaquant = map.getPion(oldX, oldY);
    if (attaquant == null) // verification "inutile", mais on est jamais trop prudent.
    {
      return false;
    }
    // Si on tente de déplacer un pion qui ne nous appartient pas.
    else if (attaquant.getTeam() != joueur) {
      return false;
    } else {
      byte nbrPas = attaquant.getNbrDePas();

      // Soit un déplacement verticale (donc les x)
      if (logicalXOR(
          ((0 < oldX - x && oldX - x <= nbrPas) || (0 < x - oldX && x - oldX <= nbrPas)),
          // Soit un déplacement horizontale (donc les y)
          ((0 < oldY - y && oldY - y <= nbrPas) || (0 < y - oldY && y - oldY <= nbrPas)))) {
        if (oldX != x && oldY != y) {
          return false;
        }
        // Verifie s'il il n'y as pas de pion sur le trajet, lorsque la distance parcourue est
        // différente de 1.
        if (nbrPas != 1 && checkObstacleOnWay(oldX, oldY, x, y, nbrPas)) {
          return false;
        }
        Pion defenseur = map.getPion(x, y);
        if (defenseur == null) {
          return true;
        }
        // si blackout
        if (defenseur.getName().equals("blackout")) {
          return false;
        }
        // deplacer un pion sur un pion adverse.
        else if (defenseur.getTeam() != attaquant.getTeam()) {
          return true;
        }
        // tenter de deplacer un pion sur un autre pion qui nous appartient, ou sur une case
        // interdite.
        else {
          return false;
        }
      } else return false;
    }
  }