Witam,
Dopiero się uczę tego języka i mam nadzieje otrzymać kilka podpowiedzi...
Chciałbym, żeby kulki odbijały się od siebie i od ścian ale nie wiem jaki warunek muszę postawić lub jakiej metody użyć.
Podaje swój kod:
import java.awt.Color;
import acm.graphics.GOval;
import acm.program.GraphicsProgram;
public class kula extends GraphicsProgram{
private static final double BALL_SIZE = 50;
private static final double SPEED=2.0;
private static final double GRAVITY=0.125;
private static final double ELASICITY=1;
private static final double PAUSE = 1000/48.0;
public void run(){
GOval ball = makeBall();
GOval pilka = makePilka();
GOval kolo = makeKolo();
add(kolo);
add(ball);
add(pilka);
bounce(ball,pilka,kolo);
}
private void bounce (GOval ball,GOval pilka,GOval kolo){
double dx = SPEED;
double dy = 0.0;
double fx = SPEED+2;
double fy = 0.0;
double gx=-SPEED*2;
double gy= 0.0;
double xm = getSize().width;
double ym = getSize().height;
while(true){
ball.move(dx,dy);
dy += GRAVITY;
pilka.move(fx, fy);
fy += GRAVITY;
kolo.move(gx, gy);
gy -=GRAVITY;
if(hasBallHitBottom(pilka) && fy>=0){
fy+=-ELASICITY;
fx=2;
pilka.move(fx, fy);
}
if(hasBallHitBottom(ball) && dy>=0){
dy+=-ELASICITY;
}
pause(PAUSE);
}
}
private boolean hasBallHitBottom(GOval ball){
double bottomY=ball.getHeight();
return bottomY>=getHeight();
}
private boolean hasBallHitTop(GOval ball){
double topY=ball.getHeight();
return topY>getHeight();
}
private GOval makeBall(){
GOval result = new GOval (0,0,BALL_SIZE,BALL_SIZE);
result.setFilled(true);
result.setColor(Color.RED);
return result;
}
private GOval makePilka(){
GOval result = new GOval (0,0,BALL_SIZE,BALL_SIZE);
result.setFilled(true);
result.setColor(Color.BLUE);
return result;
}
private GOval makeKolo(){
double xm = getSize().width;
double ym = getSize().height;
GOval result = new GOval (xm,ym,BALL_SIZE,BALL_SIZE);
result.setFilled(true);
result.setColor(Color.GREEN);
return result;
}
}