Java 我的动画球不';我改变窗户尺寸时,不要在中间交叉

Java 我的动画球不';我改变窗户尺寸时,不要在中间交叉,java,processing,Java,Processing,有两条车道,每条车道包含一个球…当动画开始时,它在默认窗口大小的中间交叉。当我改变窗口大小时,它不会在中间交叉。过去几周我一直在努力解决这个问题 float x=0.4*width/8; 浮动y=0.4*高度/8; 无效设置(){ 尺寸(600600); 背景(#C8F5F2); 帧率(10); } 作废提款(){ 填充(255); 仰泳(); 矩形模式(中心); 矩形(宽度/2,0,宽度/8,高度*2);//垂直车道 rect(0,高度/2,2*宽度,高度/8);//水平车道 填充(255,0

有两条车道,每条车道包含一个球…当动画开始时,它在默认窗口大小的中间交叉。当我改变窗口大小时,它不会在中间交叉。过去几周我一直在努力解决这个问题

float x=0.4*width/8;
浮动y=0.4*高度/8;
无效设置(){
尺寸(600600);
背景(#C8F5F2);
帧率(10);
}
作废提款(){
填充(255);
仰泳();
矩形模式(中心);
矩形(宽度/2,0,宽度/8,高度*2);//垂直车道
rect(0,高度/2,2*宽度,高度/8);//水平车道
填充(255,0,0100);
椭圆(宽度/2,x,0.8*宽度/8,0.8*宽度/8);//垂直椭圆
填充(0255,0100);
椭圆(y,高度/2,0.8*高度/8,0.8*高度/8);//水平
//椭圆
如果(x<高度-0.4*宽度/8){
x=x+宽度/45;
}
如果(y<宽度-0.4*高度/8){
y=y+高度/20;
}
}

我期待我的答案是“在任何大小的中间越过球”

如果球应该在中间交叉,那么它们必须同时通过不同的方式。 球的半径为:

浮动半径1=0.4*高度/8;
浮动半径2=0.4*宽度/8;
第一个球的路径在x轴上,从
x=radius1
x=width-radius1
。 第二个球位于y轴上,从
y=radius2
y=height-radius2

因此,球的“下一个位置”可以通过以下公式计算:

x+=(宽度-2.0*半径1)/步数;
y+=(高度-2.0*半径2)/步数;
其中
steps
是每个球从起点到终点应执行的步数

进一步注意,x轴从左到右,y轴从上到下。参见示例:

float x,y;
浮动步长=20.0;
无效设置(){
规模(800300);
背景(#C8F5F2);
帧率(10);
x=0.4*高度/8;
y=0.4*宽度/8;
}
作废提款(){
浮动半径1=0.4*高度/8;
浮动半径2=0.4*宽度/8;
填充(255);
仰泳();
矩形模式(中心);
矩形(宽度/2,0,宽度/8,高度*2);//垂直车道
rect(0,高度/2,2*宽度,高度/8);//水平车道
填充(255,0,0100);
椭圆(x,高度/2,半径1*2.0,半径1*2.0);//垂直椭圆
填充(0255,0100);
椭圆(宽度/2,y,半径2*2.0,半径2*2.0);//水平
如果(x<宽度-半径1){
x+=(宽度-2.0*半径1)/步数;
}
如果(y<高度-半径2){
y+=(高度-2.0*半径2)/步数;
}
}

.我需要知道另一件事,那就是如何声明加速和减速的特定键。例如“按向上键会使速度加倍,按向下键会使速度减半。”

当按下一个键时,执行。用于评估是否按下了向上或向下键,并更改
步骤

void键按下(){
如果(键代码==向下)
步数/=2.0;
else if(keyCode==UP)
步骤*=2.0;
}

是的,我知道了。非常感谢……我需要知道另一件事,那就是如何声明加速和减速球的特定键。就像“按向上键导致速度加倍,按向下键导致速度减半。”@D3athStrok3这是一个全新的问题。如果你有一个新问题,可以问一个新问题,但不要扩展现有问题。请注意,这个问题将变得更为广泛。不管怎样,我已经扩展了答案。请阅读。嘿,所以我知道我面临一个新问题…在添加按键后,每当速度增加时,球都不会停在最右边和最底部的墙壁上…我尝试了很多方法,但没有成功…@D3athStrok3我建议问一个新问题。将当前尝试的代码添加到新问题。