[Java] déplacements KeyListener

Hokusaï -  
 panc -
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

Hokusaï
 
Personne n'a d'idées concernant mon petit problème?
0
Hokusaï
 
A L'aide!!!
0
Hokusaï
 
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
Hokusaï
 
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
panc
 
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