Bewegung funktioniert nicht

HackerBanane

Mitglied
Hallo und schonmal vielen dank für eure mühe!

Ich lerne gerade Java mit einem Buch und Parallel mit YouTube Tutorials und habe mit meinem Vater eine Wette, wer als erstes PacMan programmiert.
Ich nutze die IDE Eclipse und habe folgendes Problem:

In ein JFrame habe ich 2 Images hinzugefügt: eines als Hintergrund und eines mit einer PacManfigur.
Mithilfe von Tutorials, die ich auf mein Ziel (PacMan) angepasst habe,
habe ich probiert meine PacManfigur erstmal von links nach rechts und andersherum mit den Pfeiltasten zu bewegen, aber es funktioniert nicht, egal wie oft ich alles prüfe und neu schreibe, weshalb ich euch um Hilfe bitte.
Ich habe 2 Klassen: die eine für das Spielmenü und die Buttons usw, die frame.java heißt,
und eine Klasse für das, was im Spiel passieren soll, die Gui.java heißt.

Das ist die frame Klasse:
Java:
package de.hackerbanane.pacman;


import javax.swing.*;


import java.awt.*;


import java.awt.event.*;





public class frame extends JFrame implements ActionListener {


    


    private JButton spielen;


    private JButton einstellungen;


    private JButton info;


    private JButton ende;


    


    


    public static void main(String[] args) {


        


        frame frame = new frame("PacMan -Menü-");


        frame.setDefaultCloseOperation(JFrame.[B][I]EXIT_ON_CLOSE[/I][/B]);


        frame.setSize(400, 400);


        frame.getContentPane().setBackground(Color.[B][I]DARK_GRAY[/I][/B]);


        frame.setLayout(null);


        frame.setVisible(true);


        


    }








    public frame(String title) {


        


        super(title);


        


        spielen = new JButton("Spiel starten");


        spielen.setBounds(120, 40, 160, 40);


        spielen.addActionListener(this);


        add(spielen);


        


        einstellungen = new JButton("Einstellungen");


        einstellungen.setBounds(120, 120, 160, 40);


        einstellungen.addActionListener(this);


        add(einstellungen);


        


        info = new JButton("INFO");


        info.setBounds(120, 200, 160, 40);


        info.addActionListener(this);


        add(info);


        


        ende = new JButton("Ende");


        ende.setBounds(120, 280, 160, 40);


        ende.addActionListener(this);


        add(ende);


        


    }


    


    public static void spiel() {


        


        JFrame spiel = new JFrame("PacMan");


        spiel.setDefaultCloseOperation(JFrame.[B][I]EXIT_ON_CLOSE[/I][/B]);


        spiel.setSize(700,700);


        spiel.setVisible(true);


        spiel.add(new Gui());


        


    }


    


    public static void auswahl() {


        


    } 





    public void actionPerformed(ActionEvent e) {





        if (e.getSource() == spielen ) {


            [I]spiel[/I]();


            


        }


        


        if (e.getSource() == info ) {


            Object[] options = { "OK"};


            


            JOptionPane.[I]showOptionDialog[/I](null,"Programmiert von HackerBanane!","Information",JOptionPane.[B][I]DEFAULT_OPTION[/I][/B],JOptionPane.[B][I]PLAIN_MESSAGE[/I][/B],null,options,options[0]);


        }


    


        if (e.getSource() == einstellungen) {


            


            [I]auswahl[/I]();


            


        }


        


        if (e.getSource() == ende) {


            System.[I]exit[/I](0);


        }


        


        


    } 


    


}

Und hier ist die Gui Klasse:

Java:
package de.hackerbanane.pacman;





import java.awt.Graphics;


import java.awt.Graphics2D;


import java.awt.Image;


import java.awt.event.ActionEvent;


import java.awt.event.ActionListener;


import java.awt.event.KeyAdapter;


import java.awt.event.KeyEvent;





import javax.swing.ImageIcon;


import javax.swing.JPanel;


import javax.swing.Timer;





public class Gui extends JPanel implements ActionListener {





    Timer time;


    Image img;


    Image img2;


    int key;


    int x_bild;


    int lauf;


    int links;


    


    public Gui() {


        


        key = 0;


        lauf = 0;


        


        setFocusable(true);


        ImageIcon b = new ImageIcon((getClass().getResource("background.jpg")));


        img = b.getImage();


        


        ImageIcon c = new ImageIcon((getClass()).getResource("c-pacman.jpg"));


        img2 = c.getImage();


        


        addKeyListener(new AL());


        


        time = new Timer(5,this);


        time.start();


    }


    


