/** * 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); } }
/** Routine graphique de la désélection d'un personnage */ public void IhmDeselectionPersonnage() { if ((!isDéplacé() && !isAction() && isPlacé()) && personnageSelectionné == caseGetPersonnage(positionCaseSelectionné)) { ihmjeu.getGuiCase(positionCaseSelectionné).setBackground(getJoueurCourant().getColor()); this.setPhase(Phase.SELECTION_PERSONNAGE); ihmjeu.getCommande2().boutonDesactive(); ihmjeu.afficherTerminal("Selectionner un Personnage"); } }
/** * Routine graphique permettant de ne plus voir les cases où l'on peut effectuer l'action * * @param idActionSelectionné action à effectuer */ public void IhmFinVoirCasePossibleAction(int idActionSelectionné) { for (int[] pos : this.VoisinageCaseAction(idActionSelectionné)) { if (this.getCase(pos).estVide()) ihmjeu.getGuiCase(pos).setBackground(Color.WHITE); else if (this.comparepositionCaseSelectionné(personnageSelectionné.getPosition(), pos)) ihmjeu.getGuiCase(pos).setBackground(Color.YELLOW); else if (this.joueur1.possedePersonnage(this.getCase(pos).getPersonnage())) ihmjeu.getGuiCase(pos).setBackground(this.joueur1.getColor()); else if (this.joueur2.possedePersonnage(this.getCase(pos).getPersonnage())) ihmjeu.getGuiCase(pos).setBackground(this.joueur2.getColor()); } }
/** Routine graphique pour la selection des personnages */ public void IhmSelectionPersonnage() { try { personnageSelectionné = this.choisirPersonnage(positionCaseSelectionné); ihmjeu.getGuiCase(positionCaseSelectionné).setBackground(Color.YELLOW); this.setPhase(Phase.NORMAL); ihmjeu.getCommande2().boutonActive(); ihmjeu.afficherTerminal("Selectionner une Commande"); } catch (CaseVide e) { ihmjeu.afficherTerminal("Erreur, la case selectionné est vide. Selectionner un Personnage"); } catch (PersonnageAdverse e) { ihmjeu.afficherTerminal( "Erreur, la personnage selectionné n'est pas le votre. Selectionner un Personnage"); } }
/** 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); } } }
/** Routine graphique du deplacement d'un personnage */ public void IhmDeplacementPersonnage() { try { if (this.verifierCaseDeplacement(personnageSelectionné, positionCaseSelectionné)) { this.IhmFinVoirCasePossibleDeplacement(); this.deplacerPersonnage(personnageSelectionné, positionCaseSelectionné); ihmjeu.getCommande2().deplacementFinie(); } ihmjeu.getGuiCase(positionCaseSelectionné).setBackground(Color.YELLOW); ihmjeu.afficherTerminal("Selectionner une Commande"); this.setPhase(Phase.NORMAL); } catch (DeplacementImpossible e) { ihmjeu.afficherTerminal( "Vos points de mouvements ne permettent pas de se deplacer sur cette case"); } }
/** 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(); } } }
/** Routine graphique de l'action selectionné d'un personnage */ public void IhmActionPersonnage() { try { if (this.verifierCaseAction(idActionSelectionné, positionCaseSelectionné)) { this.personnageAction(personnageSelectionné, idActionSelectionné, positionCaseSelectionné); ihmjeu.getCommande2().actionFinie(); this.IhmFinAction(); this.hasAction(); this.IhmFinVoirCasePossibleAction(idActionSelectionné); this.MAJPVPersonnage(); this.verifiegagner(); } } catch (ActionNonSelectionne e) { ihmjeu.afficherTerminal("Il faut d'abord selectionner une attaque"); } catch (PorteeActionInsuffisante e) { ihmjeu.afficherTerminal("La portée de l'attaque est insuffisante pour atteindre cette case"); } }
/** Routine graphique de la fin d'une Action */ public void IhmFinAction() { ihmjeu.getCommande3().setVisible(false); ihmjeu.remove(ihmjeu.getCommande3()); ihmjeu.getCommande2().setVisible(true); ihmjeu.getContentPane().add(ihmjeu.getCommande2(), BorderLayout.SOUTH); if (tour.isMultipleAction() && !tour.finMultipleAction()) ihmjeu.getCommande2().actionMultiple(); ihmjeu.afficherTerminal("Selectionner une Commande"); this.setPhase(Phase.NORMAL); }
/** 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); } } }
/** Routine graphique de la fin du Tour */ public void IhmFinTour() { ihmjeu .getGuiCase(personnageSelectionné.getPosition()) .setBackground(getJoueurCourant().getColor()); this.finTour(); ihmjeu.getCommande2().setVisible(false); ihmjeu.remove(ihmjeu.getCommande2()); ihmjeu.setCommande2(new IHMCommandeVue2(ihmjeu, this)); ihmjeu.getContentPane().add(ihmjeu.getCommande2(), BorderLayout.SOUTH); ihmjeu.afficherTerminal("Selectionner un Personnage"); this.setPhase(Phase.SELECTION_PERSONNAGE); }
/** Routine graphique lorsque la commande Action est appuyé */ public void IhmActionAppuyé() { ihmjeu.getCommande2().setVisible(false); ihmjeu.remove(ihmjeu.getCommande2()); ihmjeu.setCommande3( new IHMCommandeVue3(personnageSelectionné, ihmjeu, this, getJoueurCourant())); ihmjeu.getContentPane().add(ihmjeu.getCommande3(), BorderLayout.SOUTH); ihmjeu.afficherTerminal("Selectionner une Action"); this.setPhase(Phase.ACTION_PERSONNAGE); }
/** Effectue une sauvegarde de la partie actuelle */ public void sauvegarder() { final Jeu tempjeu = this; ObjectOutputStream oos = null; try { final FileOutputStream fichier = new FileOutputStream("jeu.ser"); oos = new ObjectOutputStream(fichier); oos.writeObject(tempjeu); oos.flush(); } catch (final java.io.IOException e) { e.printStackTrace(); } finally { try { if (oos != null) { oos.flush(); oos.close(); } } catch (final IOException ex) { ihmjeu.afficherTerminal("Sauvegarde Impossible"); } } }
/** Routine graphique pour voir les cases où l'on peut se déplacer le personnage selectionné */ public void IhmVoirCasePossibleDeplacement() { for (int[] pos : this.VoisinageCaseDeplacement(personnageSelectionné)) { ihmjeu.getGuiCase(pos).setBackground(Color.GREEN); } }
/** * Routine graphique permettant de voir les cases où l'on peut effectuer l'action * * @param idActionSelectionné action à effectuer */ public void IhmVoirCasePossibleAction(int idActionSelectionné) { for (int[] pos : this.VoisinageCaseAction(idActionSelectionné)) ihmjeu.getGuiCase(pos).setBackground(Color.RED); }
/** Routine graphique pour le placement des personnages */ public void IhmPlacementPersonnage() { try { this.placerPersonnage( getJoueurCourant(), IdPersonnageSelectionné, this.positionCaseSelectionné); this.IhmFinVoirCasePossiblePlacement(); ihmjeu.getCommande1().placementReussi(IdPersonnageSelectionné); ihmjeu.getCommande1().boutonActive(IdPersonnageSelectionné); } catch (CaseNonVide e) { JOptionPane.showMessageDialog( null, "La case n'est pas vide", e.toString(), JOptionPane.ERROR_MESSAGE); } catch (CaseAdverse e) { JOptionPane.showMessageDialog( null, "La case selectionné est dans le champs adverse", e.toString(), JOptionPane.ERROR_MESSAGE); } if (_countjoueur < 1 && ihmjeu.getCommande1().finPlacement()) { _countjoueur++; ihmjeu.remove(ihmjeu.getCommande1()); this.joueurSuivant(); ihmjeu.setCommande1(new IHMCommandeVue1(this, getJoueurCourant())); ihmjeu.getContentPane().add(ihmjeu.getCommande1(), BorderLayout.SOUTH); ihmjeu.afficherTerminal( "Joueur " + this.getJoueurCourant().getNom() + " : Placer vos personnages sur le plateau"); } else if (_countjoueur == 1 && ihmjeu.getCommande1().finPlacement()) { this.hasPlacé(); this.joueurSuivant(); this.setPhase(Phase.SELECTION_PERSONNAGE); ihmjeu.remove(ihmjeu.getCommande1()); ihmjeu.setCommande2(new IHMCommandeVue2(ihmjeu, this)); ihmjeu.getContentPane().add(ihmjeu.getCommande2(), BorderLayout.SOUTH); ihmjeu.afficherTerminal("Selectionner un Personnage"); } }
/** Effacer les informations contenues dans les bandeaux (IHMBandeau) */ public void finInfoPersonnage() { ihmjeu.getBandeau1().getInfo().miseAJour(null); ihmjeu.getBandeau2().getInfo().miseAJour(null); }