/////////////GLOBAL VARIABLES //for simplicity, I made these variables based off the mouse co-ordinates float mX = mouseX; float mY = mouseY; //Sets starting gravity for all three meteors, saves time float gravity = 0.0; //Sets starting X position for meteors float x = 200; //Independent variables for each meteor float gravity1 = gravity; float x1 = x; float gravity2 = gravity; float x2 = x; float gravity3 = gravity; float x3 = x; float speed = 1.0; int score = 0; int scoreCount = 0; int meteorBonus = 10; int lifeCount= 3; boolean gameOver= false; ////////////////SETUP void setup () { size (400, 400); background(0); //Randomly generated city for (int i =0; i<20; i++) { float buildHght = random(20, 80); float buildCol = random(50, 200); fill(buildCol); rectMode(CENTER); rect(10+20*i, 390, 20, buildHght); fill(255); rect(random(11, 16)+20*i, random(390-buildHght/3, 388), 4, 4); rect(random(4, 16)+20*i, random(392, 395), 4, 4); rect(random(5, 9)+20*i, random(390-buildHght/3, 388), 4, 4); } } //////////////////DRAW void draw () { //once the game is over nothing else will run in background if (gameOver == false) { mX = mouseX; mY = mouseY; //acceleration and Speed cap speed = (1000+frameCount)/1000; speed = constrain(speed, 1, 5); //The players score goes up by 1 every second scoreCount ++ ; if (scoreCount >= frameRate) { score = score +1; scoreCount = 0; } //psuedo background noStroke(); fill(0); rect(200, 180, 400, 360); rect(200, 380, 40, 40); //Randomly generated Star backgrond starBackground(); //Meteor Shower meteor1(220, 385); meteor2(100, 300); meteor3(15, 180); //Big Gun base fill(180); stroke(100); strokeWeight(5); ellipse(200, 380, 40, 40); line(200, 380, 180 + mX/10, 350); //Laser Beam Function laserBeam(); fill(180); stroke(100); strokeWeight(2); } //Life system and game over if (lifeCount >= 3) { ellipse(10, 10, 10, 10); ellipse(20, 10, 10, 10); ellipse(30, 10, 10, 10); } else if (lifeCount >= 2) { ellipse(10, 10, 10, 10); ellipse(20, 10, 10, 10); } else if (lifeCount >= 1) { ellipse(10, 10, 10, 10); } else { background(200, 0, 0); fill(240); stroke(200); strokeWeight(20); line(100, 100, 300, 300); line(100, 300, 300, 100); ellipse(200, 200, 200, 200); fill(0); noStroke(); ellipse(width/2-50, 170, 50, 70); ellipse(width/2+50, 170, 50, 70); gameOver= true; } //Displays score and difficulty println ("WAVE: " + speed + "!"); println ("Score: " + score + "!"); } ////////////////////LASER! void laserBeam() { //Laser beam if (mousePressed) { if (mY > 350) { mY=350; } noStroke(); fill(255, 0, 0); ellipse(180 + mX/10, 350, 8, 8); stroke(255, 0, 0); strokeWeight(3); line(180 + mX/10, 350, mX, mY); } } ///////////////EXPLOSIONS! void explosion () { noStroke(); fill(255, 0, 0); ellipse(mX, mY, 12, 12); } //////////////////////////////// METEORS //////////////////////////////Meteor 1 void meteor1 (float rMin, float rMax) { boolean existence = true; float y = -20 + gravity1; float metScale = 30; float xMin = x1 - metScale/2; float xMax = x1 + metScale/2; float yMin = y - metScale/2; float yMax = y + metScale/2; if (existence == true) { fill(200, 25, 25); stroke(255, 0, 0); strokeWeight(1); ellipse(x1, y, metScale, metScale); } if ((gravity1 > 410)|| ((mousePressed) && (xMin < mX) &&(mX < xMax) && (yMin < mY)&&(mY < yMax))) { metScale = 80; noStroke(); fill(0); ellipse(x1, y, metScale, metScale); } if ((mousePressed) && (xMin < mX) &&(mX < xMax) && (yMin < mY)&&(mY < yMax)) { score = score +meteorBonus; existence = false; explosion (); gravity1 = 0; x1 = random(rMin, rMax); } if (gravity1 > 420) { gravity1 = 0; x1 = random(rMin, rMax); lifeCount --; } gravity1 = gravity1 + speed; } ///////////////////////////////////Meteor 2 void meteor2 (float rMin, float rMax) { boolean existence = true; // float mX = mouseX; // float mY = mouseY; float y = -20 + gravity2; float metScale = 30; float xMin = x2 - metScale/2; float xMax = x2 + metScale/2; float yMin = y - metScale/2; float yMax = y + metScale/2; if (existence == true) { fill(200, 25, 25); stroke(255, 0, 0); strokeWeight(1); ellipse(x2, y, metScale, metScale); } if ((gravity2 > 410)|| ((mousePressed) && (xMin < mX) &&(mX < xMax) && (yMin < mY)&&(mY < yMax))) { metScale = 80; noStroke(); fill(0); ellipse(x2, y, metScale, metScale); } if ((mousePressed) && (xMin < mX) &&(mX < xMax) && (yMin < mY)&&(mY < yMax)) { score = score +meteorBonus; existence = false; explosion (); gravity2 = 0; x2 = random(rMin, rMax); } if (gravity2 > 420) { gravity2 = 0; x2 = random(rMin, rMax); lifeCount --; } gravity2 = gravity2 +speed; // println("Speed2 " + speed); //println("existence" + existence); } /////////////////////////////////////// Meteor 3 void meteor3 (float rMin, float rMax) { boolean existence = true; float y = -20 + gravity3; float metScale = 30; float xMin = x3 - metScale/2; float xMax = x3 + metScale/2; float yMin = y - metScale/2; float yMax = y + metScale/2; if (existence == true) { fill(200, 25, 25); stroke(255, 0, 0); strokeWeight(1); ellipse(x3, y, metScale, metScale); } if ((gravity3 > 410)|| ((mousePressed) && (xMin < mX) &&(mX < xMax) && (yMin < mY)&&(mY < yMax))) { explosion (); metScale = 80; noStroke(); fill(0); ellipse(x3, y, metScale, metScale); } if ((mousePressed) && (xMin < mX) &&(mX < xMax) && (yMin < mY)&&(mY < yMax)) { score = score +meteorBonus; existence = false; gravity3 = 0; x3 = random(rMin, rMax); } if (gravity3 > 420) { gravity3 = 0; x3 = random(rMin, rMax); lifeCount --; } gravity3 = gravity3 + speed; //println("Speed3 " + speed); } ////////////////////////////////////STARS ////////GLOBAL VARIABLES FOR STARS //Random generated Star backgrond float starXMax = 190; float starYMax = 170; float starXMin = 5; float starYMin = 5; int starCount = int (frameRate*5); float starX1 = random(starXMin, starXMax); float starY1 = random(starYMin, starYMax); float starX2 = random(starXMin, starXMax); float starY2 = random(starYMin, starYMax); float starX3 = random(starXMin, starXMax); float starY3 = random(starYMin, starYMax); float starX4 = random(starXMin, starXMax); float starY4 = random(starYMin, starYMax); float starX5 = random(starXMin, starXMax); float starY5 = random(starYMin, starYMax); float starX6 = random(starXMin, starXMax); float starY6 = random(starYMin, starYMax); float starX7 = random(starXMin, starXMax); float starY7 = random(starYMin, starYMax); float starX8 = random(starXMin, starXMax); float starY8 = random(starYMin, starYMax); float starX9 = random(starXMin, starXMax); float starY9 = random(starYMin, starYMax); float starX10 = random(starXMin, starXMax); float starY10 = random(starYMin, starYMax); float starX11 = random(starXMin, starXMax); float starY11 = random(starYMin, starYMax); float starX12 = random(starXMin, starXMax); float starY12 = random(starYMin, starYMax); float starX13 = random(starXMin, starXMax); float starY13 = random(starYMin, starYMax); float starX14 = random(starXMin, starXMax); float starY14 = random(starYMin, starYMax); float starX15 = random(starXMin, starXMax); float starY15 = random(starYMin, starYMax); float starX16 = random(starXMin, starXMax); float starY16 = random(starYMin, starYMax); float starX17 = random(starXMin, starXMax); float starY17 = random(starYMin, starYMax); float starX18 = random(starXMin, starXMax); float starY18 = random(starYMin, starYMax); float starX19 = random(starXMin, starXMax); float starY19 = random(starYMin, starYMax); float starX20 = random(starXMin, starXMax); float starY20 = random(starYMin, starYMax); /////////////////Random generated Star backgrond void starBackground() { //Changes background based on score, flicker, changes colors, or plain white if ((score >=250 ) && (score < 500)) { fill(105+abs(150* sin(frameCount/20.0))); } else if (score > 500) { fill(abs(255* sin(frameCount/60.0)), abs(255* sin(frameCount/30.0)), abs(255* sin(frameCount/10.0)), 105+abs(150* sin(frameCount/20.0))); } else { fill(255); } ////Draws a total of 20 stars in the in the bottom right corner // StarX Positive, StarY Positive rect(200 + starX1, 180 + starY1, 2, 2); rect(200 + starX2, 180 + starY2, 2, 2); rect(200 + starX3, 180 + starY3, 2, 2); rect(200 + starX4, 180 + starY4, 2, 2); rect(200 + starX5, 180 + starY5, 2, 2); rect(200 + starX6, 180 + starY6, 2, 2); rect(200 + starX7, 180 + starY7, 2, 2); rect(200 + starX8, 180 + starY8, 2, 2); rect(200 + starX9, 180 + starY9, 2, 2); rect(200 + starX10, 180 + starY10, 2, 2); rect(200 + starX11, 180 + starY1, 2, 2); rect(200 + starX12, 180 + starY2, 2, 2); rect(200 + starX13, 180 + starY3, 2, 2); rect(200 + starX14, 180 + starY4, 2, 2); rect(200 + starX15, 180 + starY5, 2, 2); rect(200 + starX16, 180 + starY6, 2, 2); rect(200 + starX17, 180 + starY7, 2, 2); rect(200 + starX18, 180 + starY8, 2, 2); rect(200 + starX19, 180 + starY9, 2, 2); rect(200 + starX20, 180 + starY10, 2, 2); //Repeat in bottom left // StarX Negative, StarY Positive starX1 = starX1 * -1; starX2 = starX2 * -1; starX3 = starX3 * -1; starX4 = starX4 * -1; starX5 = starX5 * -1; starX6 = starX6 * -1; starX7 = starX7 * -1; starX8 = starX8 * -1; starX9 = starX9 * -1; starX10 = starX10 * -1; starX11 = starX11 * -1; starX12 = starX12 * -1; starX13 = starX13 * -1; starX14 = starX14 * -1; starX15 = starX15 * -1; starX16 = starX16 * -1; starX17 = starX17 * -1; starX18 = starX18 * -1; starX19 = starX19 * -1; starX20 = starX20 * -1; rect(200 + starX1, 180 + starY1, 2, 2); rect(200 + starX2, 180 + starY2, 2, 2); rect(200 + starX3, 180 + starY3, 2, 2); rect(200 + starX4, 180 + starY4, 2, 2); rect(200 + starX5, 180 + starY5, 2, 2); rect(200 + starX6, 180 + starY6, 2, 2); rect(200 + starX7, 180 + starY7, 2, 2); rect(200 + starX8, 180 + starY8, 2, 2); rect(200 + starX9, 180 + starY9, 2, 2); rect(200 + starX10, 180 + starY10, 2, 2); rect(200 + starX11, 180 + starY1, 2, 2); rect(200 + starX12, 180 + starY2, 2, 2); rect(200 + starX13, 180 + starY3, 2, 2); rect(200 + starX14, 180 + starY4, 2, 2); rect(200 + starX15, 180 + starY5, 2, 2); rect(200 + starX16, 180 + starY6, 2, 2); rect(200 + starX17, 180 + starY7, 2, 2); rect(200 + starX18, 180 + starY8, 2, 2); rect(200 + starX19, 180 + starY9, 2, 2); rect(200 + starX20, 180 + starY10, 2, 2); //repeat in top left // StarX Negative, StarY Negative starY1 = starY1 * -1; starY2 = starY2 * -1; starY3 = starY3 * -1; starY4 = starY4 * -1; starY5 = starY5 * -1; starY6 = starY6 * -1; starY7 = starY7 * -1; starY8 = starY8 * -1; starY9 = starY9 * -1; starY10 = starY10 * -1; starY11 = starY11 * -1; starY12 = starY12 * -1; starY13 = starY13 * -1; starY14 = starY14 * -1; starY15 = starY15 * -1; starY16 = starY16 * -1; starY17 = starY17 * -1; starY18 = starY18 * -1; starY19 = starY19 * -1; starY20 = starY20 * -1; rect(200 + starX1, 180 + starY1, 2, 2); rect(200 + starX2, 180 + starY2, 2, 2); rect(200 + starX3, 180 + starY3, 2, 2); rect(200 + starX4, 180 + starY4, 2, 2); rect(200 + starX5, 180 + starY5, 2, 2); rect(200 + starX6, 180 + starY6, 2, 2); rect(200 + starX7, 180 + starY7, 2, 2); rect(200 + starX8, 180 + starY8, 2, 2); rect(200 + starX9, 180 + starY9, 2, 2); rect(200 + starX10, 180 + starY10, 2, 2); rect(200 + starX11, 180 + starY1, 2, 2); rect(200 + starX12, 180 + starY2, 2, 2); rect(200 + starX13, 180 + starY3, 2, 2); rect(200 + starX14, 180 + starY4, 2, 2); rect(200 + starX15, 180 + starY5, 2, 2); rect(200 + starX16, 180 + starY6, 2, 2); rect(200 + starX17, 180 + starY7, 2, 2); rect(200 + starX18, 180 + starY8, 2, 2); rect(200 + starX19, 180 + starY9, 2, 2); rect(200 + starX20, 180 + starY10, 2, 2); //Repeat in top right // StarX Positive, StarY Negative starX1 = starX1 * -1; starX2 = starX2 * -1; starX3 = starX3 * -1; starX4 = starX4 * -1; starX5 = starX5 * -1; starX6 = starX6 * -1; starX7 = starX7 * -1; starX8 = starX8 * -1; starX9 = starX9 * -1; starX10 = starX10 * -1; starX11 = starX11 * -1; starX12 = starX12 * -1; starX13 = starX13 * -1; starX14 = starX14 * -1; starX15 = starX15 * -1; starX16 = starX16 * -1; starX17 = starX17 * -1; starX18 = starX18 * -1; starX19 = starX19 * -1; starX20 = starX20 * -1; rect(200 + starX1, 180 + starY1, 2, 2); rect(200 + starX2, 180 + starY2, 2, 2); rect(200 + starX3, 180 + starY3, 2, 2); rect(200 + starX4, 180 + starY4, 2, 2); rect(200 + starX5, 180 + starY5, 2, 2); rect(200 + starX6, 180 + starY6, 2, 2); rect(200 + starX7, 180 + starY7, 2, 2); rect(200 + starX8, 180 + starY8, 2, 2); rect(200 + starX9, 180 + starY9, 2, 2); rect(200 + starX10, 180 + starY10, 2, 2); rect(200 + starX11, 180 + starY1, 2, 2); rect(200 + starX12, 180 + starY2, 2, 2); rect(200 + starX13, 180 + starY3, 2, 2); rect(200 + starX14, 180 + starY4, 2, 2); rect(200 + starX15, 180 + starY5, 2, 2); rect(200 + starX16, 180 + starY6, 2, 2); rect(200 + starX17, 180 + starY7, 2, 2); rect(200 + starX18, 180 + starY8, 2, 2); rect(200 + starX19, 180 + starY9, 2, 2); rect(200 + starX20, 180 + starY10, 2, 2); //If the player reaches a score above 750, then the stars change positions every 5 secs if (score > 750) { starCount ++; if (starCount >= frameRate*5) { starCount =0; starX1 = random(starXMin, starXMax); starY1 = random(starYMin, starYMax); starX2 = random(starXMin, starXMax); starY2 = random(starYMin, starYMax); starX3 = random(starXMin, starXMax); starY3 = random(starYMin, starYMax); starX4 = random(starXMin, starXMax); starY4 = random(starYMin, starYMax); starX5 = random(starXMin, starXMax); starY5 = random(starYMin, starYMax); starX6 = random(starXMin, starXMax); starY6 = random(starYMin, starYMax); starX7 = random(starXMin, starXMax); starY7 = random(starYMin, starYMax); starX8 = random(starXMin, starXMax); starY8 = random(starYMin, starYMax); starX9 = random(starXMin, starXMax); starY9 = random(starYMin, starYMax); starX10 = random(starXMin, starXMax); starY10 = random(starYMin, starYMax); starX11 = random(starXMin, starXMax); starY11 = random(starYMin, starYMax); starX12 = random(starXMin, starXMax); starY12 = random(starYMin, starYMax); starX13 = random(starXMin, starXMax); starY13 = random(starYMin, starYMax); starX14 = random(starXMin, starXMax); starY14 = random(starYMin, starYMax); starX15 = random(starXMin, starXMax); starY15 = random(starYMin, starYMax); starX16 = random(starXMin, starXMax); starY16 = random(starYMin, starYMax); starX17 = random(starXMin, starXMax); starY17 = random(starYMin, starYMax); starX18 = random(starXMin, starXMax); starY18 = random(starYMin, starYMax); starX19 = random(starXMin, starXMax); starY19 = random(starYMin, starYMax); starX20 = random(starXMin, starXMax); starY20 = random(starYMin, starYMax); } } }