Partage
  • Partager sur Facebook
  • Partager sur Twitter

Recommencer une partie

Dans un jeu de démineur

    19 mai 2012 à 15:54:50

    Bonjour à tous,

    J'ai un petit soucis dans le démineur que je suis entrain de faire, tout fonctionne bien mais je n'arrive pas à recommencer une partie.

    A la base j'ai trois fichiers .java
    Le premier "case.java" représente mes cases de jeu.

    Le deuxième "plateau.java" représente le démineur en lui même, il contient un tableau à deux dimension de "case" et c'est dans ce fichier que je calcul les mines adjacentes, si j'ai gagné ou pas, la propagation des cases vides quand je clique etc.

    Et pour finir j'ai "fenetre.java" qui contient toute la partie graphique, à savoir les smileys, les icones (de drapeau, de mines etc), et qui contient mes évènements (clic droit/gauche de la souris etc).

    Lorsque je clique sur "Nouvelle partie" je n'arrive tout simplement pas à réinitialiser mon jeu.

    Pour l'instant je fais qqch comme sa :
    Dans fenetre.java
    this.nouvellePartie.addActionListener(new ActionListener() {
    
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				System.out.println("Nouvelle partie");
    				plateau.intialiserPlateau(15, 15);
    			}
    			
    		});
    


    Et ma méthode ressemble a ceci :
    public void intialiserPlateau(int nbCaseX, int nbCaseY) {
    		this.tabCase = new Case[nbCaseX][nbCaseY];
    		this.nbCaseX = nbCaseX;
    		this.nbCaseY = nbCaseY;
    		this.nbMinesDecouvertesAvecDrapeau = 0;
    		this.nbDrapeau = 0;
    		
    		nbMineAMettre();
    		for(int i = 0; i < nbCaseX; i++)
    		{
    			for(int j = 0; j < nbCaseY; j++)
    			{
    				tabCase[i][j] = new Case();
    				tabCase[i][j].getBouton().setPreferredSize(new Dimension(35 , 35));
    				tabCase[i][j].getBouton().setEnabled(true);
    			}
    		}
    		//Maintenant on initialise les mines !
    		initMines(false);
    	}
    


    Cela ne fonctionne pas du tout :(

    J'ai également testé, dans mon fichier "fenetre.java" de faire un :
    public void setPlateau(Plateau plateau) {
    		this.plateau = plateau;
    	}
    


    Et de lui envoyer donc :
    setPlateau(new Plateau(15, 15));
    


    Bref tout ceci ne sert à rien, car mon démineur n'est jamais réinitialisé.

    Savez vous comment faire ceci ?

    Bonne journée :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      19 mai 2012 à 18:17:49

      Essaye d'enlever ton plateau avec la méthode remove puis tu réinitialise ton plateau avec la méthode de ton choix et tu le remets avec add.
      • Partager sur Facebook
      • Partager sur Twitter
        20 mai 2012 à 16:38:35

        Salut :)

        Plateau est une classe, je ne peux pas faire "plateau.remove()" car cela n'existe pas pour cela. De même la methode ".add()" n'existe pas, il ne s'agit pas d'un JPanel ou JButton, mais d'une classe.

        Personnellement je pensais qu'un "plateau = new Plateau(15, 15);" me permettrais de rejouer, mais rien ne se passe :/

        Par contre quand je fais un "fenetre = new Fenetre();" sa m'ouvre bel et bien une nouvelle fenêtre avec un nouveau jeu (mais perso je ne veux pas d'une nouvelle fenêtre juste d'un nouveau plateau).

        Comment faire sa ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          20 mai 2012 à 19:34:03

          Tu as essayé un repaint() après plateau.initialiserPlateau() dans ton ActionListener ?
          • Partager sur Facebook
          • Partager sur Twitter

          Recommencer une partie

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown