0

我正在使用 Processing 编写程序,但我不断收到Expecting TRIPLE_DOT, found ';' . 有什么问题?

class Collision {
  Ball ball = new Ball();
  Block block = new Block();
  int ball_xpos;
  int ball_rad;
  int ball_ypos;

  int block_width;
  int block_height;
  int block_control;

    Collision(ball.xpos, ball.rad, ball.ypos, block.width, block.height, block.control){
    //
  }


  void detect_() {
    //not done yet
  }
}

球类:类 Ball { int rad = 30; // 形状的宽度 float xpos, ypos; // 形状的起始位置

  float xspeed = 2.8;  // Speed of the shape
  float yspeed = 2.2;  // Speed of the shape

  int xdirection = 1;  // Left or Right
  int ydirection = 1;  // Top to Bottom

 Ball() {
     ellipseMode(RADIUS);
    // Set the starting position of the shape
    xpos = width/2;
    ypos = height/2;
  }


  void display() {
    ellipseMode(CENTER);
    ellipse(xpos, ypos, 410, 40);
  }

  void move() {
    // Update the position of the shape
    xpos = xpos + ( xspeed * xdirection );
    ypos = ypos + ( yspeed * ydirection );

    // Test to see if the shape exceeds the boundaries of the screen
    // If it does, reverse its direction by multiplying by -1
    if (xpos > width-rad || xpos < rad) {
      xdirection *= -1;
    }
    if (ypos > height-rad || ypos < rad) {
      ydirection *= -1;
    }

    // Draw the shape
    ellipse(xpos, ypos, rad, rad);
  }
}
4

1 回答 1

2

在构造函数的参数名称中,点 ( .) 应替换为_. 您应该为这些参数指定类型:

Collision(int ball_xpos, int ball_rad, ... so on){
    //
}

如果您使用ball.xpos,则编译器期望在之后的一个点()之后有一个var-args.ball


但似乎想传递类的属性,Ball用类属性初始化字段Ball。在这种情况下,您应该只传递一个参数,即对 的引用Ball

Collision(Ball ball) {
    this.ball = ball;
}

但是我不明白为什么你在类中有这些字段(ball_xpos, ball_yposCollision,因为你也有一个Ball类型字段。您可以删除它们,只需设置ball对上述构造函数中传递的引用的引用。

Block类型引用也是如此。您只是再次拥有BlockBallCollision课堂上的字段的副本。没有必要。

于 2013-08-21T17:41:15.590 回答