gpt4 book ai didi

java - 当方法需要 int 参数时使用 float ?

转载 作者:行者123 更新时间:2023-11-30 03:52:37 24 4
gpt4 key购买 nike

我正在用 Java 编写一个游戏,其中小行星飞过屏幕撞击一艘宇宙飞船。小行星的速度是 float ,但每个小行星的 X 和 Y 值是整数。结果,每当速度达到新的整数值时,小行星的运动就会跳跃。我不能对 X 和 Y 值使用浮点或 double 值,因为碰撞所需的矩形类需要整数作为参数。

我尝试了一个使用 double 的函数,这样我就可以使用上限函数,

    public static int doubleToInt(double d){
int i = Math.ceil(d);
}

但这也带来了转换为整数的问题。有更好的方法吗?

编辑:小行星类别的适用代码:

import java.awt.*;
import java.util.Random;

public class Asteroid {
// the main enemy class of the game, an asteroid!
// these are generated through a for loop in the main game loop.
int x ;
int y ;
int r = 4; // radius of each asteroid.
static float speed = 1;; // speed of asteroids, increases as time goes by.

void move(Asteroid rock){
if(hasReachedBottom(rock)){
//rock.x = randInt(520,550); // random to start, so that the asteroids may be offset a bit.
//rock.y = randInt(0,Game.theGame.getHeight()); // y position, constant for each asteroid. Casted as an int. random number
initAsteroids(rock,rock.r + 500,501 + rock.r );// this range is for after the asteroids spawn.
//rock.x = 100;
}
x -= speed;
}

private boolean hasReachedBottom(Asteroid rock){
if(rock.x + rock.r < 0){
return true;
} else {
return false;
}

}
void paint(Graphics2D g){ // render an asteroid
g.setColor(Color.RED);
g.fillOval(x, y, r, r);
}

public Rectangle getBounds(Asteroid rock){
return new Rectangle(rock.x,rock.y,rock.r,rock.r);

}

}

最佳答案

如果你想将 double 转换为 int,你可以:

int i = (int)d;

如果你看一下这个,你就会看到在 0 到 2 之间的双数情况下会发生什么:

    for(double d = 0; d < 2; d+=0.1) {
System.out.print((int)d);
}

这是打印内容:

00000000000111111111

在您的情况下,每次达到新整数时,双倍(速度)都会增加并影响宇宙飞船。如果您的坐标系是离散的,则情况一定如此。

关于java - 当方法需要 int 参数时使用 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24041664/

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