我正在使用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);
}
}
答案 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_xpos
,ball_ypos
),因为你还有Collision
类型领域。您可以删除它们,只需设置Ball
对上面构造函数中传递的引用的引用。
ball
类型引用也是如此。您只需再次复制Block
课程中Block
和Ball
的字段。不需要。