私は Java 入門で、私のスキルは限られているので、先生は私たちにスクリーンセーバーを作ってほしいと言っています。ここでの私の目標は、複数の熱気球オブジェクトが同時に画面の周りを跳ね返り、壁にぶつかると方向がランダムに変わることです。私はランダムにバウンドする風船を1つ手に入れました.
私が助けを必要としている問題は、アプレットに 2 番目の画像を追加すると、両方の画像がリンクしているように見え、まったく同じように動き、一方が方向を変えると、もう一方も同じように動くということです。別々に動く?ここに私のコードがあります。
***
import acm.program.*;
import acm.graphics.*;
import java.awt.Color;
public class HotAirBalloons extends GraphicsProgram
{
private static final int APPLET_WIDTH = 800;
private static final int APPLET_HEIGHT = 600;
private int speedX = 1;
private int speedY = 1;
public void init()
{
setSize(APPLET_WIDTH,APPLET_HEIGHT);
setBackground(new Color(100,210,255));
}
public void moveRandomDirection()
{
double direction = Math.random() * 2.0 * Math.PI;
double speed = 3.0;
speedX = (int) (speed * Math.cos(direction));
speedY = (int) (speed * Math.sin(direction));
}
public void run()
{
GImage img1 = new GImage("balloon.jpg");
add(img1, 0, 0);
GImage img2 = new GImage("balloon.jpg");
add(img2, 200, 200);
while(true)
{
pause(15);
img1.move(speedX, speedY);
img2.move(speedX, speedY);
if (img1.getX() > APPLET_WIDTH - 50)
{
moveRandomDirection();
}
if (img1.getX() < 1)
{
moveRandomDirection();
}
if (img1.getY() +85 > APPLET_HEIGHT)
{
moveRandomDirection();
}
if (img1.getY() < 1)
{
moveRandomDirection();
}
if (img2.getX() > APPLET_WIDTH - 50)
{
moveRandomDirection();
}
if (img2.getX() < 1)
{
moveRandomDirection();
}
if (img2.getY() +85 > APPLET_HEIGHT)
{
moveRandomDirection();
}
if (img2.getY() < 1)
{
moveRandomDirection();
}
}
}
}