期待TRIPLE_DOT,找到';'

时间:2013-08-21 17:39:24

标签: java processing

我正在使用Processing编写程序,但我一直在期待TRIPLE_DOT,找到';'。 可能有什么不对?

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
  }
}

球类:     class 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);
  }
}

1 个答案:

答案 0 :(得分:2)

在构造函数的参数名称中,点(.)应替换为_。你应该为这些参数提供类型:

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

如果使用ball.xpos,则编译器在{{1}之后的1 st 点(.)之后需要 var-args }。


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

的引用
Ball

但我不明白为什么你在Collision(Ball ball) { this.ball = ball; } 课程中拥有这些字段(ball_xposball_ypos),因为你还有Collision类型领域。您可以删除它们,只需设置Ball对上面构造函数中传递的引用的引用。

ball类型引用也是如此。您只需再次复制Block课程中BlockBall的字段。不需要。