Class 具有随机值的两个不同类具有相同的输出

Class 具有随机值的两个不同类具有相同的输出,class,processing,Class,Processing,我正在使用处理制作反弹球。当我使用ball对象一次时效果很好,但当我使用ball1和ball2这样的对象两次时,这些球会相互重叠,使人产生错觉,以为只是一个球在反弹,尽管我将它们的主要位置和速度设置为随机数。那么,问题在哪里?(第一个参数表示速度,第二个参数表示x坐标) 主要类别: Ball-ball1=新球(int(随机(0,2)),int(随机(宽度)); BallBall2=新球(int(随机(0,2)),int(随机(宽度)); 无效设置(){ //Windows配置 尺寸(640360

我正在使用处理制作反弹球。当我使用ball对象一次时效果很好,但当我使用ball1和ball2这样的对象两次时,这些球会相互重叠,使人产生错觉,以为只是一个球在反弹,尽管我将它们的主要位置和速度设置为随机数。那么,问题在哪里?(第一个参数表示速度,第二个参数表示x坐标)

主要类别:

Ball-ball1=新球(int(随机(0,2)),int(随机(宽度));
BallBall2=新球(int(随机(0,2)),int(随机(宽度));
无效设置(){
//Windows配置
尺寸(640360);
背景(50);
}
作废提款(){
//画圆圈
ball1.display();
//圆周运动
1.动作();
//移动限制
ball1.movementLimits();
//画圆圈
ball2.display();
//圆周运动
2.动作();
//移动限制
ball2.movementLimits();
}
球类:

float xCoordinates;
浮动坐标;
浮动速度;
漂浮性;
最终浮子重力=0.1;
班级舞会{
球(整数速度,整数坐标){
xCoordinates=坐标;
Y坐标=高度/6;
如果(速度==0)
x速度=2;
其他的
x速度=-2;
如果(速度==0)
yVelocity=2;
其他的
yVelocity=-2;
}
void movementLimits(){
if(X坐标-10=宽度)
xVelocity*=-1;
如果(Y坐标+10>=高度)
yVelocity*=-0.9;
如果(Y)协调-10问题1:
两个对象使用相同的坐标和速度。它们是全局存储的,因此当一个对象更改时,另一个对象也会使用更改。要解决此问题,您应该为Ball类属性提供坐标和速度

class Ball{
   float x;
   float y;
   float dx;
   float dy

   public Ball(float x, float y, float dx, float dy){
      this.x = x;
      this.y = y;
      this.dx = dx;
      this.dy = dy;
   }
}
问题2:
在球的显示功能中,您调用
背景(50);
。这将基本上用新背景覆盖整个屏幕;覆盖包括ball1在内的任何以前的球。但是,如果删除这条线,您将得到一种很酷的效果,这是由于所有以前的球画都粘住了。您应该移动
背景(50)
将线移到绘图函数的开头。这样,你画两个球,用灰色画在它们上面,然后在它们的新位置重新绘制两个球。

我在类中移动了变量,但没有任何变化。即使我打印每个球的速度和X坐标,它们也是不同的。而我的答案是导致只看到一个ball,我发现你在每次显示时都会重新绘制背景。这掩盖了之前在绘制循环中绘制的所有内容。我会更新我的回答你是对的,逻辑是正确的,但我不应该编写
背景(50)
在Ball类中。因此,我通过在main类的draw函数中编写命令解决了这个问题。