我正在尝试制作一个单人版的乒乓球。当玩家撞到墙时,墙就会收缩。如果玩家错过了球,它就会变成一颗子弹,并在游戏中添加另一个球。这个游戏还有更多的东西,但我不能通过这一部分。我用我的ball、bullet和新的ball对象定义了一个类。如果我在draw()的开头调用newBall(),它就会起作用。但是如果我把它放在if语句中(如果球员没有命中,新球就会出现),它就不会显示。我知道if语句是正确的,因为bullet()工作得很好。我确信这是一个显而易见的问题,但是我不能让它工作。
类:
class balls {
void ball() {
fill(ellipseColor);
ellipse(x, y, 20, 20);
}
void bullet() {
ellipseColor= color(224, 131, 81);
ellipse(x, y, 20, 20);
speedX = speedX * -1;
}
void newBall() {
fill(ellipseColor);
ellipse(newX, newY, 20, 20);
}if语句:
if(x > width-5 && (y < mouseY-75 || y > mouseY+ 75)) {
b_1.bullet();
b_1.newBall();
}x,y,newX,newY:
x = x + speedX;
y = y + speedY;
newX= newX + newSpeedX;
newY= newY + newSpeedY;发布于 2016-03-11 19:55:19
您的newBall()函数唯一要做的就是为单个帧绘制一个椭圆。这不会有多大作用。
相反,您需要创建一个类来封装绘制Ball所需的所有内容。保留该类实例的ArrayList,并在要添加球时添加一个实例。然后告诉球移动并画出它们自己。
下面是一个例子:
ArrayList<Ball> balls = new ArrayList<Ball>();
void setup(){
size(500, 500);
}
void mouseClicked(){
balls.add(new Ball(mouseX, mouseY));
}
void draw(){
background(0);
for(Ball ball : balls){
ball.draw();
}
}
class Ball{
float x;
float y;
public Ball(float x, float y){
this.x = x;
this.y = y;
}
void draw(){
y++;
ellipse(x, y, 20, 20);
}
}https://stackoverflow.com/questions/35932584
复制相似问题