class Train { int xpos; int ypos; int trainSpeed; int smokeSpeed; int smokepos; int smokeSize; int smokeSizeSpeed; Train(int xp, int yp, int iSpeed) { xpos = xp; ypos = yp; trainSpeed = iSpeed; smokeSpeed = 1; smokepos = 126; smokeSize = 4; smokeSizeSpeed = 2; } void render () { rect(65 + xpos, 145 + ypos, 50, 10); rect(70 + xpos, 155 + ypos, 40, 30); rect(135 + xpos, 165 + ypos, 15, 20); rect(60 + xpos, 185 + ypos, 100, 55); ellipse(80 + xpos, 240 + ypos, 30, 30); ellipse(130 + xpos, 240 + ypos, 30, 30); line(75 + xpos, 235 + ypos, 130 + xpos, 235 + ypos); line(80 + xpos, 245 + ypos, 135 + xpos, 245 + ypos); smokepos = smokepos - smokeSpeed; if (smokepos < 110) { smokepos = 160; } smokeSize = smokeSize + smokeSizeSpeed; if (smokeSize > 20) { smokeSize = 4; } ellipse(143 + xpos, smokepos + ypos, smokeSize, smokeSize); //ellipse(143 + xpos, 140 + ypos, 12, 12); //ellipse(143 + xpos, 154 + ypos, 16, 16); } void drive () { xpos = xpos + trainSpeed; if (xpos > 350) { xpos = -175; } } } //Train myTrain1; //Train myTrain2; int xRow = -140; int MAX = 4; Train[] trains = new Train[MAX]; int xpos = -175; int railcount = 0; void setup() { size(400, 600); for (int i = 0; i < MAX; i++) { //xRow = 1; //if (xRow < 2) { // xRow = xRow + 140; //} //println(xRow); trains[i] = new Train(-175, xRow, int(random(1, 9))); xRow = xRow + 140; } //myTrain1 = new Train(-175, 1, int(random(1, 9))); //myTrain2 = new Train(-175, -140, int(random(1, 9))); //line(0, 255, 400, 255); } void draw() { framerate(30); background(255, 255, 255); for (int i = 0; i < MAX; i++) { trains[i].render(); trains[i].drive(); } //myTrain1.render(); //myTrain1.drive(); //myTrain2.render(); //myTrain2.drive(); }