//Elite: 2D Toy //Fly about in the starting-off Elite system of LHS 3447 like the one I started in. // Control the ship using WASD //float for the spaceship float playerShipX = 0; float playerShipY = 0; //float for the planets and stars float planetX1 = 20; float planetX2 = 135; float planetX3 = 210; float planetX4 = 325; float planetX5 = 270; float planetX6 = 190; float star1X = 30; float star2X = 60; float star3X = 90; float star4X = 120; float star5X = 150; float star6X = 180; float star7X = 210; float star8X = 240; float star9X = 270; float starAX = 300; float starBX = 330; float starCX = 360; float starDX = 390; //float for the stars float speed = 3; //Key presses to move the ship boolean goleft = false; boolean goRight = false; boolean goUp = false; boolean goDown = false; boolean stop = false; //for the flame burners from the back of the ship boolean isClicked = false; int selected = (int)random(0, 4); int choicesR[] = {0, 69, 100, 0}; int choicesG[] = {0, 40, 100, 0}; int choicesB[] = {0, 16, 100, 0}; color flame = color(choicesR[selected], choicesG[selected], choicesB[selected]); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void setup(){ size(400, 400); frameRate = 30; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void draw() { drawBackground(); drawStars(); moveStars(); drawPlanets(); movePlanets(); moveShip(); drawShip(); } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //Draw the whole spaceship void drawShip(){ //Player ship ellipseMode(CENTER); stroke(224, 191, 0); fill(52); triangle(114 + playerShipX, 170 + playerShipY, 115 + playerShipX, 180 + playerShipY, 130 + playerShipX, 180 + playerShipY); fill(52); triangle(130 + playerShipX, 180 + playerShipY, 130 + playerShipX, 200 + playerShipY, 140 + playerShipX, 200 + playerShipY); stroke(224, 191, 0); fill(214, 30); ellipse(95 + playerShipX, 180 + playerShipY, 40, 50); fill(52); rect(45 + playerShipX, 155 + playerShipY, 50, 45); fill(52); rect(95 + playerShipX, 180 + playerShipY, 35, 20); fill(52); rect(40 + playerShipX, 175 + playerShipY, 5, 25); stroke(150); fill(64); triangle(50 + playerShipX, 140 + playerShipY, 50 + playerShipX, 180 + playerShipY, 110 + playerShipX, 200 + playerShipY); fill(64); triangle(50 + playerShipX, 180 + playerShipY, 50 + playerShipX, 230 + playerShipY, 110 + playerShipX, 200 + playerShipY); //flame burners from the back of the ship noStroke(); fill(211, 109, 0, 200); triangle(40 + playerShipX, 175 + playerShipY, 20 + playerShipX, 187.5 + playerShipY, 40 + playerShipX, 200 + playerShipY); fill(211, 177, 0, 200); triangle(40 + playerShipX, 180 + playerShipY, 30 + playerShipX, 187.5 + playerShipY, 40 + playerShipX, 195 + playerShipY); if (isClicked == true) { mousePressed(); } else { isClicked = false; } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void moveShip(){ // Use the WASD to control the ship; up=W, left=A, down=S, and right=D if (playerShipX >= -40) { if ( goleft == true) { playerShipX= playerShipX -speed; } } if (playerShipX <= 255) { if ( goRight == true) { playerShipX= playerShipX +speed; } } if (playerShipY <= 200 ) { if ( goUp == true) { playerShipY= playerShipY +speed; } } if (playerShipY >= -160 ) { if ( goDown == true) { playerShipY= playerShipY -speed; } } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // This is to draw the space background void drawBackground() { background(0); } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void drawStars() { noStroke(); fill(255); rect(star1X, 60, 2, 2); rect(star1X, 360, 2, 2); rect(star2X, 140, 2, 2); rect(star2X, 300, 2, 2); rect(star3X, 80, 2, 2); rect(star3X, 180, 2, 2); rect(star4X, 20, 2, 2); rect(star4X, 240, 2, 2); rect(star5X, 120, 2, 2); rect(star5X, 340, 2, 2); rect(star6X, 160, 2, 2); rect(star6X, 200, 2, 2); rect(star7X, 60, 2, 2); rect(star7X, 260, 2, 2); rect(star8X, 140, 2, 2); rect(star8X, 340, 2, 2); rect(star9X, 80, 2, 2); rect(star9X, 180, 2, 2); rect(starAX, 20, 2, 2); rect(starAX, 240, 2, 2); rect(starBX, 120, 2, 2); rect(starBX, 380, 2, 2); rect(starCX, 160, 2, 2); rect(starCX, 220, 2, 2); rect(starDX, 60, 2, 2); rect(starDX, 300, 2, 2); } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void moveStars() { star1X = star1X - 1; star2X = star2X - 1; star3X = star3X - 1; star4X = star4X - 1; star5X = star5X - 1; star6X = star6X - 1; star7X = star7X - 1; star8X = star8X - 1; star9X = star9X - 1; starAX = starAX - 1; starBX = starBX - 1; starCX = starCX - 1; starDX = starDX - 1; //The stars will reset once they reach the left edge if (star1X == 0) { star1X = width; } if (star2X == 0) { star2X = width; } if (star3X == 0) { star3X = width; } if (star4X == 0) { star4X = width; } if (star5X == 0) { star5X = width; } if (star6X == 0) { star6X = width; } if (star7X == 0) { star7X = width; } if (star8X == 0) { star8X = width; } if (star9X == 0) { star9X = width; } if (starAX == 0) { starAX = width; } if (starBX == 0) { starBX = width; } if (starCX == 0) { starCX = width; } if (starDX == 0) { starDX = width; } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void drawPlanets() { // the star fill(255, 124, 0); ellipse(200, -40, 260, 260); fill(255, 200, 0, 150); ellipse(200, -40, 300, 300); // the planets noStroke(); fill(100, 81, 40); ellipse(planetX1, 10, 15, 15); fill(80, 61, 19); ellipse(planetX2, 20, 19, 19); fill(100, 40, 4); ellipse(planetX3, 50, 29, 29); fill(8, 14, 52); ellipse(planetX4, 140, 35, 35); fill(52, 29, 6); ellipse(planetX5, 190, 40, 40); fill(25, 0, 41); ellipse(planetX6, 280, 100, 100); } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void movePlanets() { planetX1 = planetX1 - 2; planetX2 = planetX2 - 3.5; planetX3 = planetX3 - 5; planetX4 = planetX4 - 6; planetX5 = planetX5 - 7; planetX6 = planetX6 - 9; //Like with the stars, the planets reset once they get to left, they repeat if (planetX1 < -5) { planetX1 = width; } if (planetX2 < -15) { planetX2 = width; } if (planetX3 < -20) { planetX3 = width; } if (planetX4 < -25) { planetX4 = width; } if (planetX5 < -30) { planetX5 = width; } if (planetX6 < -38) { planetX6 = width; } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // IMPORTANT NOTE!!!! REPEAT, IMPORTANT NOTE!!!! 'W' is to fly up as 'S' is to fly down. For some reason, it goes in reverse and causes problems. void keyPressed() { if (key == 'a') { goleft = true; } if (key == 's') { goUp = true; } if (key == 'w') { goDown = true; } if (key == 'd') { goRight = true; } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void keyReleased () { if (key == 'a') { goleft = false; } if (key == 's') { goUp = false; } if (key == 'w') { goDown = false; } if (key == 'd') { goRight = false; } if (playerShipX >= 450) { speed = 0; } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Press the mouse to activate the ship's burners void mousePressed () { int selected = (int)random(0, 4); int choicesR[] = {0, 69, 100, 0}; int choicesG[] = {0, 40, 100, 0}; int choicesB[] = {0, 16, 100, 0}; color flame = color(choicesR[selected], choicesG[selected], choicesB[selected], 190); isClicked = true; fill(flame, 220); triangle(40 + playerShipX, 175 + playerShipY, 20 + playerShipX, 187.5 + playerShipY, 40 + playerShipX, 200 + playerShipY); triangle(40 + playerShipX, 180 + playerShipY, 30 + playerShipX, 187.5 + playerShipY, 40 + playerShipX, 195 + playerShipY); } void mouseReleased() { isClicked = false; } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Pres the ESC key to exit the program void endProgram() { if (keyCode == 27) { stop = true; } }