加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java pong游戏图形或geom 2D

发布时间:2020-12-14 19:24:05 所属栏目:Java 来源:网络整理
导读:我的第一个项目是用 Java制作游戏Pong. 因为我需要计算我的x位置和y位置的delta,我认为最好的方法是使用双变量(如果我错了,请原谅我).但是你不能使用double来填充lib java.awt.*中的形状. 在这里我计算球击球后的角度 int c = (int) Math.atan2(ball.getPosY
我的第一个项目是用 Java制作游戏Pong.
因为我需要计算我的x位置和y位置的delta,我认为最好的方法是使用双变量(如果我错了,请原谅我).但是你不能使用double来填充lib java.awt.*中的形状.

在这里我计算球击球后的角度

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的类型更改为double.
但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);
}

编辑:对不起,我意识到了一个错误.如果三角形足够小,球就不会移动!因此,你需要将球的坐标存放在双打中,并且只有在最后画球时才会施放…对不起

编辑2:请注意上面的代码是不可编译的.你需要更多的代码(比如实际的x-y字段,jframe代码等)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读