在应用程序中使用笛卡尔坐标

时间:2014-09-13 21:26:22

标签: java

玩家以0坐标(x = 0,y = 0)开始游戏。当用户点击屏幕时,它返回鼠标点击的坐标(x1,y1)。现在玩家必须从当前位置A(0.0)移动到B(x1,y1)。但是例如 x1> y1 所以在我的while循环中,y将比x更早得到y =(y1-1)的值。

我需要做什么才能使 x y 同时获得最终值x =(x-1)y =(y1-1)?

while(cont){
    if(x1 > x){
        x++;
    }else if(x1 < x){
        x--;
    }
    if(y1 > y){
        y++;
    }else if(y1 < y){
        y--;
    }
    frame.repaint();
    sleep(); // Thread.sleep(200)
}

1 个答案:

答案 0 :(得分:0)

我想你想要的就是这样:(提供缺少SSCCE的代码你/ OP /没有给我们)

// float x0, y0; // old position
// float x1, y1; // requested position
// float x = x0, y = y0; // current position
// float total_steps; // total steps to split the move between
// float step_x = ( x1 - x0 ) / total_steps;
// float step_y = ( y1 - y0 ) / total_steps;

while( Math.round(x) != x1 ) {
    x += step_x;
    y += step_y;
    frame.repaint();
    sleep(); // Thread.sleep(200)
}

我甚至不知道我能在这里解释什么,因为a)它不能比这更简单,b)我仍然不确定整个问题是什么。