我的第一个项目是用
Java制作游戏Pong.
因为我需要计算我的x位置和y位置的delta,我认为最好的方法是使用双变量(如果我错了,请原谅我).但是你不能使用double来填充lib java.awt.*中的形状.
因为我需要计算我的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); }
编辑:对不起,我意识到了一个错误.如果三角形足够小,球就不会移动!因此,你需要将球的坐标存放在双打中,并且只有在最后画球时才会施放…对不起