Moin ich hab folgendes Problem:
Hab den Quelltext von einem eurer Tutorials das im Forum erwähnt wird und versucht einen Ball zu coden der sich über den Bildschirm bewegt an den Seiten abprallt und kleine Hinternisse vernichtet wenn er auf deren x-Position trifft(nicht auf die y_Position) Wenn ich das Applet nun laufen lasse vernichtet der Ball die kleinen Pünktchen(im Code Food genannt) nur 1-3 mal. Danach lassen sie sich nicht mehr durch den Ball stören.
Vielleicht kann mir ja jemand helfen und sagen warum. Hier mal der Code:
Als letztes würd ich noch ganz gern wissen wie ich die Punkte ganz einsammel kann... also das auch mit der y-Koordinate hereinbring. Ich kann ja nicht einfach x_pos==food1x und x_pos==food1y machen weil ich sonst genau mit der Mitte des Balles in die Mitte des Fressens treffen müsste. Wie kann ich das ganze flächendeckender machen?
Danke schonmal für eure Hilfe
Mfg Bob
Hab den Quelltext von einem eurer Tutorials das im Forum erwähnt wird und versucht einen Ball zu coden der sich über den Bildschirm bewegt an den Seiten abprallt und kleine Hinternisse vernichtet wenn er auf deren x-Position trifft(nicht auf die y_Position) Wenn ich das Applet nun laufen lasse vernichtet der Ball die kleinen Pünktchen(im Code Food genannt) nur 1-3 mal. Danach lassen sie sich nicht mehr durch den Ball stören.
Vielleicht kann mir ja jemand helfen und sagen warum. Hier mal der Code:
Code:
import java.awt.*;
import java.applet.*;
import java.util.*;
public class Physikballodb extends Applet implements Runnable {
int radius;
int appletsize_x;
int appletsize_y;
int x_pos;
int x_speed;
int y_pos;
int y_speed;
int time;
Random r=new Random();
int Food1x=r.nextInt(499)+1;
int Food1y=r.nextInt(499)+1;
public void init(){
radius=10;
appletsize_x=500;
appletsize_y=500;
x_pos=100;
x_speed=1;
y_pos=200;
y_speed=1;
time=1;
setBackground(Color.red);
}
public void start(){
Thread th = new Thread(this);
th.start();
}
public void stop(){
}
public void destroy(){
}
public boolean keyDown (Event e, int key){
if(key == Event.LEFT)
x_speed=-1*time;
else if(key == Event.RIGHT)
x_speed=+1*time;
else if(key == Event.UP)
y_speed=-1*time;
else if(key == Event.DOWN)
y_speed=+1*time;
return true;
}
public boolean mouseDown (Event e, int x, int y){
time++;
return true;
}
public void run(){
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
while(true){
if(x_pos>appletsize_x-radius){
x_speed=-1*time;
}
else if(x_pos<radius){
x_speed=+1*time;
}
if(y_pos>appletsize_y-radius){
y_speed=-1*time;
}
else if(y_pos<radius){
y_speed=+1*time;
}
x_pos+=x_speed;
y_pos+=y_speed;
if(x_pos==Food1x){
Food1x=r.nextInt(499)+1;
Food1y=r.nextInt(499)+1;
}
repaint();
try{
Thread.sleep(20);
}
catch(InterruptedException ex){
}
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
}
}
public void paint(Graphics g){
g.setColor(Color.blue);
g.fillRect(0,0,500,500);
g.setColor(Color.yellow);
g.fillOval(x_pos-radius,y_pos-radius,2*radius,2*radius);
g.drawString("x:"+Food1x+"y:"+Food1y,20,20);
g.fillOval(Food1x,Food1y,10,10);
}
}
Als letztes würd ich noch ganz gern wissen wie ich die Punkte ganz einsammel kann... also das auch mit der y-Koordinate hereinbring. Ich kann ja nicht einfach x_pos==food1x und x_pos==food1y machen weil ich sonst genau mit der Mitte des Balles in die Mitte des Fressens treffen müsste. Wie kann ich das ganze flächendeckender machen?
Danke schonmal für eure Hilfe
Mfg Bob