首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象在if语句中不起作用

对象在if语句中不起作用
EN

Stack Overflow用户
提问于 2016-03-11 13:00:32
回答 1查看 26关注 0票数 0

我正在尝试制作一个单人版的乒乓球。当玩家撞到墙时,墙就会收缩。如果玩家错过了球,它就会变成一颗子弹,并在游戏中添加另一个球。这个游戏还有更多的东西,但我不能通过这一部分。我用我的ball、bullet和新的ball对象定义了一个类。如果我在draw()的开头调用newBall(),它就会起作用。但是如果我把它放在if语句中(如果球员没有命中,新球就会出现),它就不会显示。我知道if语句是正确的,因为bullet()工作得很好。我确信这是一个显而易见的问题,但是我不能让它工作。

类:

代码语言:javascript
复制
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语句:

代码语言:javascript
复制
if(x > width-5 && (y < mouseY-75 || y > mouseY+ 75)) {
 b_1.bullet();
 b_1.newBall();
}

x,y,newX,newY:

代码语言:javascript
复制
x = x + speedX;
y = y + speedY;
newX= newX + newSpeedX;
newY= newY + newSpeedY;
EN

回答 1

Stack Overflow用户

发布于 2016-03-11 19:55:19

您的newBall()函数唯一要做的就是为单个帧绘制一个椭圆。这不会有多大作用。

相反,您需要创建一个类来封装绘制Ball所需的所有内容。保留该类实例的ArrayList,并在要添加球时添加一个实例。然后告诉球移动并画出它们自己。

下面是一个例子:

代码语言:javascript
复制
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);
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35932584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档