玩家以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)
}
答案 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)我仍然不确定整个问题是什么。