我的第一个项目是用 Java 制作 Pong 游戏。
因为我需要为我的 x
计算增量位置和y
位置,我认为最好的方法是使用双变量(如果我错了请原谅)。但是你不能使用 double 来填充库中的形状 java.awt.*
.
这里我计算的是球碰到 Racket 后的角度
int c = (int) Math.atan2(ball.getPosY(), ball.getPosX());
int delta_x = (int) (1 * Math.cos(c));
int delta_y = (int) (1 * Math.sin(c));
this.dx += delta_x;
this.dy += delta_y;
与 dx
和 dy
我更改了 x
的位置和 y
的乒乓球。
我在这里画我的乒乓球。
g.setColor(Color.WHITE);
g.fillOval(this.posX, this.posY, 25, 25);
如果我想要 dx
和 dy
为了更准确,我必须更改 delta_y
的类型和 delta_x
加倍。
但是fillOval()
不适用于双变量。所以我必须在 geom.Point2D.Double
中制作图形吗?相反?
最佳答案
对 delta 使用 double 值,但将最终坐标转换为 int。
像这样(伪代码风格的东西):
int delta_x=1.3, delta_y=-0.4
public void update(){
double x=(pong_ball.getX()+delta_x);
double y=(pong_ball.getY()+delta_y);
pong_ball.setX(x);
pong_ball.setY(y);
}
// in the pong_ball code
public void paint(Graphics g){
paintBall((int) x, (int) y);
}
编辑:抱歉,我意识到一个错误。如果 delta 足够小,球就不会移动!因此,您也需要将球的坐标存储在 double 中,并且仅在最后绘制球时才进行转换……抱歉
编辑 2:请注意,上面的代码不可编译。您需要更多代码(例如实际的 x-y 字段、jframe 代码等)
关于Java pong 游戏 Graphics 或 geom 2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13389145/