// CMSC110 Fall 2019 - Assignment#2
// Created by: Deepak Kumar
// Date: September 2019
// Purpose:
// Exercise to learn how to write functions with parameters.
// Also, to learn how to use functions to draw an object with
// varying width and height at any given x, y location on the
// canvas.
// This is an exemplar of what Assignment#2 was asking for
void setup() { // set up camvas
size(500, 500);
background(200);
} // setup()
void draw() {
// nothing to do here, as trucks are drawn
// inresponse to mouse clicks
} // draw()
void mousePressed() {
// Generate truck color
fill(random(50,200), random(50,200), random(50,200));
// Get the body size of truck
float truckBody = random(50, 150);
draw truck at mouse click
truck(mouseX, mouseY, truckBody, truckBody*0.7);
} // mousePressed
void keyPressed() {
// clear screen
background(200);
} // keyPressed()
void truck(float x, float y, float w, float h) {
// Draw a truck at (x, y) of width w, height h
float body = 5 * w / 8;
float hoodW = 3 * w / 8;
float hoodH = h / 2;
float wheelS = hoodW/2;
// Draw a truck
pushMatrix();
translate(x, y);
// Draw body
stroke(0);
rect(0, -body, body, body);
// Draw hood
rect(body, - hoodH, hoodW, hoodH);
fill(0);
rect(body, -hoodH, hoodW, random(hoodH*0.5));
// /headlamp
fill(0);
//arc(body+hoodW, -hoodH*0.9, hoodH*0.2, hoodH*0.2, PI/2, -PI/2);
//arc(body+hoodW, -hoodH*0.8, hoodH*0.4, hoodH*0.4, -PI/2, PI/2);
rect(body+hoodW, -hoodH, hoodH*0.1, hoodH*0.1);
// Draw window
stroke(0);
line(body, - body, + body + hoodW/2, -hoodH);
line(body, -body, body, 0);
line(0, 0, w, 0);
// Draw wheels
fill(0);
ellipse(body/2, 0, wheelS, wheelS);
ellipse(w-hoodW/2, 0, wheelS, wheelS);
// Draw Number
fill(0);
String number = str(int(random(10, 100)));
text(number, body*0.2, -body*0.5);
popMatrix();
} // truck()