/** * 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(); } }
/** Routine graphique pour voir les cases où l'on peut se placer le personnage selectionné */ public void IhmVoirCasePossiblePlacement() { for (int i = 0; i < TaillePlateauX; i++) { for (int j = 0; j < TaillePlateauY; j++) { int[] positionCaseSelectionné = {i, j}; if (getJoueurCourant() == joueur1 && plateau.caseEstVide(positionCaseSelectionné) && i < TaillePlateauX / 2) ihmjeu.getGuiCase(positionCaseSelectionné).setBackground(Color.GREEN); else if (getJoueurCourant() == joueur2 && plateau.caseEstVide(positionCaseSelectionné) && i >= (TaillePlateauX - TaillePlateauX / 2)) ihmjeu.getGuiCase(positionCaseSelectionné).setBackground(Color.GREEN); } } }
/** * 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); } }
/** 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(); } } }
/** Lie les cases avec les IHMCase (case graphique JButton) */ public void lierCaseInterface() { for (int i = 0; i < TaillePlateauX; i++) { for (int j = 0; j < TaillePlateauY; j++) { int[] positionCaseSelectionné = {i, j}; Case c = plateau.getCase(positionCaseSelectionné); IHMCase ie = ihmjeu.getGuiCase(positionCaseSelectionné); c.addObserver(ie); } } }
/** * Utilise l'action du personnage selectionné * * @param p personnage selectionné * @param idActionSelectionné action selectionné * @param positionCaseSelectionné position de la case où l'on veut lancer l'attaque */ public void personnageAction( Personnage p, int idActionSelectionné, int[] positionCaseSelectionné) { Class<?> c = p.getAction(idActionSelectionné); typePortee tp; try { Constructor<?> constructeur = c.getConstructor(new Class[] {Personnage.class, Jeu.class}); tp = (typePortee) c.getMethod("getTypePortee").invoke(c); if (tp == typePortee.CIBLE) { for (int[] tc : this.VoisinageCaseZoneCible(positionCaseSelectionné)) { if (plateau.caseGetPersonnage(tc) != null) constructeur.newInstance(new Object[] {plateau.caseGetPersonnage(tc), this}); } } else if (plateau.caseGetPersonnage(positionCaseSelectionné) != null) { constructeur.newInstance( new Object[] {plateau.caseGetPersonnage(positionCaseSelectionné), this}); } } catch (Exception e) { } }
/** * Deplace un personnage * * @param p personnage à déplacer * @param positionCaseSelectionné nouvelle position du personnage à déplacer */ public void deplacerPersonnage(Personnage p, int[] positionCaseSelectionné) { plateau.libererCase(p.getPosition()); p.deplacer(positionCaseSelectionné); plateau.poser(p, positionCaseSelectionné); this.hasDéplacé(); }
/** * Retourne le personnage présent sur cette case * * @param positionCaseSelectionné position de la case du personnage à recuperer * @return le personnage de cette case */ public Personnage caseGetPersonnage(int[] positionCaseSelectionné) { return plateau.caseGetPersonnage(positionCaseSelectionné); }