//Darryl Feniquito
//Corvette model driving
//Declared to Corvette Z06 movement and size
float playerPositionX=0;
float playerPositionY=0;
float playerSizeX=300;
float playerSizeY=200;
//Assigned to objects on screen
float speed = 3;
float ellipseX1 = 0;
float ellipseX2 =0;
//Declared to keyPressed functions to move Corvette
boolean goleft=false;
boolean goRight=false;
boolean goUp=false;
boolean goDown=false;
boolean stop = false;
//Assigned to random colors when mouseClicked is activated
boolean isClicked = false;
int red = (int) random(0, 256);
int green = (int) random(0, 256);
int blue = (int) random(0, 256);
//Set the size of window
void setup() {
size(400, 400);
}
//draw background for vehicle
void draw() {
drawBackground();
moveCar();
drawCar();
}
void drawCar() {
//draw tinted windows
fill(255, 28, 3);
ellipseMode(CENTER);
ellipse(160+playerPositionX, 225-playerPositionY+1*sin(frameCount*1), 10, 20);
fill(0);
rectMode(CENTER);
rect(145+playerPositionX, 220-playerPositionY+1*sin(frameCount*1), 10, 19);
noStroke();
fill(0, 0, 0, 124);
quad(110+playerPositionX, 240-playerPositionY+1*sin(frameCount*1), 110+playerPositionX, 211-playerPositionY+1*sin(frameCount*1), 140+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 140+playerPositionX, 240-playerPositionY+1*sin(frameCount*1));
quad(150+playerPositionX, 240-playerPositionY+1*sin(frameCount*1), 150+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 185+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 240+playerPositionX, 240-playerPositionY+1*sin(frameCount*1));
quad(240+playerPositionX, 240-playerPositionY+1*sin(frameCount*1), 185+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 218+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 265+playerPositionX, 240-playerPositionY+1*sin(frameCount*1));
//draw main body of Corvette
//front & side of Corvette
noStroke();
fill(0);
rect(350+playerPositionX, 275-playerPositionY+1*sin(frameCount*1), 32, 22);
fill(22, 170, 247);
rectMode(CENTER);
rect(150+playerPositionX, 250-playerPositionY+1*sin(frameCount*1), 200, 40);
quad(150+playerPositionX, 230-playerPositionY+1*sin(frameCount*1), 75+playerPositionX, 270-playerPositionY+1*sin(frameCount*1), 120+playerPositionX, 270-playerPositionY+1*sin(frameCount*1), 120+playerPositionX, 230-playerPositionY+1*sin(frameCount*1));
ellipse(200+playerPositionX, 230-playerPositionY+1*sin(frameCount*1), 20, 10);
//front grill
quad(250+playerPositionX, 268-playerPositionY+1*sin(frameCount*1), 248+playerPositionX, 230-playerPositionY+1*sin(frameCount*1), 367+playerPositionX, 261-playerPositionY+1*sin(frameCount*1), 367+playerPositionX, 268-playerPositionY+1*sin(frameCount*1));
triangle(316+playerPositionX, 300-playerPositionY+1*sin(frameCount*1), 340+playerPositionX, 284-playerPositionY+1*sin(frameCount*1), 350+playerPositionX, 300-playerPositionY+1*sin(frameCount*1));
quad(340+playerPositionX, 300-playerPositionY+1*sin(frameCount*1), 340+playerPositionX, 290-playerPositionY+1*sin(frameCount*1), 368+playerPositionX, 290-playerPositionY+1*sin(frameCount*1), 370+playerPositionX, 300-playerPositionY+1*sin(frameCount*1));
//side door
triangle(152+playerPositionX, 290-playerPositionY+1*sin(frameCount*1), 216+playerPositionX, 275-playerPositionY+1*sin(frameCount*1), 216+playerPositionX, 290-playerPositionY+1*sin(frameCount*1));
quad(216+playerPositionX, 290-playerPositionY+1*sin(frameCount*1), 216+playerPositionX, 275-playerPositionY+1*sin(frameCount*1), 235+playerPositionX, 285-playerPositionY+1*sin(frameCount*1), 240+playerPositionX, 290-playerPositionY+1*sin(frameCount*1));
quad(50+playerPositionX, 240-playerPositionY+1*sin(frameCount*1), 50+playerPositionX, 230-playerPositionY+1*sin(frameCount*1), 115+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 125+playerPositionX, 240-playerPositionY+1*sin(frameCount*1));
triangle(120+playerPositionX, 240-playerPositionY+1*sin(frameCount*1), 120+playerPositionX, 225-playerPositionY+1*sin(frameCount*1), 150+playerPositionX, 230-playerPositionY+1*sin(frameCount*1));
quad(213+playerPositionX, 279-playerPositionY+1*sin(frameCount*1), 216+playerPositionX, 266-playerPositionY+1*sin(frameCount*1), 290+playerPositionX, 253-playerPositionY+1*sin(frameCount*1), 240+playerPositionX, 298-playerPositionY+1*sin(frameCount*1));
triangle(240+playerPositionX, 298-playerPositionY+1*sin(frameCount*1), 270+playerPositionX, 260-playerPositionY+1*sin(frameCount*1), 270+playerPositionX, 298-playerPositionY+1*sin(frameCount*1));
quad(130+playerPositionX, 298-playerPositionY+1*sin(frameCount*1), 130+playerPositionX, 240-playerPositionY+1*sin(frameCount*1), 160+playerPositionX, 240-playerPositionY+1*sin(frameCount*1), 160+playerPositionX, 298-playerPositionY+1*sin(frameCount*1));
quad(72+playerPositionX, 289-playerPositionY+1*sin(frameCount*1), 65+playerPositionX, 260-playerPositionY+1*sin(frameCount*1), 86+playerPositionX, 260-playerPositionY+1*sin(frameCount*1), 82+playerPositionX, 290-playerPositionY+1*sin(frameCount*1));
//roof of corvette
fill(22, 170, 247);
quad(115+playerPositionX, 220-playerPositionY+1*sin(frameCount*1), 115+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 140+playerPositionX, 207-playerPositionY+1*sin(frameCount*1), 140+playerPositionX, 210-playerPositionY+1*sin(frameCount*1));
quad(140+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 140+playerPositionX, 207-playerPositionY+1*sin(frameCount*1), 215+playerPositionX, 207-playerPositionY+1*sin(frameCount*1), 220+playerPositionX, 210-playerPositionY+1*sin(frameCount*1));
quad(240+playerPositionX, 240-playerPositionY+1*sin(frameCount*1), 185+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 187+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 242+playerPositionX, 240-playerPositionY+1*sin(frameCount*1));
//spoiler fom
fill(0);
quad(54+playerPositionX, 230-playerPositionY+1*sin(frameCount*1), 42+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 47+playerPositionX, 210-playerPositionY+1*sin(frameCount*1), 60+playerPositionX, 228-playerPositionY+1*sin(frameCount*1));
rectMode(CENTER);
rect(48+playerPositionX, 213-playerPositionY+1*sin(frameCount*1), 35, 6);
quad(50+playerPositionX, 283-playerPositionY+1*sin(frameCount*1), 49+playerPositionX, 260-playerPositionY+1*sin(frameCount*1), 65+playerPositionX, 260-playerPositionY+1*sin(frameCount*1), 72+playerPositionX, 288-playerPositionY+1*sin(frameCount*1));
quad(243+playerPositionX, 280-playerPositionY+1*sin(frameCount*1), 258+playerPositionX, 260-playerPositionY+1*sin(frameCount*1), 263+playerPositionX, 260-playerPositionY+1*sin(frameCount*1), 248+playerPositionX, 280-playerPositionY+1*sin(frameCount*1));
//carbon fibre trim homie
noStroke();
fill(0);
rectMode(CENTER);
rect(200+playerPositionX, 300-playerPositionY+1*sin(frameCount*1), 150, 4);
rect(340+playerPositionX, 300-playerPositionY+1*sin(frameCount*1), 60, 4);
//details for Corvette
noStroke();
fill(8, 136, 198);
quad(161+playerPositionX, 298-playerPositionY+1*sin(frameCount*1), 155+playerPositionX, 290-playerPositionY+1*sin(frameCount*1), 240+playerPositionX, 290-playerPositionY+1*sin(frameCount*1), 240+playerPositionX, 298-playerPositionY+1*sin(frameCount*1));
quad(310+playerPositionX, 301-playerPositionY+1*sin(frameCount*1), 315+playerPositionX, 268-playerPositionY+1*sin(frameCount*1), 346+playerPositionX, 268-playerPositionY+1*sin(frameCount*1), 342+playerPositionX, 285-playerPositionY+1*sin(frameCount*1));
rectMode(CENTER);
rect(57+playerPositionX, 246-playerPositionY+1*sin(frameCount*1), 16, 29);
quad(156+playerPositionX, 289-playerPositionY+1*sin(frameCount*1), 151+playerPositionX, 266-playerPositionY+1*sin(frameCount*1), 240+playerPositionX, 266-playerPositionY+1*sin(frameCount*1), 238+playerPositionX, 279-playerPositionY+1*sin(frameCount*1));
triangle(192+playerPositionX, 237-playerPositionY+1*sin(frameCount*1), 191+playerPositionX, 230-playerPositionY+1*sin(frameCount*1), 210+playerPositionX, 235-playerPositionY+1*sin(frameCount*1));
ellipseMode(CENTER);
//front details
fill(67, 65, 65);
quad(340+playerPositionX, 285-playerPositionY+1*sin(frameCount*1), 342+playerPositionX, 268-playerPositionY+1*sin(frameCount*1), 347+playerPositionX, 267-playerPositionY+1*sin(frameCount*1), 344+playerPositionX, 285-playerPositionY+1*sin(frameCount*1));
quad(345+playerPositionX, 290-playerPositionY+1*sin(frameCount*1), 340+playerPositionX, 285-playerPositionY+1*sin(frameCount*1), 367+playerPositionX, 285-playerPositionY+1*sin(frameCount*1), 367+playerPositionX, 290-playerPositionY+1*sin(frameCount*1));
//wheels
fill(64, 61, 61);
ellipse(112+playerPositionX, 280-playerPositionY+1*sin(frameCount*1), 60, 60);
ellipse(294+playerPositionX, 280-playerPositionY+1*sin(frameCount*1), 60, 60);
fill(72, 71, 71);
ellipse(112+playerPositionX, 280-playerPositionY+1*sin(frameCount*1), 45, 45);
ellipse(294+playerPositionX, 280-playerPositionY+1*sin(frameCount*1), 45, 45);
fill(24);
ellipse(112+playerPositionX, 280-playerPositionY+1*sin(frameCount*1), 12, 12);
ellipse(294+playerPositionX, 280-playerPositionY+1*sin(frameCount*1), 12, 12);
//headlights & taillights
fill(255, 255, 255, 200);
quad(340+playerPositionX, 260-playerPositionY+1*sin(frameCount*1), 320+playerPositionX, 251-playerPositionY+1*sin(frameCount*1), 330+playerPositionX, 251-playerPositionY+1*sin(frameCount*1), 355+playerPositionX, 259-playerPositionY+1*sin(frameCount*1));
fill(255, 0, 0);
rectMode(CENTER);
rect(52+playerPositionX, 240-playerPositionY+1*sin(frameCount*1), 5, 10);
rect(55+playerPositionX, 267-playerPositionY+1*sin(frameCount*1), 11, 3);
fill(255, 158, 0);
rect(78+playerPositionX, 280-playerPositionY+1*sin(frameCount*1), 4, 16);
rect(328+playerPositionX, 285-playerPositionY+1*sin(frameCount*1), 4, 16);
if (isClicked == true) {
mousePressed();
} else {
isClicked = false;
}
}
void moveCar() {
if (playerPositionX >= -150) {
if ( goleft == true) {
playerPositionX= playerPositionX -speed;
}
}
if (playerPositionX <= 250) {
if ( goRight == true) {
playerPositionX= playerPositionX +speed;
}
}
if (playerPositionY <= 50) {
if ( goUp == true) {
playerPositionY= playerPositionY +speed;
}
}
if (playerPositionY >=-150 ) {
if ( goDown == true) {
playerPositionY= playerPositionY -speed;
}
}
}
void drawBackground() {
//sunset for my baby Corvette
background(255, 161, 126);
fill(229, 109, 65, 63);
stroke(229, 109, 65, 63);
fill(47, 162, 222, 63);
rectMode(CENTER);
rect(200, 50, 400, 100);
fill(17, 107, 155, 200);
rectMode(CENTER);
rect(200, 0, 400, 50);
fill(247, 225, 22, 100);
rectMode(CENTER);
rect(200, 100, 400, 50);
//sun
fill(255, 255, 255, 70);
ellipse(340, 50, 120, 120);
fill(255, 115, 8, 200);
ellipse(340, 50, 40, 40);
fill(229, 104, 7, 70);
ellipse(340, 50, 60, 60);
ellipse(340, 50, 85, 85);
fill(247, 84, 25, 75);
ellipse(340, 50, 115, 115);
//clouds
{
if (ellipseX1 > -501 && ellipseX1 < 500) {
ellipseX1 = ellipseX1 - speed;
if (ellipseX1 < -500) {
ellipseX1 = 500 - speed;
}
}
fill(255, 255, 255, 150);
noStroke();
ellipseMode(CENTER);
ellipse(-90+ellipseX1, 140, 100, 25);
ellipse(-90+ellipseX1, 130, 85, 25);
ellipse(-390+ellipseX1, 130, 85, 25);
ellipse(-90+ellipseX1, 140, 100, 25);
ellipse(-225+ellipseX1, 150, 130, 35);
ellipse(-275+ellipseX1, 140, 130, 30);
ellipse(-325+ellipseX1, 80, 130, 30);
ellipse(-330+ellipseX1, 70, 100, 30);
ellipse(-370+ellipseX1, 40, 100, 30);
ellipse(-375+ellipseX1, 30, 90, 30);
ellipse(-380+ellipseX1, 25, 80, 30);
ellipse(500+ellipseX1, 50, 80, 30);
ellipse(510+ellipseX1, 60, 90, 35);
ellipse(550+ellipseX1, 120, 90, 35);
ellipse(560+ellipseX1, 110, 85, 35);
ellipse(700+ellipseX1, 110, 140, 35);
ellipse(710+ellipseX1, 100, 90, 35);
ellipse(720+ellipseX1, 120, 100, 35);
ellipse(50+ellipseX1, 180, 150, 30);
ellipse(40+ellipseX1, 170, 140, 25);
ellipse(30+ellipseX1, 165, 110, 20);
ellipse(180+ellipseX1, 80, 140, 20);
ellipse(190+ellipseX1, 70, 115, 30);
ellipse(330+ellipseX1, 100, 100, 20);
ellipse(310+ellipseX1, 90, 90, 20);
ellipse(350+ellipseX1, 85, 100, 30);
ellipse(190+ellipseX1, 70, 115, 30);
ellipse(225+ellipseX1, 150, 130, 40);
ellipse(225+ellipseX1, 140, 110, 35);
ellipse(395+ellipseX1, 140, 110, 35);
ellipse(395+ellipseX1, 130, 95, 35);
//draw road for Corvette
fill(200, 204, 206);
rectMode(CENTER);
rect(200, 300, 400, 200);
fill(255);
rect(50+ellipseX1, 290, 60, 10);
rect(150+ellipseX1, 290, 60, 10);
rect(250+ellipseX1, 290, 60, 10);
rect(350+ellipseX1, 290, 60, 10);
rect(450+ellipseX1, 290, 60, 10);
rect(550+ellipseX1, 290, 60, 10);
rect(650+ellipseX1, 290, 60, 10);
rect(750+ellipseX1, 290, 60, 10);
rect(850+ellipseX1, 290, 60, 10);
rect(-50+ellipseX1, 290, 60, 10);
rect(-150+ellipseX1, 290, 60, 10);
rect(-250+ellipseX1, 290, 60, 10);
rect(-350+ellipseX1, 290, 60, 10);
rect(-450+ellipseX1, 290, 60, 10);
rect(-550+ellipseX1, 290, 60, 10);
//shadow for baby Corvette
noStroke();
fill(0, 0, 0, 63);
ellipseMode(CENTER);
ellipse(200+playerPositionX, 300-playerPositionY+1*sin(frameCount*1), 335, 55);
}
}
void keyPressed() {
if (key == 'a') {
goleft = true;
}
if (key == 'w') {
goUp = true;
}
if (key == 's') {
goDown = true;
}
if (key == 'd') {
goRight = true;
}
}
void keyReleased () {
if (key == 'a') {
goleft = false;
}
if (key == 'w') {
goUp = false;
}
if (key == 's') {
goDown = false;
}
if (key == 'd') {
goRight = false;
}
//Corvette stay within the frame
if (playerPositionX >= 450) {
speed = 0;
}
}
//left click activates random headlights
void mousePressed() {
int red = (int) random(0, 256);
int green = (int) random(0, 256);
int blue = (int) random(0, 256);
isClicked = true;
fill (red, green, blue, 200);
quad(340+playerPositionX, 259-playerPositionY+1*sin(frameCount*1), 340+playerPositionX, 256-playerPositionY+1*sin(frameCount*1), 520+playerPositionX, 300-playerPositionY+1*sin(frameCount*1), 400+playerPositionX, 300-playerPositionY+1*sin(frameCount*1));
}
void mouseReleased() {
isClicked = false;
}
void endProgram() {
if (keyCode == 27) {
stop = true;
}
}