所以我是java入门,我的技能有限,我们的老师要我们做一个屏幕保护程序。我的目标是 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();
}
}
}
}