    public void ActionPerformed(ActionEvent e) {


        bewegen();


        repaint();


    }


    


    public void paint(Graphics g) {


        


        super.paint(g);


        Graphics2D f2 =(Graphics2D)g;


        


        f2.drawImage(img,0,0,null);


        


        f2.drawImage(img2,x_bild,550,null);


    } 





    public void bewegen() {


        


        x_bild += lauf;


    }


    


    private class AL extends KeyAdapter {


        


        public AL() {


        


        }


        


        public void keyPressed(KeyEvent e) {


            


            key = e.getKeyCode();


            


            if(key == KeyEvent.[B][I]VK_LEFT[/I][/B]) {


                


                lauf = -2;


                


            }


            if(key == KeyEvent.[B][I]VK_RIGHT[/I][/B]) {


                


                lauf = 2;


                


            }


            


        }


        


        public void keyReleased(KeyEvent e) {


            


            key = e.getKeyCode();


            


            if(key == KeyEvent.[B][I]VK_LEFT[/I][/B] || key == KeyEvent.[B][I]VK_RIGHT[/I][/B]) {


                


                lauf = 0;


                


            }


        }


    }





    public void actionPerformed(ActionEvent e) {


    


    }


    public int getXBild( ) {


        return x_bild;


    }


}

Vielen Dank schonmal ;)
 
K

kneitzel

Gast
In Deiner Klasse Gui hast Du zwei Methoden:

actionPerformed und ActionPerformed

Du hast den Code in ActionPerformed, welche nie aufgerufen wird. Durch den Timer wird nur actionPerformed aufgerufen, aber die Methode ist leer.
 
K

kneitzel

Gast
Evtl. noch ein kleiner Hinweis zum Coding:

Klassen sollten mit einem großen Buchstaben starten in PascalCase (also statt frame dann Frame).
Variablen alle klein in camelCase (Also auch kein _ wie in x_bild sondern xBild wobei das ja eine Koordinate ist also xKoordinateBild)
Generell noch etwas mehr auf die Namen achten. Besagt die Methode genau, was sie macht? Und eine Variable beschreibt, was in ihr ist?

Evtl. ist es auch übersichtlicher, in den Klassen nicht ActionListener und so zu implementieren und statt dessen Lambdas nutzt. Aber das kannst Du Dir überlegen.

Das sähe dann ggf. so aus:
Java:
        time = new Timer(5, e -> {
            bewegen();
            repaint();
        });

Oder wenn der repaint Aufruf in bewegen erfolgen sollte und bewegen den ActionEvent Parameter bekommen sollte, dann wäre es so möglich:
Code:
time = new Timer(5, this::bewegen);

    public void bewegen(ActionEvent e) {
        x_bild += lauf;
        repaint();
    }

Dann könnte man Dinge, die Du in main machst, in den Konstruktor verschieben (Vorschlag, da es spezifisch für Dein Frame ist):
Code:
    public static void main(String[] args) {
        Frame frame = new Frame("PacMan -Menü-");
        frame.setVisible(true);
    }

    public Frame(String title) {
        super(title);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 400);
        getContentPane().setBackground(Color.DARK_GRAY);
        setLayout(null);

        spielen = new JButton("Spiel starten");
        . . .

Deine Methode spiel() benötigt kein static und hier kannst Du natürlich auch überall die Methodik von oben anwenden.

