In my 3D game, there are trees, lots of them. To make it easier, I want to make them in a row, with multiple rows. I have the code for the trees and placing them into the game but it takes up a lot of line the add them in. I was thinking of a for() loop for adding many but I'm not sure of how to do this. My trees code:
Peastcam camera;
TREE tree1;
TREE tree2;
TREE tree3;
TREE tree4;
TREE tree5;
TREE tree6;
TREE tree7;
TREE tree8;
TREE tree9;
TREE tree10;
TREE tree11;
TREE tree12;
TREE tree13;
TREE tree14;
TREE tree15;
TREE tree16;
TREE tree17;
TREE tree18;
TREE tree19;
TREE tree20;
void setup(){
//fullScreen(P3D);
size(683,384,P3D);
frameRate(60);
camera = new PeasyCam(this,width/2, height-100, width/2, 50);
tree1 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,115,0,230);
tree2 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,230);
tree3 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,220);
tree4 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,210);
tree5 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,200);
tree6 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,190);
tree7 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,180);
tree8 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,170);
tree9 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,160);
tree10 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,150);
tree11 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,140);
tree12 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,130);
tree13 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,120);
tree14 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,110);
tree15 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,100);
tree16 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,240);
tree17 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,250);
tree18 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,260);
tree19 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,270);
tree20 = new TREE(random(5,10),random(2,5),random(5,15),#1e932d,#8B4513,175,0,280);
}
void draw(){
background(105);
//directionalLight(255,255,255,0,1,0);
translate(width/2,height+1,0);
fill(0,255,0); //(height/2)/tan(PI/6)
stroke(0); //translate(x,y,z);
box(width,-1,width); //box(width,height,depth)
fill(255,0,0);
tree1.display();
tree2.display();
tree3.display();
tree4.display();
tree5.display();
tree6.display();
tree7.display();
tree8.display();
tree9.display();
tree10.display();
tree11.display();
tree12.display();
tree13.display();
tree14.display();
tree15.display();
tree16.display();
tree17.display();
tree18.display();
tree19.display();
tree20.display();
}
class TREE {
float h;
float tS;
float lS;
color lC;
color tC;
float treeX,treeY,treeZ;
TREE(float trunkHeight, float trunkSize, float leafSize, color leafColor, color trunkColor, int treex, int treey, int treez){
h = trunkHeight;
tS = trunkSize;
lS = leafSize;
lC = leafColor;
tC = trunkColor;
treeX = treex;
treeY = treey;
treeZ = treez;
}
void display(){
fill(tC);
beginShape();
vertex(treeX-(tS/2),treeY,treeZ-(tS/2));
vertex(treeX-(tS/2),treeY,treeZ+(tS/2));
vertex(treeX+(tS/2),treeY,treeZ+(tS/2));
vertex(treeX+(tS/2),treeY,treeZ-(tS/2));
endShape(CLOSE);
beginShape();
vertex(treeX-(tS/2),treeY-h,treeZ-(tS/2));
vertex(treeX-(tS/2),treeY-h,treeZ+(tS/2));
vertex(treeX+(tS/2),treeY-h,treeZ+(tS/2));
vertex(treeX+(tS/2),treeY-h,treeZ-(tS/2));
endShape(CLOSE);
beginShape();
vertex(treeX-(tS/2),treeY,treeZ-(tS/2));
vertex(treeX-(tS/2),treeY,treeZ+(tS/2));
vertex(treeX-(tS/2),treeY-h,treeZ+(tS/2));
vertex(treeX-(tS/2),treeY-h,treeZ-(tS/2));
endShape(CLOSE);
beginShape();
vertex(treeX+(tS/2),treeY,treeZ-(tS/2));
vertex(treeX+(tS/2),treeY,treeZ+(tS/2));
vertex(treeX+(tS/2),treeY-h,treeZ+(tS/2));
vertex(treeX+(tS/2),treeY-h,treeZ-(tS/2));
endShape(CLOSE);
beginShape();
vertex(treeX-(tS/2),treeY,treeZ+(tS/2));
vertex(treeX+(tS/2),treeY,treeZ+(tS/2));
vertex(treeX+(tS/2),treeY-h,treeZ+(tS/2));
vertex(treeX-(tS/2),treeY-h,treeZ+(tS/2));
endShape(CLOSE);
beginShape();
vertex(treeX-(tS/2),treeY,treeZ-(tS/2));
vertex(treeX+(tS/2),treeY,treeZ-(tS/2));
vertex(treeX+(tS/2),treeY-h,treeZ-(tS/2));
vertex(treeX-(tS/2),treeY-h,treeZ-(tS/2));
endShape(CLOSE);
fill(lC);
beginShape();
vertex(treeX-(lS/2),treeY-h,treeZ-(lS/2));
vertex(treeX-(lS/2),treeY-h,treeZ+(lS/2));
vertex(treeX+(lS/2),treeY-h,treeZ+(lS/2));
vertex(treeX+(lS/2),treeY-h,treeZ-(lS/2));
endShape(CLOSE);
beginShape();
vertex(treeX-(lS/2),treeY-h-lS,treeZ-(lS/2));
vertex(treeX-(lS/2),treeY-h-lS,treeZ+(lS/2));
vertex(treeX+(lS/2),treeY-h-lS,treeZ+(lS/2));
vertex(treeX+(lS/2),treeY-h-lS,treeZ-(lS/2));
endShape(CLOSE);
beginShape();
vertex(treeX-(lS/2),treeY-h,treeZ-(lS/2));
vertex(treeX-(lS/2),treeY-h,treeZ+(lS/2));
vertex(treeX-(lS/2),treeY-h-lS,treeZ+(lS/2));
vertex(treeX-(lS/2),treeY-h-lS,treeZ-(lS/2));
endShape(CLOSE);
beginShape();
vertex(treeX+(lS/2),treeY-h,treeZ-(lS/2));
vertex(treeX+(lS/2),treeY-h,treeZ+(lS/2));
vertex(treeX+(lS/2),treeY-h-lS,treeZ+(lS/2));
vertex(treeX+(lS/2),treeY-h-lS,treeZ-(lS/2));
endShape(CLOSE);
beginShape();
vertex(treeX-(lS/2),treeY-h,treeZ+(lS/2));
vertex(treeX+(lS/2),treeY-h,treeZ+(lS/2));
vertex(treeX+(lS/2),treeY-h-lS,treeZ+(lS/2));
vertex(treeX-(lS/2),treeY-h-lS,treeZ+(lS/2));
endShape(CLOSE);
beginShape();
vertex(treeX-(lS/2),treeY-h,treeZ-(lS/2));
vertex(treeX+(lS/2),treeY-h,treeZ-(lS/2));
vertex(treeX+(lS/2),treeY-h-lS,treeZ-(lS/2));
vertex(treeX-(lS/2),treeY-h-lS,treeZ-(lS/2));
endShape(CLOSE);
}
}
As you can see, there is a lots of code just for 20 trees, but I need a lot more trees in the game (basically to act as the boarder). I have seem people use for loops to generate a row or grid of squares but I'm not sure of how to do it for custom created objects (trees). Please help.