/*//////////////////////// < Avoid Stuff > Lawrence Le 991467736 IMC Interactive Toy Assignment - Click and drag the ship with the mouse - Dodge the red ships - Collect the orbs - Score bar increases in length with each orb collected - Getting hit by a red ship resets the score bar and your ship ////////////////////////*/ ////////Variables//////// //Ship's Starting Coordinates float shipOriginX = 200; //X value float shipOriginY = 200; // Y value //Score Bar Length Increase int scoreCounter = 0; //Enemies Types float mobTopX = random(25, 375); //Mob coming from the top - x float mobTopY = random(0, -100); //Mob coming from the top - y float mobLeftX = random(0, -100); //Mob coming from the left - x float mobLeftY = random(25, 375); //Mob coming from the left - y float mobRightX = random(400, 500); //Mob coming from the right - x float mobRightY = random(25, 375); //Mob coming from the right - y float mobDownX = random(25, 375); //Mob coming from the bottom - x float mobDownY = random(400, 500); //Mob coming from the bottom - y //Collectibles float collectRightX = random(400, 500); //Collectible coming from the right side - x float collectRightY = random(25, 375); //Collectible coming from the right side - y float collectLeftX = random(0, -100); //Collectible coming from the left side - x float collectLeftY = random(25, 375); //Collectible coming from the left side - y //Movement Speed float mobSpeed = 4; //Speed for the four mob types float collectSpeed = 2; //Speed for the two collectibles //Background Scroll Speed float scrollSpeed; //Speed at which background scrolls upwards //////////////////////// //Basic Settings (Size, No Outlines, Frame Rate) void setup() { size(400, 400); noStroke(); frameRate(60); } //Placing All The Functions, Etc. void draw() { scrollBackground(); drawShip(); drawMobTop(); drawMobLeft(); drawMobRight(); drawMobDown(); mobReset(); drawCollectLeft(); drawCollectRight(); collectReset(); borderPattern(); scoreBar(); drawMobCollision(); drawCollectCollision(); } // Player's Ship (Drawing and Moving) void drawShip() { // Hold Mouse Button While Hovering Over To Drag Ship if (mousePressed) { if ((mouseX >= shipOriginX - 25) && (mouseX <= shipOriginX + 25)) { if ((mouseY >= shipOriginY - 25) && (mouseY <= shipOriginY + 25)) { shipOriginX = mouseX; shipOriginY = mouseY; } } } //Limiting Movement To The Border if (shipOriginX > 390) { shipOriginX = 390; } if (shipOriginY > 390) { shipOriginY = 390; } if (shipOriginX < 10) { shipOriginX = 10; } if (shipOriginY < 10) { shipOriginY = 10; } // Bubble Around Ship ellipseMode(CENTER); fill(150, 150, 255); ellipse(shipOriginX, shipOriginY, 50, 50); fill(255, 125); ellipse(shipOriginX, shipOriginY, 47 + sin(frameCount/16)*8, 47 + sin(frameCount/16)*8); //Ship Shapes rectMode(CENTER); fill(0 + sin(frameCount/10)*5); rect(shipOriginX, shipOriginY, 28, 28); fill(190 + sin(frameCount/10)*5); rect(shipOriginX, shipOriginY, 26, 26); fill(0); quad(shipOriginX + 20, shipOriginY, shipOriginX, shipOriginY - 20, shipOriginX - 20, shipOriginY, shipOriginX, shipOriginY + 20); fill(240); quad(shipOriginX + 19, shipOriginY, shipOriginX, shipOriginY - 19, shipOriginX - 19, shipOriginY, shipOriginX, shipOriginY + 19); fill(200 + sin(frameCount/10)*5, 25 + sin(frameCount/10)*5, 25 + sin(frameCount/10)*5); ellipseMode(CENTER); ellipse(shipOriginX, shipOriginY, 15, 15); fill(255, 100 + sin(frameCount/10)*5); ellipse(shipOriginX + 1.2, shipOriginY + 1.2, 12, 12); fill(255, 125 + sin(frameCount/10)*5); ellipse(shipOriginX + 3, shipOriginY + 2.5, 5, 5); } //Dotted Border void borderPattern() { fill(255); rectMode(CENTER); //Top edge for (int square = 10; square < width; square = square + 20) { rect(square, 10, 10, 10); } //Bottom edge for (int square = 10; square < height; square = square + 20) { rect(square, 390, 10, 10); } //Left edge for (int square = 10; square < width; square = square + 20) { rect(10, square, 10, 10); } //Right edge for (int square = 10; square < height; square = square + 20) { rect(390, square, 10, 10); } } //Mobs That Spawn From The TOP void drawMobTop() { fill(255, 100, 100); triangle(mobTopX, mobTopY + 10, mobTopX - 10, mobTopY - 10, mobTopX + 10, mobTopY - 10); fill(255, 100, 100); triangle(mobTopX - 10, mobTopY - 10, mobTopX + 10, mobTopY - 10, mobTopX, mobTopY - 35); fill(255, 255, 125, 50); triangle(mobTopX - 10, mobTopY - 15, mobTopX + 10, mobTopY - 15, mobTopX, mobTopY - 40); fill(255, 255, 50); ellipse(mobTopX, mobTopY - 3, 7, 7); fill(255, 255, 125); ellipse(mobTopX, mobTopY - 3, 4, 4); //Top Mob Movement mobTopY += mobSpeed; } //Mobs That Spawn From The LEFT void drawMobLeft() { fill(255, 0, 0); ellipse(mobLeftX, mobLeftY, 20, 20); fill(240, 100, 100); ellipse(mobLeftX, mobLeftY, 15, 15); fill(75, 240, 75); ellipse(mobLeftX, mobLeftY, 10, 10); fill (240, 100, 100); triangle(mobLeftX + 7, mobLeftY + 5, mobLeftX + 7, mobLeftY - 5, mobLeftX + 23, mobLeftY); //Left Mob Movement mobLeftX += mobSpeed; } //Mobs That Spawn From The RIGHT void drawMobRight() { rectMode(CENTER); fill(190, 50, 50); rect(mobRightX, mobRightY, 25, 25); rect(mobRightX + 15, mobRightY, 5, 5); rect(mobRightX - 15, mobRightY, 5, 5); rect(mobRightX, mobRightY + 15, 5, 5); rect(mobRightX, mobRightY - 15, 5, 5); fill(60, 180, 60); rect(mobRightX, mobRightY, 15, 15); fill(30, 210, 30); rect(mobRightX, mobRightY, 5, 5); //Right Mob Movement mobRightX -= mobSpeed; } //Mobs That Spawn From DOWN void drawMobDown() { fill(225, 0, 0); quad(mobDownX, mobDownY, mobDownX + 8, mobDownY + 8, mobDownX, mobDownY - 32, mobDownX - 8, mobDownY + 8); fill(255, 200, 0); quad(mobDownX, mobDownY - 4, mobDownX + 5, mobDownY + 5, mobDownX, mobDownY - 24, mobDownX - 5, mobDownY + 5); //Down Mob Movement mobDownY -= mobSpeed; } //Mob Reset Points void mobReset() { //Top Mob Reset Position if (mobTopY >= 400) { mobTopX = random(25, 375); mobTopY = random(0, -100); } //Left Mob Reset Position if (mobLeftX >= 400) { mobLeftX = random(0, -100); mobLeftY = random(25, 375); } //Right Mob Reset Position if (mobRightX <= 0) { mobRightX = random(400, 500); mobRightY = random(25, 375); } //Down Mob Reset Position if (mobDownY <= 0) { mobDownX = random(25, 375); mobDownY = random(400, 500); } } //Collectible That Spawns From The LEFT void drawCollectLeft() { fill(255, 255, 0); ellipse(collectLeftX, collectLeftY, 15, 15); fill(240, 240, 30); ellipse(collectLeftX, collectLeftY, 12, 12); //Left Collectible Movement collectLeftX += collectSpeed; } //Collectible That Spawns From The RIGHT void drawCollectRight() { fill(255, 255, 0); ellipse(collectRightX, collectRightY, 15, 15); fill(240, 240, 30); ellipse(collectRightX, collectRightY, 12, 12); //Right Collectible Movement collectRightX -= collectSpeed; } //Collectible Reset Points void collectReset() { //Left Collectible Reset Position if (collectLeftX >= 400) { collectLeftX = random(-100, -150); collectLeftY = random(25, 375); } //Right Collectible Reset Position if (collectRightX <= 0) { collectRightX = random(600, 650); collectRightY = random(25, 375); } } //Score Bar void scoreBar() { fill(255, 0, 0); rectMode(CORNERS); rect(50, 40, 50 + scoreCounter*3, 50); //Increase Length With Every Pick-Up } //Collisions Between Player's Ship And Mobs (Sent Back To Starting Positon) void drawMobCollision() { //Collision With Mob From The Top if (dist(mobTopX, mobTopY, shipOriginX, shipOriginY) <= 35) { shipOriginX = 200; shipOriginY = 200; scoreCounter = 0; //Score resets } //Collision With Mob From The Left if (dist(mobLeftX, mobLeftY, shipOriginX, shipOriginY) <= 35) { shipOriginX = 200; shipOriginY = 200; scoreCounter = 0; //Score resets } //Collision With Mob From The Right if (dist(mobRightX, mobRightY, shipOriginX, shipOriginY) <= 35) { shipOriginX = 200; shipOriginY = 200; scoreCounter = 0; //Score resets } //Collision With Mob From The Down if (dist(mobDownX, mobDownY, shipOriginX, shipOriginY) <= 35) { shipOriginX = 200; shipOriginY = 200; scoreCounter = 0; //Score resets } } //Collisions Between Player's Ship and Collectibles (Collectibles Are Reset And Points Are Scored) void drawCollectCollision() { //Collision With Collectible From The Left if (dist(collectLeftX, collectLeftY, shipOriginX, shipOriginY) <= 20) { collectLeftX = random(-100, 0); collectLeftY = random(25, 375); scoreCounter += 1; //Gain one score point } //Collision With Collectible From The Right if (dist(collectRightX, collectRightY, shipOriginX, shipOriginY) <= 20) { collectRightX = random(400, 500); collectRightY = random(25, 375); scoreCounter += 1; //Gain one score point } } //Scrolling Background void scrollBackground() { //Background Shapes rectMode(CORNERS); fill(45); rect(0, 0 - scrollSpeed, 400, 100 - scrollSpeed); fill(50); rect(0, 100 - scrollSpeed, 400, 200 - scrollSpeed); fill(60); rect(0, 200 - scrollSpeed, 400, 300 - scrollSpeed); fill(70); rect(0, 300 - scrollSpeed, 400, 400 - scrollSpeed); fill(60); rect(0, 400 - scrollSpeed, 400, 500 - scrollSpeed); fill(50); rect(0, 500 - scrollSpeed, 400, 600 - scrollSpeed); fill(45); rect(0, 600 - scrollSpeed, 400, 700 - scrollSpeed); fill(50); rect(0, 700 - scrollSpeed, 400, 800 - scrollSpeed); fill(60); rect(0, 800 - scrollSpeed, 400, 900 - scrollSpeed); fill(70); rect(0, 900 - scrollSpeed, 400, 1000 - scrollSpeed); //Speed of Background Shapes scrollSpeed = scrollSpeed + 2; //Reset Background Shape Positions To Create Scrolling Effect if (scrollSpeed >= 600) { scrollSpeed = 0; } }