k***@tiscali.ch
2006-10-02 09:21:14 UTC
Also ich habe folgendes Problem:
ich bin ein ziemlicher Anfänger was Java betrifft und bei diesem
kleinen simplen Spiel stosse ich auf Probleme mit dem KeyListener.
Es ist eine Art MarioKart, die Oberfläche und alles zeigt es mir alles
schön und gut an, doch die Sache mit dem KeyListener geht nicht, wenn
ich die bestimmte Taste drücke sollte (vorerst ein Fahrer(mario)) um
eine gewisse x-achsen Zahl (die ja bestimmt werden kann) nach rechts
vorrücken zu können, doch bei meinem jetztigen Stand komme ich nicht
mehr weiter.
In der KeyPressed Methode habe ich auch noch ein System.out.println
getan doch selbst die funktioniert nicht
Hier der Code: Hoffe ihr könnt mir tipps geben --> code
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MarioKart extends JFrame implements KeyListener,
ActionListener {
int a = 32;
int mx = 10;
JPanel buttonPanel = new JPanel();
JPanel racePanel = new JPanel();
//private JButton reset = new JButton("Restart Race");
private JButton quit = new JButton("Exit Game");
//ImageIcon mario = new ImageIcon(getIconImage(), "Mario.gif");
JLabel mario = new JLabel(new ImageIcon("Mario.gif"));
JLabel luigi = new JLabel(new ImageIcon("Luigi.gif"));
JLabel peach = new JLabel(new ImageIcon("Peach.gif"));
JLabel yoshi = new JLabel(new ImageIcon("Yoshi.gif"));
JLabel dk = new JLabel(new ImageIcon("DK.gif"));
JLabel bowser = new JLabel(new ImageIcon("Bowser.gif"));
JLabel koppa = new JLabel(new ImageIcon("Koppa.gif"));
JLabel toad = new JLabel(new ImageIcon("Toad.gif"));
private Container contentPane = new Container();
public MarioKart() {
setSize(600, 400);
setTitle("Mario Grand-Prix");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setFocusable(true);
// dem Container wird das Layout und die Panels übergeben
contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(BorderLayout.NORTH, buttonPanel);
contentPane.add(BorderLayout.CENTER, racePanel);
// dem buttonPanel wird ein Layout übergeben und der Knopf "reset"
buttonPanel.setLayout(new FlowLayout());
//buttonPanel.add(reset);
buttonPanel.add(quit);
quit.addActionListener(this);
// dem racePanel wird Layout(null) übergeben und alle JLabels mit
den Bildern der Fahrer
racePanel.setLayout(null);
//racePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
racePanel.add(mario);
racePanel.add(luigi);
racePanel.add(peach);
racePanel.add(yoshi);
racePanel.add(dk);
racePanel.add(bowser);
racePanel.add(koppa);
racePanel.add(toad);
// den JLables(Bilder) muss jetzt Standort (x-achse und y-achse) und
die effektive Grösse des JLabels (Hier habe ich die genau
// die Grösse der Bilder genommen (32px, 32px)) übergeben werden
mario.setBounds(mx,50,a,a);
luigi.setBounds(10,82, a, a);
peach.setBounds(10,114, a, a);
yoshi.setBounds(10,146, a, a);
dk.setBounds(10,178, 32, a);
bowser.setBounds(10,210, a, a);
koppa.setBounds(10,242, a, a);
toad.setBounds(10,274, a, a);
addKeyListener(this);
this.requestFocus();
show();
}
public void movemario(int b1){
if (b1 == 1){
//mario.getLocation().getX();
mario.setBounds(mx+100,50,a,a);
//mx = mx+100;
}
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_N) {
System.out.println("hallo");
movemario(1);
//mx = mx+=100;
/*mario.setBounds(200,50,a,a);
mario.setLocation(200,50);
mario.setVisible(true);*/
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == quit) {
System.exit(0);
}
}
public static void main(String args[]) {
MarioKart mk = new MarioKart();
}
}
ich bin ein ziemlicher Anfänger was Java betrifft und bei diesem
kleinen simplen Spiel stosse ich auf Probleme mit dem KeyListener.
Es ist eine Art MarioKart, die Oberfläche und alles zeigt es mir alles
schön und gut an, doch die Sache mit dem KeyListener geht nicht, wenn
ich die bestimmte Taste drücke sollte (vorerst ein Fahrer(mario)) um
eine gewisse x-achsen Zahl (die ja bestimmt werden kann) nach rechts
vorrücken zu können, doch bei meinem jetztigen Stand komme ich nicht
mehr weiter.
In der KeyPressed Methode habe ich auch noch ein System.out.println
getan doch selbst die funktioniert nicht
Hier der Code: Hoffe ihr könnt mir tipps geben --> code
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MarioKart extends JFrame implements KeyListener,
ActionListener {
int a = 32;
int mx = 10;
JPanel buttonPanel = new JPanel();
JPanel racePanel = new JPanel();
//private JButton reset = new JButton("Restart Race");
private JButton quit = new JButton("Exit Game");
//ImageIcon mario = new ImageIcon(getIconImage(), "Mario.gif");
JLabel mario = new JLabel(new ImageIcon("Mario.gif"));
JLabel luigi = new JLabel(new ImageIcon("Luigi.gif"));
JLabel peach = new JLabel(new ImageIcon("Peach.gif"));
JLabel yoshi = new JLabel(new ImageIcon("Yoshi.gif"));
JLabel dk = new JLabel(new ImageIcon("DK.gif"));
JLabel bowser = new JLabel(new ImageIcon("Bowser.gif"));
JLabel koppa = new JLabel(new ImageIcon("Koppa.gif"));
JLabel toad = new JLabel(new ImageIcon("Toad.gif"));
private Container contentPane = new Container();
public MarioKart() {
setSize(600, 400);
setTitle("Mario Grand-Prix");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setFocusable(true);
// dem Container wird das Layout und die Panels übergeben
contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(BorderLayout.NORTH, buttonPanel);
contentPane.add(BorderLayout.CENTER, racePanel);
// dem buttonPanel wird ein Layout übergeben und der Knopf "reset"
buttonPanel.setLayout(new FlowLayout());
//buttonPanel.add(reset);
buttonPanel.add(quit);
quit.addActionListener(this);
// dem racePanel wird Layout(null) übergeben und alle JLabels mit
den Bildern der Fahrer
racePanel.setLayout(null);
//racePanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
racePanel.add(mario);
racePanel.add(luigi);
racePanel.add(peach);
racePanel.add(yoshi);
racePanel.add(dk);
racePanel.add(bowser);
racePanel.add(koppa);
racePanel.add(toad);
// den JLables(Bilder) muss jetzt Standort (x-achse und y-achse) und
die effektive Grösse des JLabels (Hier habe ich die genau
// die Grösse der Bilder genommen (32px, 32px)) übergeben werden
mario.setBounds(mx,50,a,a);
luigi.setBounds(10,82, a, a);
peach.setBounds(10,114, a, a);
yoshi.setBounds(10,146, a, a);
dk.setBounds(10,178, 32, a);
bowser.setBounds(10,210, a, a);
koppa.setBounds(10,242, a, a);
toad.setBounds(10,274, a, a);
addKeyListener(this);
this.requestFocus();
show();
}
public void movemario(int b1){
if (b1 == 1){
//mario.getLocation().getX();
mario.setBounds(mx+100,50,a,a);
//mx = mx+100;
}
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_N) {
System.out.println("hallo");
movemario(1);
//mx = mx+=100;
/*mario.setBounds(200,50,a,a);
mario.setLocation(200,50);
mario.setVisible(true);*/
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource() == quit) {
System.exit(0);
}
}
public static void main(String args[]) {
MarioKart mk = new MarioKart();
}
}