Game Design: A Million Second Chances

Where is Tori’s mental state right now? You may be asking yourself. Well, last night, I had a dream where everyone just asked me if I was okay and told me to drink water.

So I decided to make a game where you would always win. No matter what. Because that’s the kind of support I need in my life.

The game is pretty basic. A bunch of circles go through the screen, bouncing off the walls like a kid who’s just discovered coffee. Your mission is to click on each ball, thus, vanishing it. There is a counter in the top left corner so you can keep track of how many balls there are left. And there is also a timer running. The catch? You have no idea how long you have. I’ve set the time t be between 10 and 30 seconds, although once you reach that time, you can reset the timer.

I should say that for some of the code, I used Amy’s catching ball game code as a reference to understand how the class may work. But the rest I figured out using my understanding of how it all works.

Here’s the video:

And here’s the main code:

int totBall = 30;
float xPos;
float yPos;
float spd;
int counter = 30;
boolean timer = true;
int x = 1;
boolean time = false;




Ball Ball[] = new Ball[totBall];


boolean timeIsUp=false;
float timeTillOver;

void setup() {
  fullScreen();

  noStroke();

  for (int i = 0; i < totBall; i++) {
    Ball[i] = new Ball(5, 100, random(1, 5), random(1, 5));
  }
  timeTillOver=millis()+random(10000,30000);
}


void draw() {
  background(0);

  if (time == false) {
    for (int i = 0; i < totBall; i++) {
      Ball[i].run();
    }


    fill(0);
    rect(0, 0, width, 50); 

    fill(255);
    textSize(30);
    text("Number of Balls:", 20, 30);
    text(counter, 280, 30);
    text("You Have Limited Time", 1500, 30);



    textSize(80);
    if (counter <= 0) {
      text("YOU WIN!", width/2-150, height/2);
      timer = false;
    }
  } else {
    textSize(60);
    text("TIME IS UP", width/2-150, height/2);
    textSize(30);
    text("press SPACE to resume", width/2 - 165, height/2 + 60);
  }

  if (timer == true) {
    if (millis() >= timeTillOver) {
      time = true;
    }
  }
}

void keyPressed(){
 if(key==' '){
  time=false; 
  timeTillOver=millis()+random(10000,30000);
 }
 
//maybe make a hard mode where they all turn black? or increase in speed?  
}

and Ball Class

class Ball {
  float xPos, yPos, spdX, spdY, size1;
  color clr;
  boolean disable = false;
  
  
  Ball(float x, float y, float speedX, float speedY) {
    xPos = x;
    yPos = y;
    spdX = speedX;
    spdY = speedY;
    size1 = random(35, 55);
    clr = color(random(0, 255), random(0, 255), random(0, 255));
  }
  
  void display() {
    
    if (disable == false){
    
    fill(clr);
    if (mousePressed    
    && dist(mouseX, mouseY, xPos, yPos) <= (size1/2)
     ){
      counter -= 1;
      disable = true;
    
    }
    ellipse(xPos, yPos, size1, size1);
    
    }
  
  }
  
  void move() {
    yPos += spdY;
    if (yPos > height || yPos < 50){
      spdY *= -1;
    }
    
    xPos += spdX;
    if(xPos > width || xPos < 0){
      spdX *= -1;
    }
  }
  
 

  void run() {
    move();
    display();
  }

  
}

 

Leave a Reply