0

你好。我是新来的。我有一个任务,要求我允许用户单击画布并放置一个对象。用户只能在画布上的任何位置放置对象 100 次。问题是我只能创建一个对象,它总是在左上角。

这是我的代码:

Food[] f;


void setup()
{
  size(400,400);
  background(206,172,26);

  f = new Food[100];
  for (int i = 0; i < 100; i++)
    f[i] = new Food();    
}

void draw()
{
  for(int i=0; i<f.length; i++)
    f[i].draw(); 
}

 class Food
 {
  color c;
  int xpos;
  int ypos;

    Food() 
  {
    c = color(0,255,0);
   xpos = mouseX;
   ypos = mouseY;    
 }
   void draw()
  {
    if (mousePressed == true)
   {
     fill(c);
     ellipse(xpos,ypos,10,10);
   }       
 }
}

我究竟做错了什么?

4

2 回答 2

3

您的 Food() 构造函数没有鼠标的 xpos 和 ypos 参数。您应该将其更改为:

Food(int mousePosX, int mousePosY)
{
    xpos = mousePosX;
    ypos = mousePosY;
}

此外,您应该仅在单击时创建一个 Food 对象。然后您可以获取鼠标的位置并将其传递给 Food 对象构造函数。您将需要一个计数器来跟踪您创建了多少食物对象。

话虽如此,你应该自己做作业(除非你真的被卡住了)。你学得更好。

于 2013-06-07T19:44:45.487 回答
3

我会选择一个 ArrayList,这样您就可以轻松地添加对象:

ArrayList<Dummy> d = new ArrayList<Dummy>();

void setup(){
  size (400, 400);
  smooth();

}

void draw(){
  background(0);
  for(Dummy dd:d){
    dd.display();
  }
}

void mouseReleased(){
  if(d.size() < 100)
  d.add(new Dummy(mouseX, mouseY));

  println(d.size());
}

class Dummy{
  int x, y;
  Dummy(int _x, int _y){
    x = _x;
    y = _y;
  }

  void display(){
   ellipse(x,y,10,10);
  }


}
于 2013-06-08T01:30:05.480 回答