我的目标是让球在球拍中心,即使在未来版本的比赛中球半径的值会发生变化。 我唯一的问题是实现正确的数学公式 对于游戏球的x坐标。我得到y坐标公式完美无缺。
我不需要正确答案。我只需要指导和建议就可以得到答案。
这是java程序的图片:
http://i33.photobucket.com/albums/d86/warnexus/ball.png
你可以在评论下面找到代码“//麻烦在这里算数学。”
/** Radius of the ball in pixels */
private static final int BALL_RADIUS = 500;
private void setup_Paddle()
{
// TODO Auto-generated method stub
// x coordinate of the upper left corner
// y coordinate of the upper left corner
paddle = new GRect(20,20,PADDLE_WIDTH,PADDLE_HEIGHT);
paddle.setFilled(true);
paddle.setColor(Color.PINK);
add(paddle,paddleInitialLocationX,paddleInitialLocationY);
}
private void setup_Ball()
{
// Trouble figuring the math here
int ballSetUpCoordX = (int) (paddle.getX());
// Good Code!
int ballSetUpCoordY = (int) (paddle.getY()-BALL_RADIUS);
gameBall = new GOval(BALL_RADIUS,BALL_RADIUS);
gameBall.setFilled(true);
gameBall.setColor(Color.BLUE);
add(gameBall,ballSetUpCoordX,ballSetUpCoordY);
}
private GOval gameBall;
private GRect paddle;
private int paddleInitialLocationX = 200;
private int paddleInitialLocationY = 500;
答案 0 :(得分:2)
坐标通常用于对象的左上角。因此,要使任意两个对象o1
和o2
在同一个位置居中,您必须根据大小进行偏移。
我们会将o1
的中心移到o2
的中心。
int o2CenterX = o2.x - (o2.width/2);
//If we just used o2CenterX, it would put the corner of o1 into the center of o2
o1.x = o2CenterX - (o1.width/2);
重复y,你似乎已经完成了(半径用作宽度/ 2)。除非您希望桨和球在屏幕上相交,否则您可能需要稍微调整此公式。