Bonjour,
J'ai un petit problème lors de l'exécution d'un bouton. En effet je programme un jeu de type Mario est lorsque mon personnage meurt, j'affichage une image Game-Over et un bouton "Rejouer" permettant de relancer le jeu. Cependant rien ne se passe lorsque je clique sur celui-ci.
Ci-joint le code de ma fenêtre ;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import java.io.IOException;
import java.io.File;
import java.awt.Graphics;
import java.awt.Image;
import java.io.DataInputStream;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
public class Fenetre extends JFrame implements KeyListener,Runnable, ActionListener
{
private Panneau pan;
private JLabel scor, vie;
private Thread t;
private boolean droite, gauche, saut,lance;
private JButton jouer,son,rejouer;
private boolean pause;
private Sound s;
public Fenetre()
{
this.setTitle("Wild Geologist");
this.setSize(new Dimension(800,600));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pan=new Panneau();
pan.setLayout(null);
this.setContentPane(pan);
scor=new JLabel("Score : " + pan.getScore());
scor.setForeground(Color.white);
vie=new JLabel("Vies :");
vie.setForeground(Color.white);
scor.setBounds(10,10,100,15);
vie.setBounds(150,10,100,15);
jouer = new JButton ("Jouer");
jouer.setBackground(Color.green);
jouer.setBounds(300,300,150,50);
pan.add(jouer);
jouer.addActionListener(this);
son = new JButton ("Son off");
son.setBackground(Color.green);
son.setBounds(600,500,75,15);
pan.add(son);
son.addActionListener(this);
rejouer = new JButton ("Rejouer");
rejouer.setBackground(Color.white);
rejouer.setBounds(300,300,75,15);
s = new Sound("mario.wav");
InputStream stream = new ByteArrayInputStream(s.getSamples());
s.setSource(stream);
s.start();
pause=false;
this.addKeyListener(this);
//Méthode run
t=new Thread(this);
}
public void actionPerformed (ActionEvent ae) //
{
if(ae.getSource() == jouer)
{
pan.add(scor);
pan.add(vie);
pan.setFenetr(2);
t.start();
pan.remove(jouer);
pan.remove(son);
}
if(ae.getSource() == rejouer)
{
pan.remove(rejouer);
pan.setFenetr(2);
}
if(ae.getSource()==son)
{
if((pause==false)&&(s.getOnOff()==true))
{
son.setText("Son on");
pause=true;
s.setOnOff(false);
}
else
{
son.setText("Son off");
pause=false;
s.setOnOff(true);
}
}
this.requestFocus();
}
public void keyPressed(KeyEvent ke)
{
if ((ke.getKeyCode()==KeyEvent.VK_SPACE))
{
lance= true;
}
if (ke.getKeyCode()==KeyEvent.VK_RIGHT)
{
droite = true;
}
if (ke.getKeyCode()==KeyEvent.VK_LEFT)
{
gauche = true;
}
if ((ke.getKeyCode()==KeyEvent.VK_UP))
{
if (pan.getSaut() == 0)
{
saut = true;
}
else
{
saut = false;
}
}
}
public void keyReleased(KeyEvent ke)
{
if (ke.getKeyCode()==KeyEvent.VK_RIGHT)
{
droite = false;
}
if (ke.getKeyCode()==KeyEvent.VK_LEFT)
{
gauche = false;
}
if (ke.getKeyCode()==KeyEvent.VK_UP)
{
saut = false;
}
if ((ke.getKeyCode()==KeyEvent.VK_SPACE))
{
lance= false;
}
}
public void keyTyped(KeyEvent ke)
{
}
public void run()
{
int x,y,temps=0;
while(true)
{
try
{
if (droite)
{
pan.deplacementDroite();
}
if (gauche)
{
pan.deplacementGauche();
}
if(saut)
{
pan.deplacementSaut();
}
if (pan.getSaut() == 100)
{
saut=false;
}
if(!saut)
{
pan.deplacementBas();
}
if(pan.getScorediamant()==true)
{
scor.setText(" Score : "+ pan.getScore() );
}
vie.setText("Vies : "+ pan.getPersonnage().getNbvp());
if(pan.getMortPersonnage()==true)
{
pan.add(rejouer);
pan.setFenetr(3);
pan.remove(scor);
pan.remove(vie);
}
pan.diminueInvincible();
temps++;
if(temps%2==0)
{
pan.deplacementMonstre();
}
pan.repaint();
t.sleep(6);
}catch (Exception e) {}
}
}
}
Merci d'avance !
Afficher la suite