public VuePartie(BatailleNavale batailleNavale, Jeu jeu, Profil profil, final Partie partie) {
        
        try {
            this.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("stockage/"+partie.getParametre().getEpoque().getNom()+"/"+partie.getParametre().getEpoque().getImage())))));
        } catch (IOException ex) {
            System.err.println("Aucune image de fond n'a ete trouvee");
        }
        
        initComponents();
        this._batailleNavale = batailleNavale;
        this._jeu = jeu;
        this._profil = profil;
        this._partie = partie;
        this.updateBoutonsDifficultee(partie.getParametre().getDifficulte());
        
        this.etatBateaux = new JPanel();
        this.etatBateaux.setOpaque(false);
        this.etatBateaux.setLayout(new BoxLayout(this.etatBateaux, BoxLayout.Y_AXIS));
        this.bateaux = new JPanel();
        this.bateaux.setOpaque(false);
        this.bateaux.setLayout(new GridLayout(this._partie.getParametre().getBateaux(this._partie.getParametre().getEpoque()).size(),1));
        
        this.getContentPane().setBackground(Color.WHITE);
        this.popupQuitterPartie.getContentPane().setBackground(Color.WHITE);
        this.popupVictoire.getContentPane().setBackground(Color.WHITE);
        this.labelEpoque.setText(this._partie.getParametre().getEpoque().getNom());
        this.labelTirsReussis.setText(this._partie.getJ1().getNbTirsGagnant() + "");
        this.labelTirsRates.setText(this._partie.getJ1().getNbTirsPerdant() + "");
        
        // On test si la partie a deja commence ou non
        int num = 0;
        boolean test = false;
        while(num < partie.getJ2().getCases().size() && !test) {
            
            if(partie.getJ2().getCases().get(num).isAPortee()) {
                test = true;
            }
            num++;
            
        }
        
        if(partie.isAutomatique() || test) { 
            
            // Le positionnement est aleatoire, on lance la partie
            this.panelInfosBateauxJoueur.setLayout(new BoxLayout(this.panelInfosBateauxJoueur, BoxLayout.X_AXIS));
            this.buttonJouer.setEnabled(false);
            this.buttonJouer.setVisible(false);
            this.labelRotation1.setVisible(false);
            this.labelRotation2.setVisible(false);
            this.initialisation(); 
            
        } else {
            
            // Le positionnement est manuel, on laisse le joueur placer ses bateaux
            this.initialisation();
            this.labelInstructionsJoueur.setText("Vous pouvez déplacer vos bateaux sur la grille de droite.");
            this.labelInstructionsAdversaire.setText("Cliquez sur 'Jouer !' pour commencer la partie.");
            partie.autoriserDragDropJoueur(true);
            this.buttonJouer.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    panelInfosBateauxJoueur.setLayout(new BoxLayout(panelInfosBateauxJoueur, BoxLayout.X_AXIS));
                    for(KeyListener kl : getKeyListeners()) {
                        removeKeyListener(kl);
                    }
                    partie.autoriserDragDropJoueur(false);
                    partie.initialisationPorteeCases();
                    initialisation();
                    buttonJouer.setEnabled(false);
                    buttonJouer.setVisible(false);
                    labelRotation1.setVisible(false);
                    labelRotation2.setVisible(false);
                    manuel = true;
                    miseAJourEtatsBateaux();
                }
            });
            // Activation du listener du clavier
            this.addKeyListener(this);
            this.setFocusable(true);
            this.updatePorteeManuel();
            
        }
        
        this.panelInfosBateauxJoueur.add(this.bateaux);
        this.panelInfosBateauxJoueur.add(this.etatBateaux);
        manuel = true;
        this.miseAJourEtatsBateaux();
        this.popupQuitterPartie.setLocationRelativeTo(null);
        this.setLocationRelativeTo(null);
        
    } // VuePartie(BatailleNavale batailleNavale, Jeu jeu, Profil profil, Partie partie)