Kreis mit Pfeiltaste bewegen

Devo

Mitglied
Hi,
ich muss für die Schule die Angabe so verändern, dass sich ein Kreis nach rechts bewegt, wenn man eine Pfeiltaste drückt. Da ich noch ein Anfänger bin, hab ich so meine Probleme dabei. Selbst geschrieben hab ich nur die Zeilen 6, 11, und 31, der Rest war gegeben. Der Kreis wird gezeichnet, aber sonst tut sich nix.
Wäre echt nett wenn mir jemand helfen könnte.

Java:
import java.applet.*;
import java.awt.event.*;
import java.awt.*;

public class pfeiltasten extends Applet implements Runnable, MouseMotionListener, MouseListener, KeyListener {
    int fps = 24, bewegen=100;
                                

    public void paint(Graphics g) {
        
        g.drawOval(bewegen, 100, 20, 20);
    }

    public void setup() {
        setBackground(Color.white);                // Hintergrundfarbe
        clean = true;                            // Soll zuvor gelöscht werden?
    }

    public void hilfe(int x, int y) {
        _g.drawString("width="+width+" height="+height,x,y);    // Breite und Höhe des Applets.
        _g.drawString("mx="+mx+" my="+my,x,y+16);                // X- und Y-Koordinate der Maus.
        _g.drawString("button="+button,x,y+32);                    // Ist die Maustaste gedrückt?
        _g.drawString("inside="+inside,x,y+48);                    // Ist Maus innerhalb des Applets?
        _g.drawString("key="+key,x,y+64);                        // Nummer der gedrückten Taste.
        _g.drawString("["+KeyEvent.getKeyText(key)+"]",x,y+80);
    }
    public void keyTyped(KeyEvent e) {}
    public void    keyReleased(KeyEvent e) {}
    public void destroy() { _f=true; _t=null; }
    public void start() { _f=false; _t.start(); }
    public void keyPressed(KeyEvent e) { key=e.getKeyCode(); if (key == KeyEvent.VK_RIGHT){ bewegen=bewegen+1;}}
    public void run() { while(!_f) { repaint(); pause(fps); } }
    public void mouseMoved(MouseEvent e) { mx=e.getX(); my=e.getY(); }
    public void mouseDragged(MouseEvent e) { mx=e.getX(); my=e.getY(); }
    public void mouseClicked (MouseEvent e) { mx=e.getX(); my=e.getY(); }
    public void init() { width=getBounds().width; height=getBounds().height; setup();
    addKeyListener(this); _i=createImage(width,height); _g=_i.getGraphics();
    addMouseListener(this); addMouseMotionListener(this); _t=new Thread(this); }
    public void mousePressed(MouseEvent e) { mx=e.getX(); my=e.getY(); button=true; }
    public void mouseReleased(MouseEvent e) { mx=e.getX(); my=e.getY(); button=false; }
    public void mouseEntered(MouseEvent e) { mx=e.getX(); my=e.getY(); inside=true; }
    public void mouseExited(MouseEvent e) { mx=e.getX(); my=e.getY(); inside=false; }
    public void update(Graphics g) { if(clean) clear(); paint(_g); g.drawImage(_i,0,0,this); }
    public void pause(int i) { try { _t.sleep(1000/i); } catch(Exception e) {} }
    public void clear() { _g.clearRect(0,0,width,height); }
    boolean _f, clean, button, inside;
    Thread _t; Image _i; Graphics _g;
    int key, width, height, mx, my;
}

mfg Devo
 
Du musst dir unbedingt erst einmal abgewöhnen, mehr als eine Anweisung in eine Zeile zu packen 😱 (bzw. den von deinen "Vorgebern" direkt umformatieren^^)

Edit: Das war mist, hab was überlesen -.- (siehe oben)
Edit2: Habs jezz mal in Eclipse kopiert und bei mir läufts^^ ???:L (nach einem Reinklicken in das Applet^^)
Java:
this.setFocusable(true);
this.requestFocus();

Dashier in der init()-methode sollte das mit dem Reinklicken auch unnötig machen 😉
 
Zuletzt bearbeitet:

Zurück
Oben