Java pong 游戏 Graphics 或 geom 2D

标签 java awt pong

我的第一个项目是用 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;

dxdy我更改了 x 的位置和 y的乒乓球。 我在这里画我的乒乓球。

g.setColor(Color.WHITE);
g.fillOval(this.posX, this.posY, 25, 25);

如果我想要 dxdy为了更准确,我必须更改 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/

相关文章:

java - 在父 pom 中使用 pluginManagement 的 eclipse 中的生命周期配置错误未涵盖插件执行

java - Google AppEngine session 示例

java - 用java创建图像

java - 如何在 NetBeans 10/JDK11 上启用 JavaFX

java - 对角/历史递增序列中的数字

java - 为什么我的文本区域不显示

java - 将徽章添加到托盘图标(java)

Java 乒乓球在桨上滑动

java - 乒乓球碰撞检测器( Racket 到球)

javascript - document.getElementById 在外部 JS 中失败