突破(游戏项目) - 获得球以使桨-Java居中

时间:2012-06-30 23:50:59

标签: java graphics project breakout

我的目标是让球在球拍中心,即使在未来版本的比赛中球半径的值会发生变化。 我唯一的问题是实现正确的数学公式 对于游戏球的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;

1 个答案:

答案 0 :(得分:2)

坐标通常用于对象的左上角。因此,要使任意两个对象o1o2在同一个位置居中,您必须根据大小进行偏移。

我们会将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)。除非您希望桨和球在屏幕上相交,否则您可能需要稍微调整此公式。

相关问题