Das aber nur als einfache Hinweise, wie es evtl. lesbarer werden könnte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
P Bewegung eines Balkens in eineum JPanel welches als Spielfeld fungiert AWT, Swing, JavaFX & SWT 2
J Bewegung rauf und ab AWT, Swing, JavaFX & SWT 5
R Fließende Bewegung von Graphics AWT, Swing, JavaFX & SWT 6
F Swing Jump and Run Bewegung!? AWT, Swing, JavaFX & SWT 11
B bewegung mit Pfeiltasten? AWT, Swing, JavaFX & SWT 2
M 3D-Grafik Bewegung mit der Maus ohne Klicken AWT, Swing, JavaFX & SWT 10
S Problem mit JLabel (Bewegung in Schleife) AWT, Swing, JavaFX & SWT 7
W Kein MouseKlick-Event bei Bewegung AWT, Swing, JavaFX & SWT 2
G Cursor Bewegung tracken AWT, Swing, JavaFX & SWT 2
B kein MouseEvent bei zu schneller Bewegung der Maus AWT, Swing, JavaFX & SWT 7
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert das rotieren unter 2dGraphics, also wie stelle ich z. B. 90° ein? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert Polygon? AWT, Swing, JavaFX & SWT 1
U Wie genau funktioniert 2dgraphics, in diesem Bezug? AWT, Swing, JavaFX & SWT 4
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
EinNickname9 Einfacher parser funktioniert nicht AWT, Swing, JavaFX & SWT 2
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7
P Swing jxmapviewer hinzufügen/nutzen funktioniert nicht AWT, Swing, JavaFX & SWT 7
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
N Pixelfarbe abgleichen funktioniert nicht AWT, Swing, JavaFX & SWT 5
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
steven789hjk543 Swing Weiß jemand, warum dieses Programm nicht funktioniert? AWT, Swing, JavaFX & SWT 7
M Swing setMaximumSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
K JavaFX funktioniert nicht AWT, Swing, JavaFX & SWT 2
B AWT actionPerformed Method funktioniert nicht AWT, Swing, JavaFX & SWT 12
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
J JavaFX addListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P CardLayout funktioniert fehlerhaft AWT, Swing, JavaFX & SWT 13
L WrapLayout funktioniert nicht AWT, Swing, JavaFX & SWT 1
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
S JavaFX mit javac compilieren funktioniert nicht AWT, Swing, JavaFX & SWT 2
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
J AWT System Farben / java.awt.SystemColor funktioniert nicht AWT, Swing, JavaFX & SWT 4
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
K javafx app > "run in browser" funktioniert nicht AWT, Swing, JavaFX & SWT 3
N JavaFX GridPane Halignment funktioniert nicht AWT, Swing, JavaFX & SWT 1
it_is_all JLabel.setIcon - funktioniert nicht mehr AWT, Swing, JavaFX & SWT 2
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z BoxLayout funktioniert nicht und Buttongröße AWT, Swing, JavaFX & SWT 18
C Java Hintergrund funktioniert nicht AWT, Swing, JavaFX & SWT 9
J Swing Wie funktioniert dieser ChangePropertyListener??? AWT, Swing, JavaFX & SWT 0
GreenTeaYT Button funktioniert nicht für Ein-und Auszahlungen? AWT, Swing, JavaFX & SWT 8
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
M UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 9
M Swing UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 0
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
S JavaFX wie funktioniert CSS und javaFX AWT, Swing, JavaFX & SWT 19
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
M JavaFX Eventhandler Funktioniert nicht AWT, Swing, JavaFX & SWT 3
Sogomn JavaFX Injektion funktioniert nicht AWT, Swing, JavaFX & SWT 4
Blender3D Swing KeyBoardListener funktioniert nicht unter UBUNTU AWT, Swing, JavaFX & SWT 7
J JavaFX Button funktioniert(nicht) AWT, Swing, JavaFX & SWT 3
J DefaultCloseOperation funktioniert nicht AWT, Swing, JavaFX & SWT 9
F JavaFX ObservableList -- warum funktioniert das so.... AWT, Swing, JavaFX & SWT 3
Paul15 Button funktioniert nur einmal AWT, Swing, JavaFX & SWT 9
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
H UpdatePolicy wird nicht richtig gesetzt / funktioniert nicht AWT, Swing, JavaFX & SWT 5
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
L Event Handling wie funktioniert .getComponent? AWT, Swing, JavaFX & SWT 1
B JavaFX Scene Builder: resize funktioniert (meist) nicht AWT, Swing, JavaFX & SWT 6
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
D Passwort [Aber mit 3 Versuchen] Funktioniert nicht wie erwartet AWT, Swing, JavaFX & SWT 4
C Applet Applet funktioniert in Eclipse aber nicht in Browser AWT, Swing, JavaFX & SWT 1
J Zellen in JavaFx einfärben funktioniert nicht AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
C KeyPressed funktioniert auf iOS nicht richtig? AWT, Swing, JavaFX & SWT 4
D Event Handling MouseListener funktioniert seit Java 8 nicht mehr AWT, Swing, JavaFX & SWT 13
M LayoutManager GridLayout funktioniert nicht AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen

Neue Themen


Oben