Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
/*
Interactive Toy - Spaceship simulator 
 By Matthew Burchat 
 
 Started Project: 9/25/2018
 Last Updated: 9/29/2018
 
 Spaceship simulator
 
 Interactions: 
 
 Enemy spaceships spawn randomly 
 
 click mouse over the ship to destory it
 
 Course: Introduction to Media Computation
 Professor: Nicolas Hesler
 
 */

//Variables

//Turret x and y locations
float turretx = 150;
float turrety = 375;

//Random Enemy coordinates
float RandomEnemyX = 0;
float RandomEnemyY = 0;

//Score count
int intScore = 0;

void setup() {
  size(400, 400);
  frameRate(60);
  noCursor();

  // loop to find a random x coordinate 
  for (int i = 0; i < 1; i++) {
    RandomEnemyX = random(50, 350);
    println(RandomEnemyX);
  }
  // loop to find a random y coordinate
  for (int i = 0; i < 1; i++) {
    RandomEnemyY = random(150, 300);
    println(RandomEnemyY);
  }
}

void draw() {

  background(20);

  //println(mouseX, mouseY);

  drawDeathstar();
  drawPlanet();
  drawEnemy();
  drawTurret();
  drawReticle();
}

void drawReticle() {
  // Reticle 
  stroke(255, 0, 0);
  //middle
  line(mouseX, mouseY - 10, mouseX, mouseY - 30);

  //bottom
  line(mouseX, mouseY + 10, mouseX, mouseY + 30);

  //left
  line(mouseX - 10, mouseY, mouseX - 30, mouseY);

  //right
  line(mouseX + 10, mouseY, mouseX + 30, mouseY);

  //top left two lines
  line(mouseX - 40, mouseY - 15, mouseX - 40, mouseY - 35);
  line(mouseX - 40, mouseY - 35, mouseX - 15, mouseY - 35);

  //top right two lines
  line(mouseX + 40, mouseY - 15, mouseX + 40, mouseY - 35);
  line(mouseX + 40, mouseY - 35, mouseX + 15, mouseY - 35);

  //bottom left two lines
  line(mouseX - 40, mouseY + 15, mouseX - 40, mouseY + 35);
  line(mouseX - 40, mouseY + 35, mouseX - 15, mouseY + 35);

  //bottom right two lines
  line(mouseX + 40, mouseY + 15, mouseX + 40, mouseY + 35);
  line(mouseX + 40, mouseY + 35, mouseX + 15, mouseY + 35);
}

void drawDeathstar() {

  //base
  noStroke();
  fill(120);
  ellipseMode(CENTER);
  ellipse(50, 50, 125, 125);

  //grey plate 
  fill(180);
  ellipseMode(CORNERS);
  ellipse(43, -4, 88, 42);
}

void drawPlanet() {

  //Planet at bottom right
  fill(86, 113, 81);
  ellipseMode(CENTER);
  ellipse(420, 470, 400, 400);
}

void drawTurret() {

  fill(180);
  stroke(0);

  //left barrel
  rect(turretx + 30, turrety - 75, 5, 45);

  rect(turretx + 27, turrety - 80, 10, 10);

  //right barrel
  rect(turretx + 65, turrety - 75, 5, 45);

  rect(turretx + 63, turrety - 80, 10, 10);

  //base of turret
  rect(turretx, turrety, 100, 35);

  //head of turret
  quad(turretx + 25, turrety - 40, turretx + 75, turrety - 40, turretx + 100, turrety, turretx, turrety);
}

void drawEnemy() {

  //Int variables used to transfer the float variables to int so they can be used in the x and y of a shape
  int i1 = int(RandomEnemyX);
  int i2 = int(RandomEnemyY);

  //Used predetermined variables to test things
  //int i1 = 210;
  //int i2 = 210;

  //outer center circle
  fill(165, 166, 173);
  ellipse(i1, i2, 30, 30);

  //inner center circle
  fill(30, 22, 22);
  ellipse(i1, i2, 20, 20);

  //left wing and base connector
  fill(165, 166, 173);  
  rect(i1 - 25, i2 - 3, 10, 5);

  //right wing and base connector
  rect(i1 + 15.2, i2 - 3, 10, 5);

  //left wing
  rect(i1 - 28, i2 - 30, 5, 58);

  //ring wing
  rect(i1 + 24, i2 - 30, 5, 58);
}

void mousePressed() {

  int i1 = int(RandomEnemyX);
  int i2 = int(RandomEnemyY);

  intScore = intScore + 1;

  //Checks if mouse coordinates are over the enemy 
  if (mouseX >= i1 - 28 && mouseY >= i2 - 30) {
    if (mouseX <= i1 + 29 && mouseY <= i2 +28) {

      println("hit! Score:"+intScore);

      // loop to find a random x coordinate 
      for (int i = 0; i < 1; i++) {
        RandomEnemyX = random(50, 350);
        //println(RandomEnemyX);
      }
      // loop to find a random y coordinate
      for (int i = 0; i < 1; i++) {
        RandomEnemyY = random(150, 300);
        //println(RandomEnemyY);
      }

      drawDeathstar();
      drawPlanet();
      drawTurret();
      drawEnemy();
      drawReticle();
    }
  }
}