Je suis en train de réaliser un Bomberman. Je souhaite mettre en place un bouton pause afin que le joueur puisse stopper momentanément le jeu.
J’essaie d’utiliser des threads afin de pouvoir mettre mon Thread de jeu en attente quand on clique sur le bouton avec la méthode wait. Mais bon, j’ai l’air de très mal m’y prendre, car soit j’obtiens une erreur du type: Current Thread Not Owner ou alors l’ensemble des threads sont bloqués et je ne peux pas recliquer sur le bouton “pause”…
En gros, j’ai implémenté le programme suivant
[cpp]
public class Jeu extends JFrame implements JeuI,ActionListener,KeyListener{
private Plateau plateau;
private Thread plat;
public Jeu(){
// comme Jeu hérite de JFrame, on peut lui spécifier un titre et une taille
setTitle("Bomberman");
setSize(new Dimension(800,600));
this.setFocusable(true);
// on spécifie au JFrame qu'un clic sur la croix aura pour effet de fermer le programme
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void demarrer(){
plateau = new Plateau(9, nbJoueurs);
plat = new Thread(plateau);
plat.start();
…
}
public void actionPerformed(ActionEvent evt){
Object source = evt.getSource();
if (source == pause){
try {
plat.wait();
} catch (InterruptedException e) {}
}
}
public class Plateau extends JPanel implements PlateauI,Runnable{
public Plateau(int tailleMatrice, int nbJoueurs){
setBackground(Color.white); //couleur de fon
…
}
public void run(){
timerMonstre = creerTimerMonstre();
timerMonstre.start();
while(true){
System.out.println("a");
}
}
[/cpp]
Bien sûr c’est qu’une petite partie du programme pour que vous puissiez voir la démarche que j’ai voulu emprunter… qui n’est pas du tout bonne :fou: :??:
Comment faire pour ne bloquer que le programme exécutant le jeu en lui même, contenu dans la classe Plateau?
Merci d’avance pour vos réponses. :jap: