您好。我是SO的新手。我有一项任务,要求我允许用户点击画布并放置一个对象。仅允许用户将对象放置在画布上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);
}
}
}
我做错了什么?
答案 0 :(得分:3)
您的Food()构造函数没有鼠标的xpos和ypos参数。你应该改为:
Food(int mousePosX, int mousePosY)
{
xpos = mousePosX;
ypos = mousePosY;
}
此外,只有在单击时才应创建Food对象。然后,您可以获取鼠标的位置并将其传递到Food对象构造函数中。您将需要一个计数器来跟踪您创建的食物对象的数量。
所有这一切,你应该自己做作业(除非你真的卡住)。你学得更好。
答案 1 :(得分: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);
}
}