处理:传入对象

时间:2013-11-09 22:55:55

标签: object processing

我有一个Bot类,Gem类和一个主程序。

在Gem课程中:

  Gem(float x, float y)    
  {
    xLoc = x;
    yLoc = y;
  }

在主程序中:

void mousePressed()
{
  gem1 = new Gem(mouseX, mouseY); 
  seekGem = true;
}

void draw()
{
  if (seekGem)
     bot1.seek(gem1.xLoc, gem1.yLoc);
}

然后在Bot课程中我得到了:

void seek(float xTarg, float yTarg)
{
 if (abs(xTarg - xLoc) < bodyW/4)    
    xDir = 0;
  else if (xTarg > xLoc)              
    xDir = 1;
  else if (xTarg < xLoc)
    xDir = -1;

  xLoc = xLoc + xDir * speed;

  if (abs(yTarg - yLoc) < bodyH/4)   
    yDir = 0;
  else if (yTarg > yLoc)          
    yDir = 1;
  else if (yTarg < yLoc)
    yDir = -1;  

  yLoc = yLoc + yDir * speed;
}

基本上,当宝石出现在屏幕上时,机器人会移动到宝石。

我被告知要将gem1传递给机器人的搜索方法而不是bot1.seek(gem1.xLoc, gem1.yLoc),但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

像这样:

void draw()
{
  if (seekGem)
     bot1.seek(gem1);
}

和bot中的搜索方法:

void seek(Gem gemToSeek)
{
 float xTarg = gemToSeek.xLoc;
 float yTarg = gemToSeek.yLoc;
 if (abs(xTarg - xLoc) < bodyW/4)    
    xDir = 0;
  else if (xTarg > xLoc)              
    xDir = 1;
  else if (xTarg < xLoc)
    xDir = -1;

  xLoc = xLoc + xDir * speed;

  if (abs(yTarg - yLoc) < bodyH/4)   
    yDir = 0;
  else if (yTarg > yLoc)          
    yDir = 1;
  else if (yTarg < yLoc)
    yDir = -1;  

  yLoc = yLoc + yDir * speed;
}