Modify a text file: $/q1.pde
$/q1.pde
//// Project #1 - Dynamic Sketch //// //J.Olvera //Declare variables float horizon; int i = 0; //Pos. of flowers float flowerX = 10; float flowerY = 10; float flowerSize = 15; //Pos. of rocks float rockX = 10; float rockY = 10; float rockSize = 15; int endRocks = 150; int x = 0; int y = 470; int spacing = 10; int len = 20; //Pos. & speed of sun float sunX; float sunSize; float sunSpeed; //Pos. of tree float treeX; float treeY; float treeSize; //Pos. & speed of hero float josukeX, josukeY; float josukeXspeed, josukeYspeed; //Pos. & speed of dog float scoobyX, scoobyY; float scoobyXspeed, scoobyYspeed; //Pos. of home and base float homeX = 120, homeY = 150, homeW = 200, homeH = 100; float baseX, baseY; //Pos. & speed of Monster float dioX, dioY; float dioXspeed, dioYspeed; //Colors that will be used color RED = color(255, 0, 0); color GREEN = color(0, 255, 0); color BLUE = color(0, 0, 255); color YELLOW = color(255, 255, 0); color MAGENTA = color(255, 0, 255); color BROWN = color (127, 0, 0); color BLACK = color(0, 0, 0); color PALE = color(200, 200, 200); color WHITE = color(255, 255, 255); //// SETUP: Screen size & modes //// void setup() { size(500, 500); smooth(); sunX = width/2; sunSize = width/12; sunSpeed = 2; treeX = 380; treeY = 180; treeSize = width/2; horizon = height/2; homeY = horizon - homeH; baseX = 10; baseY = height - 150; reset(); } void reset() { josukeHouse(); scoobyHouse(); dioCorner(); } void josukeHouse() { //Josuke starts at home josukeX = homeX + 5; josukeY = homeY + 15; //Josuke's & Scooby's speeds josukeXspeed = 3; josukeYspeed = 3; scoobyXspeed = 3; scoobyYspeed = 3; //Monster starts at the bottom right corner dioX = homeX + 270; dioY = homeY + 0; //Monster's speeds dioXspeed = 0.5; dioYspeed = 0.5; } void scoobyHouse() { scoobyX = homeX - 70; scoobyY = homeY + 50; } void dioCorner() { dioX = homeX + 270; dioY = homeY + 0; } //// DRAW: sky with sun and creature(s) //// void draw() { scene(); home(); action(); show(); messages(); } //SCENE: Sky, sun, flowers, rocks & house void scene() { //Sky background(150, 210, 255); //Sun fill(YELLOW); ellipse(sunX, height/8, sunSize, sunSize); //Flowers fill(WHITE); for (int i = 0; i < 500; i ++) { ellipse(i * 50, 245, flowerSize, flowerSize); fill(MAGENTA); ellipse(i * 50, 245, flowerSize/2, flowerSize/2); } //Tree fill(BROWN); rect(treeX, treeY, 30, 80); fill(GREEN); ellipse(treeX + 15, height/4, treeSize/2, treeSize/2); //Grass fill(GREEN); rect(0, horizon, width, height - horizon); //Rocks fill(BROWN); while ( x <= endRocks) { ellipse(x, y, rockSize, rockSize); x = x + spacing; } } void home () { //Blue home fill(BLUE); rect(homeX, homeY, homeW, homeH); fill(200, 120, 40); triangle(homeX, homeY, homeX + homeW, homeY, homeX + homeW/2, homeY - homeH/2); //Pale door fill(WHITE); rect(homeX + 40, homeY + 10, 50, homeH - 10); fill(RED); ellipse(homeX + 80, homeY + 50, 19, homeH - 80); //Dog base fill(RED); rect(baseX, baseY, 100, 50); fill(WHITE); textSize(20); text("Base", baseX + 20, baseY + 20); fill(BLACK); rect(baseX + 85, baseY + 10, 15, 40); } //ACTION: Sun movement void action() { //Move sun sunX += sunSpeed; //Make sun reverse course if (sunX >= width - sunSize/2 || sunX <= 0 + sunSize/2) { sunSpeed *= -1; } ////ACTION: Monster chases Josuke//// dioX = dioX + (josukeX - dioX) / 90; dioY = dioY + (josukeY - dioY) / 90; ////Reset everything when monster catches Josuke//// if (dist(dioX, dioY, josukeX, josukeY) < 50) { dioCorner(); josukeY = horizon; } //Move Monster dioX = dioX + dioXspeed; dioY = dioY + dioYspeed; //Move Josuke & Scooby josukeX = josukeX + josukeXspeed; josukeY = josukeY + josukeYspeed; scoobyX = scoobyX + scoobyXspeed; scoobyY = scoobyY + scoobyYspeed; //Bounce off walls for Monster if (dioX > width) { dioXspeed = -dioXspeed; } if (dioX < 0) { dioXspeed = -dioXspeed; } if (dioY > height) { dioYspeed = -dioYspeed; } if (dioY < horizon/2) { dioYspeed = -dioYspeed; } //Bounce off walls for Josuke if (josukeX > width) { josukeXspeed = -josukeXspeed; } if (josukeX < 0) { josukeXspeed = -josukeXspeed; } if (josukeY > height) { josukeYspeed = -josukeYspeed; } if (josukeY < horizon/2) { josukeYspeed = -josukeYspeed; } //Bounce off walls for Scooby if (scoobyX > width) { scoobyXspeed = -scoobyXspeed; } if (scoobyX < 0) { scoobyXspeed = -scoobyXspeed; } if (scoobyY > height) { scoobyYspeed = -scoobyYspeed; } if (scoobyY < horizon/2) { scoobyYspeed = -scoobyYspeed; } } ////SHOW: Josuke & Scooby & Monster void show() { hero(); dog(); monster(); } void hero() { //Draw Josuke// //Josuke's body fill(MAGENTA); rect(josukeX, josukeY, 50, 80); //Josuke's head fill(200, 150, 100); ellipse(josukeX + 25, josukeY - 20, 40, 40); //Josuke's eyes fill(255); ellipse(josukeX + 16, josukeY - 25, 12, 12); ellipse(josukeX + 34, josukeY - 25, 12, 12); fill(BLACK); ellipse(josukeX + 16, josukeY - 24, 4, 4); ellipse(josukeX + 34, josukeY - 24, 4, 4); //Josuke's name fill(BLACK); textSize(12); text("Josuke", josukeX + 5, josukeY + 15); } void dog() { //Draw Scooby// //Scooby's body fill(BROWN); rect(scoobyX, scoobyY, 70, 30); //Scooby's head fill(BROWN); rect(scoobyX + 30, scoobyY - 25, 60, 25); //Scooby's eyes fill(255); ellipse(scoobyX + 45, scoobyY - 15, 12, 12); fill(BLACK); ellipse(scoobyX + 45, scoobyY - 15, 4, 4); //Scooby's name fill(WHITE); text("Scooby", scoobyX + 15, scoobyY + 15); //Legs change every 25 pixels float step; //Legs lean left if (scoobyX%50 < 25) { step = -5; } //Legs lean right else { step = +5;} fill(BROWN); strokeWeight(3); //Four legs that are spaced 15 pixels apart line(scoobyX + 15, scoobyY + 30, scoobyX + 15 + step, scoobyY + 50); line(scoobyX + 30, scoobyY + 30, scoobyX + 30 + step, scoobyY + 50); line(scoobyX + 45, scoobyY + 30, scoobyX + 45 + step, scoobyY + 50); line(scoobyX + 60, scoobyY + 30, scoobyX + 60 + step, scoobyY + 50); strokeWeight(1); } void monster() { //Draw monster// //Monster's body fill(YELLOW); rect(dioX, dioY, 50, 100); //Monster's head fill(200, 150, 100); ellipse(dioX + 25, dioY - 20, 40, 40); //Monster's eyes fill(WHITE); ellipse(dioX + 25, dioY - 25, 12, 12); fill(RED); ellipse(dioX + 25, dioY - 24, 4, 4); //Monster's name fill(BLACK); textSize(12); text("DIO", dioX + 15, dioY + 35); //Legs change every 25 pixels float step; //Legs lean left if (dioX%50 < 25) { step = -5; } //Legs lean right else { step = +5;} strokeWeight(5); //Two legs that are spaced 15 pixels apart line(dioX + 5 + step, dioY + 120 + step, dioX + 10, dioY + 100); line(dioX + 40 + step, dioY + 130 + step, dioX + 40, dioY + 100); strokeWeight(1); } //// MESSAGES: Title, hint, & author //// void messages() { //Title fill(random(50)); textSize(25); text("Don't leave your friend behind!", width/8, 24); //Title //Hint textSize(12); text("Press 'q' to exit", width/56, horizon + 15); textSize(12); text("Press 'r' to reset", width/56, horizon + 30); textSize(12); text("Click mouseX or mouseY any place to reset the hero", width/56, horizon + 45); //Author textSize(20); text("Jose Olvera", 10, height - 10); fill(0); } //// GAMING BUTTONS //// void mousePressed() { //Click to set pos. (x,y) josukeX = mouseX; josukeY = mouseY; } void keyPressed() { if (key == 'q') { exit(); } if (key == 'r') { reset(); } }