[Java] déplacements KeyListener

Fermé
Hokusaï - 11 nov. 2009 à 17:44
 panc - 6 déc. 2010 à 17:42
Bonjour,

J'essaie de programmer un petit jeu de "combat" en Java.
J'ai créer ma fenetre avec mon fond d'écran et j'y ai inserer mon personnage. Mais je n'arrive pas a le faire se déplacer de droite a gauche.
J'ai essayé de la faire se déplacer avec KeyListener mais je n'y arrive pas.
Voilà mes petits bouts de code:

MON PERSONNAGE:

public class Player extends JLabel
{
private Integer w,h,x,y;

public void refresh()
{
setBounds(this.x,this.y,this.w,this.h);
}
public void setTaille(Integer w,Integer h)
{
this.w = w;
this.h = h;
}
public void setPosition(Integer x,Integer y)
{
this.x = x;
this.y = y;
refresh();
}
public void movex(Integer x)
{
this.x += x;
refresh();
}
}

MON "PROTOTYPE DE CONTROLER:

public class Controller implements KeyListener
{
public void keyPressed (KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_Q) { /*player1.movex(-10);*/ }
if(e.getKeyCode()==KeyEvent.VK_D) { /*player1.movex(+10);*/ }
}
public void keyTyped (KeyEvent e)
{
}
public void keyReleased (KeyEvent e)
{
}
}

Voilà. JE suis vraiment bloqué, est ce que quelqu'un pourrait me donner une piste svp?
A voir également:

4 réponses

Personne n'a d'idées concernant mon petit problème?
0
A L'aide!!!
0
J'ai améliorer mon programme un petit peu. Mais ca ne fonctionne toujours pas.
Pas de problemes a la compilation mais les personnages ne bougent toujours pas.
Quelqu'un a une piste???



import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;


//pour les intersections
//voir http://www.infos-du-net.com/forum/192643-21-resolu-java-detecter-contact-jlabel

//faut dabord reussir a faire bouger liukang avec movex. Le probleme c'est le Keylistener j'arrive pas.

public class MainFrame extends JFrame
{
static JPanel panelbg;
static Player player1;
static Player player2;


public void setBackground(String src)
{
final Image image = new ImageIcon(src).getImage();

panelbg = new JPanel()
{
protected void paintComponent(Graphics g)
{
Dimension d = getSize(); //capture les dimensions de la fenetre
g.drawImage(image, 0, 0, d.width, d.height, null); //dessine l'image aux dimensions de la fenetre
super.paintComponent(g); //peint la fenetre avec ce qu'on a choisi
}
};

panelbg.setLayout(null);
panelbg.setOpaque(false);
getContentPane().add(panelbg);
}

public static void main(String [] args)
{
MainFrame frame = new MainFrame();
frame.setTitle("Kung-Fu Mast3r");
frame.setSize(800,600);
frame.setResizable(false);
frame.setBackground("sf2-blanka.gif");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

player1 = new Player();
player1.setIcon(new ImageIcon("liukang2.jpg") );
player1.setTaille(47,193);
player1.setPosition(200,325);

player2 = new Player();
player2.setIcon(new ImageIcon("liukang3.jpg"));
player2.setTaille(47,193);
player2.setPosition(553,325);

panelbg.add(player1);
panelbg.add(player2);
}
}
0
et la class joueur

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;


public class Player extends JLabel implements KeyListener
{
private Integer x,y;
private Integer w,h;

public void refresh()
{
setBounds(this.x,this.y,this.w,this.h);
}
public void setTaille(Integer w,Integer h)
{
this.w = w;
this.h = h;
}
public void setPosition(Integer x,Integer y)
{
this.x = x;
this.y = y;
refresh();
}
public void movex(Integer x)
{
this.x += x;
refresh();
}

public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_RIGHT) movex(50);
if(e.getKeyCode()==KeyEvent.VK_LEFT) movex(-50);
}
}
0
je crois que le probleme se trouve au niveau de l'héritage. peut etre que le JLabel ne peut pas écouté quelque chose qui vien de keylistener. Fait un héritage de JFrame.
0