"Achtung die Kurve/ Curve Fever" Java-Version

Hallo alle miteinander, ich versuche mich gerade an einem Java-Klon von „Achtung die Kurve“ , bzw. „Curve Fever“.
In dem Spiel steuern 2 Spieler jeweils eine eigene Kugel die sich ständig vorwärts bewegt und eine Linie hinterlässt. Man kann mit 2 Tasten die Richtung der Kugel verändern - wenn ein Spieler die gegnerische Linie- oder den Rand berührt hat er verloren.

  • Kann mir jemand helfen ,wie ich die Richtung auf Tastendruck verändere, in die sich meine Kugeln bewege?
  • Kann mir jemand helfen, wie ich abfrage, ob eine der Kugeln an einem Punkt auf dem Spielfeld schon einmal war (wollte das mit einem Array machen)?

Danke
Viele Grüße

(Ich kopiere einfach mal den ganzen Code hier rein)

package Projekt;

import java.awt.;
import java.awt.event.
;

public class Ballbewegung extends Frame{
final static int breite=1200,hoehe=900; //Breite und Höhe des Fensters
Ball[] b = new Ball[2];
// flimmerfrei
private Image Hintergrund;
private Graphics hgr;

public Ballbewegung(String s){
super(s);
this.addWindowListener (new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
for (int i=0;i<2;i++){
int x_b=(int)((breite-25)*Math.random()); //Position
int y_b=(int)((hoehe-25)*Math.random()); //Position
int r_b=(int)(8); //Größe der Bälle
int rot_b=(int)(Math.random()*255);
int gruen_b=(int)(Math.random()*255);
int blau_b=(int)(Math.random()*255);
Color farbe=new Color(rot_b,gruen_b,blau_b);
b[i] = new Ball(this,x_b,y_b,r_b,farbe);
}
}

public static void main(String args[]){

Ballbewegung f = new Ballbewegung("Projekt");
f.setSize(breite,hoehe);                    //Breite und Höhe des Fensters
f.setBackground(Color.black);                //Hintergrundfarbe
f.setVisible(true);

}

public void paint(Graphics f){
for (int i=0;i<2;i++) b[i].ballzeichnen(f);
f.setColor(Color.white);
//f.drawString(„Ein Spieler hat soeben einen Punkt erziehlt“);
}

public void update(Graphics f){
paint(f);
}
}

class Ball extends Thread{
private int x,y,r,xr=1,yr=2;
Color farbe;
boolean sichtbar=true;
Ballbewegung b;
int x_vis[] = new int[1000000000];
int y_vis[] = new int[1000000000];
int count =0;

public Ball(Ballbewegung e,int xk,int yk,int rk,Color Farbe){
farbe=Farbe;
b=e;
r=rk;
x=xk;
y=yk;
this.start();
}

public void ballzeichnen(Graphics g){
if (sichtbar==true){
g.setColor(farbe);
g.fillOval(x,y,r2,r2);
}
}

public int b_x(){return x;}

public int b_y(){return y;}

public int b_r(){return r;}

public boolean point_visited(int x, int y){
for(int i=0;i<count;i++){
if(x==x_vis[i] & y==y_vis[i]) {
return true;
}
return false;
}
}
public void run(){
for(;;){
try {this.sleep(8);}
catch(InterruptedException e){}
x=x-xr;
y=y-yr;
x_vis[count]=x;
y_vis[count]=y;
count++;
if( (x<=0) || (x>=(b.breite-2r)) ) //System.exit( 0 );
if( (y<=20) || (y>=(b.hoehe-2
r)) ) //System.exit( 0 );
b.repaint();
}
}
}