gpt4 book ai didi

java - 如何使两个相同的图像彼此分开移动?

转载 作者:行者123 更新时间:2023-12-01 23:53:07 25 4
gpt4 key购买 nike

所以我正在入门java并且我的技能有限,我们的老师希望我们制作一个屏幕保护程序。我的目标是让多个热气球物体同时在屏幕上弹跳,当它们撞到墙壁时,它们会随机改变方向。我有一个气球随机弹跳,只是它有时会飞出去并且仍然会离开屏幕,但我认为问题出在我的数学中。
我需要帮助的问题是,当我向小程序添加第二个图像时,两个图像似乎都是链接的,它们的移动完全相同,当一个图像改变方向时,另一个图像也改变方向,唯一不同的是起始坐标,我该如何制作它们彼此分开移动?这是我的代码。

***
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();
}
}
}
}

最佳答案

这应该有效:

import acm.program.*;
import acm.graphics.*;
import java.awt.Color;
import java.awt.Point;

public class HotAirBalloons extends GraphicsProgram
{
private int speed1 = new Point(1, 1);
private int speed2 = new Point(1, 1);

public Point moveRandomDirection()
{
double direction = Math.random() * 2.0 * Math.PI;
double speed = 3.0;
return new Point((int) (speed * Math.cos(direction)), (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(speed1.x, speed1.y);
img2.move(speed2.x, speed2.y);



if (img1.getX() > APPLET_WIDTH - 50 || img1.getX() < 1)
{
speed1 = moveRandowmDirection();
}

if (img1.getY() +85 > APPLET_HEIGHT || img1.getY() < 1)
{
speed1 = moveRandomDirection();
}

if (img2.getX() > APPLET_WIDTH - 50 || img2.getX() < 1)
{
speed2 = moveRandomDirection();
}

if (img2.getY() +85 > APPLET_HEIGHT || img2.getY() < 1)
{
speed2 = moveRandomDirection();
}
}
}
}

编辑:这修复了“链接”行为,我对 Rob Watts 的响应进行了投票,以修复图像与边缘碰撞时的问题。

关于java - 如何使两个相同的图像彼此分开移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16066666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com