java - 如何让我的图像随机移动?

标签 java

我有一个逆时针方向旋转的图像。现在,我希望它在接触墙壁时或接触墙壁时沿随机方向移动。问题是我做不到,请帮我解决这个问题。

这是我的代码:

private double x;
private double y;
private double speed;

public void move(long dt)
{
    double dt_s = dt / 1e9;
    double dx = speed * dt_s;
    double dy = speed * dt_s;

    final double right_border = 100;
    final double up_border = 100;
    final double down_border = 0.0;
    final double left_border = 0.0;


    x += dx;

    if (x >= right_border)
    {
        x = right_border;
      if (y >= down_border)
       {               
    y += dy;
       }

    }
    if (y > up_border)
    {
        y = up_border;
        if (x >= left_border)
        {
            speed *= -1;
        }

    }
    if (x <= left_border)
    {
        x = left_border;
        if (y <= up_border)
        {
            y += dy;
        }

    }
    if (y < down_border)
    {
        y = down_border;
        if (x <= right_border)
        {
            speed *= -1;
        }

    }

 }

最佳答案

首先你必须解决你的类没有方向的问题 - 你有速度,但你的方向固定在东北 45 度(增量 x 和 y 相同)。

按如下方式为您的类(class)添加方向:

...
private double speed;
private double angle; // in radians - makes math easier

public void move(long dt) {
    ...
    double dx = speed * dt_s * Math.sin(angle);
    double dy = speed * dt_s * Math.cos(angle);
    ...

现在朝随机方向前进:

myObject.setAngle(Math.PI * 2 * Math.random()); // Math.PI * 2 = 360 degrees

如果撞墙,您必须将角度限制在远离您正在撞墙的角度。我会把它留给你,但它将采用以下形式:

myObject.setAngle(minAngle + ((maxAngle - minAngle) * Math.random()));

关于java - 如何让我的图像随机移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7816702/

相关文章:

java - 为什么 Java 方法不带参数 Collection<?扩展 V> 接受 Set<V>?

java - Spark 2.0.0 抛出 AlreadyExistsException(消息 :Database default already exists) when interact with Hive 1. 0.0

java - 将 String 转换为 double 时 GSON 中的 NumberFormatException

java - Keycloak:使用 Java API 客户端将客户端角色添加到服务帐户角色

java - 使用递归获取先前的返回值与新值连接

java - 如何在Spring MVC中正确使用外部文件?

java - 运行示例代码时找不到 URL

java - 为什么父类中的静态方法无法获取子类名称?

java - 进化模拟 - 用于计时器事件处理的持久线程

java - 图像处理 - 我需要找到任何四边形的 4 个角