Hi!
Ich bin Anfänger und ich hoffe sehr, dass mir jemand helfen kann!Bitte!
Ich möchte gern einen Kreis in einem Rechteck herumflitzen lassen!
Es funktioniert "relativ" gut, aber irgendwas passt nicht!
Er hält sich nicht an die Grenzen..beginnen tut er langsam, dann wird der Kreis plötzlich ganz schnell und zum Schluß verschwindet er aus dem Bildschirm....obwohl er sich vorher ein paar Mal schon innerhalb des Rechtecks bewegt hat und auch bei den "Wänden" wieder umgedreht hat!
Ich möcht, dass das Rechteck die Breite und Höhe des Applets hat..also
breite=getBounds().width;
hohe=getBounds().height;
nur dann wenn ich breite bzw. hohe in der Klasse Circle als Begrenzung einsetz, hält er sich überhaupt nicht daran...jetzt hab ich einfach irgendwelche Zahlen(z.B. 250) angenommen!
Aber das haut nicht so richtig hin!
Irgendwas stimmt da nicht!
Kennt sich da jemand damit aus?
Es wär echt wichtig!
Vielleicht kann mir jemand helfen bitte!
Viel kann nicht mehr fehlen!Oder doch?
Hier die 2 Klassen:
Klasse SPIELBALL:
Hier die Klasse Circle(schaut komplizierter aus! )..geht sicher kürzer!
Die Klasse Rect führ ich hier nicht mehr an!..die stimmt sicher!
Also vielen Dank im Voraus für Eure Hilfe!
Danke
Ich bin Anfänger und ich hoffe sehr, dass mir jemand helfen kann!Bitte!
Ich möchte gern einen Kreis in einem Rechteck herumflitzen lassen!
Es funktioniert "relativ" gut, aber irgendwas passt nicht!
Er hält sich nicht an die Grenzen..beginnen tut er langsam, dann wird der Kreis plötzlich ganz schnell und zum Schluß verschwindet er aus dem Bildschirm....obwohl er sich vorher ein paar Mal schon innerhalb des Rechtecks bewegt hat und auch bei den "Wänden" wieder umgedreht hat!
Ich möcht, dass das Rechteck die Breite und Höhe des Applets hat..also
breite=getBounds().width;
hohe=getBounds().height;
nur dann wenn ich breite bzw. hohe in der Klasse Circle als Begrenzung einsetz, hält er sich überhaupt nicht daran...jetzt hab ich einfach irgendwelche Zahlen(z.B. 250) angenommen!
Code:
if(xpoint<=0){
dreheX();
vx=+vx;
}
else if(xpoint>250){ // anstatt xpoint>breite.....ok?
dreheX();
vx=-vx;
}
Aber das haut nicht so richtig hin!
Irgendwas stimmt da nicht!
Kennt sich da jemand damit aus?
Es wär echt wichtig!
Vielleicht kann mir jemand helfen bitte!
Viel kann nicht mehr fehlen!Oder doch?
Hier die 2 Klassen:
Klasse SPIELBALL:
Code:
public class Spielball extends JApplet{
Container c;
Circle circle1;
Rect rect1;
Thread runner1;
public int breite, hohe;
int xpoint, ypoint;
int radius=20;
int vx;
int vy;
public void init(){
breite=getBounds().width;
hohe=getBounds().height;
xpoint=(int) Math.round(Math.random()*(breite-50)+25);
ypoint=(int) Math.round(Math.random()*(hohe-50)+25);
c=getContentPane();
c.setLayout(new OverlayLayout(c));
c.setBackground(Color.red);
rect1=new Rect(breite,hohe);
circle1=new Circle(xpoint,ypoint,radius);
c.add(rect1);
c.add(circle1);
runner1=new Thread(circle1);
runner1.start();
}
}
Hier die Klasse Circle(schaut komplizierter aus! )..geht sicher kürzer!
Code:
class Circle extends JComponent implements Runnable{
private int xpoint;
private int ypoint;
private int radius;
public int vx=1;
public int vy=1;
public Circle(int xpoint,int ypoint,int radius){
this.xpoint=xpoint;
this.ypoint=ypoint;
this.radius=radius;
setBounds(xpoint,ypoint,radius,radius);
}
public void paint(Graphics g){
g.fillOval(xpoint,ypoint,radius,radius);
}
public void setX(int xpoint){
this.xpoint=xpoint;
}
public void setY(int ypoint){
this.ypoint=ypoint;
}
public int getX(){
return xpoint;
}
public int getY(){
return ypoint;
}
public int dreheX(){
vx=(int) Math.round(Math.random()*20-10);
return vx;
}
public int dreheY(){
vy=(int) Math.round(Math.random()*20-10);
return vy;
}
public void bewege(){
xpoint=getX();
ypoint=getY();
xpoint=xpoint+vx;
ypoint=ypoint+vy;
this.setY(ypoint);
this.setX(xpoint);
this.radius=radius;
}
public void run(){
xpoint=getX();
ypoint=getY();
while(true){
if(xpoint<=0){
dreheX();
vx=+vx;
}
else if(xpoint>250){
dreheX();
vx=-vx;
}
else if(ypoint>250){
dreheY();
vy=-vy;
}
else if(ypoint<=0){
dreheY();
vy=+vy;
}
bewege();
try{
Thread.sleep(10);
repaint();
}
catch(InterruptedException e){}
}
}
}
Die Klasse Rect führ ich hier nicht mehr an!..die stimmt sicher!
Also vielen Dank im Voraus für Eure Hilfe!
Danke