[JAVA ] relancer le main

Fermé
pr - 18 juin 2012 à 21:45
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 - 18 juin 2012 à 22:46
Bonjour,

J'ai deux classe :

public class Lancement {

    /** Creates a new instance of Lancement */
    public Lancement() {
    }

    /**
     * 
     * @param args 
     */
    public static void main(String[] args) {
        Jeu jeu = new Jeu(750, 1000, 200, 345);
        ArrayList<Arme> armes = new ArrayList<Arme>();
        Dimension dim = new Dimension(500, 800);
        jeu.initSimulation();
        vueJeu vue = new vueJeu(jeu);
        //Vue vueJ = new Vue(jeu);
    }
}


et

public class vueJeu implements interfaces.Observateur {

    private Jeu jeu;
    private JFrame fenetre = new JFrame("Une partie");
    ...
    bStop.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                ImageIcon img = new ImageIcon("./src/vue/Images/win.png");
                vueJeu.this.jeu.setFinPartie(true);
                vueJeu.this.bStop.setEnabled(false);
                if (vueJeu.this.jeu.getScoreCourant() >= vueJeu.this.jeu.getObjectifScore()) {
                    JOptionPane.showMessageDialog(vueJeu.this.fenetre, "<html><b>Vous avez gagné !!!!!</b> ", "Résultat", JOptionPane.INFORMATION_MESSAGE, img);
                } else {
                    JOptionPane.showMessageDialog(vueJeu.this.fenetre, "Vous avez perdu", "Résultat", JOptionPane.INFORMATION_MESSAGE);
                }
                if(vueJeu.this.rejouer()==false){
                    System.exit(0);
                } 
            }

        ....
 public boolean rejouer() {
        boolean rejouer=true;
        int option = JOptionPane.showConfirmDialog(null, "Voulez-vous rejouer ?", "Rejouer", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        if (option == JOptionPane.OK_OPTION) {
            rejouer = true;
        } else if(option == JOptionPane.NO_OPTION || option == JOptionPane.CANCEL_OPTION || option == JOptionPane.CLOSED_OPTION){
            rejouer=false;
        }       
        return(rejouer);
    }
        });



Lorsque j'appuie sur le bouton stop dans vueJeu, une Joption pane me demande de choisir si je veux relancer ou pas.
Je ne sais pas comment faire pour relancer la premiere classe qui contient le main lorsque je clique sur oui.

Merci d'avance
A voir également:

3 réponses

KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
18 juin 2012 à 21:56
Le plus simple vu ton architecture en deux classes est de faire un appel static :

if (option == JOptionPane.OK_OPTION)
    Lancement.main(null); // remplacer null par String[] args si nécessaire
0
Je ne peux pas faire appel à lancement dans la classe vueJeu.
Netbeans refuse.
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
18 juin 2012 à 22:32
Netbeans s'octroie de toute évidence des privilèges qui ne devrait pas être, la méthode main est une méthode comme une autre, et puisqu'elle est static, elle devrait pouvoir être appelée comme je l'ai montrée.

Exemple bidon :

public class A
{
    public static void main(String[] args)
    {
        System.out.println("A");
    }
}

public class B
{
    public static void main(String[] args)
    {
        System.out.println("B");
        for (int i=0; i<5; i++)
            A.main(args);
    }
}
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 juin 2012 à 22:21
Bonjour,

Dans ton cas, pour relancer le jeu, tu doit relancer une instance de ta classe Lancement (le main est exécuté quand tu instancie ta classe)

le mieux étant de gérer le lancement de ton jeu dans une méthode autre que le main(). Par exemple : une méthode initJeu()

Ensuite tu n'aura plus qu'à appeler cette méthode lorsque tu veux relancer ton jeux.

Maintenant, à voir
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
18 juin 2012 à 22:32
le main est exécuté quand tu instancie ta classe

Non, le main est une méthode static, il n'y a pas à avoir d'instanciation pour l'appeler, ici c'est plutôt Netbeans qui fait son capricieux avec le concepteur d'interface graphique.
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 juin 2012 à 22:46
Je n'avais pas vu les messages d'avant, effectivement, me main étant statique on peut l'appeler comme tu l'as précisé.
quand je parlais d'instanciation c'était pour simplifier l'idée, le main étant rarement appelé manuellement.
0