Don’t touch the wall

I made a maze game where you have to reach the goal without touching a wall.

Screen Shot 2015-11-02 at 2.19.15 PM

Here is the code for this game

void setup() {
  size(600, 400);
  background(40, 130, 0);
  fill(50, 100, 0);
  noStroke();
  ellipseMode(CENTER);
  map();
}

void draw() {
  drawline();
  dontGoOver();
  goal();
  reset();
  
}

void map() { // make a map
  textSize(13);
  text("START", 10, 30);
  text("HERE", 10, 50);
  rect(60, 0, 20, 340, 5);  
  rect(130, 50, 20, 350, 5);
  rect(190, 0, 20, 360, 5);
  rect(240, 60, 20, 340, 5);
  rect(280, 0, 20, 380, 5);
  rect(310, 80, 20, 320, 5);
  rect(310, 80, 100, 20, 5);
  rect(390, 0, 20, 100, 5);
  fill(150, 30, 160);
  rectMode(CENTER);
  rect(350, 40, 40, 40);
}

void drawline() { // when mousepressed, draw a line
  stroke(255);
  if (mousePressed) {
  line(pmouseX, pmouseY, mouseX, mouseY); 
  }
}

void dontGoOver() { //show "again" when they cross over

  if(mousePressed) {
    if(mouseX > 60 && mouseX < 80){
      if(mouseY >0 && mouseY < 340){
        background(255);
                textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
  
  if(mousePressed) {
    if(mouseX > 130 && mouseX < 150){
      if(mouseY >50 && mouseY < 400){
        background(255);
                textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
  
  if(mousePressed) {
    if(mouseX > 190 && mouseX < 210){
      if(mouseY >0 && mouseY < 360){
        background(255);
                textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
  
  if(mousePressed) {
    if(mouseX > 240 && mouseX < 210){
      if(mouseY > 60 && mouseY < 400){
        background(255);
                textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
  
  if(mousePressed) {
    if(mouseX > 280 && mouseX < 300){
      if(mouseY > 0 && mouseY < 380){
        background(255);
                textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
  
  if(mousePressed) {
    if(mouseX > 310 && mouseX < 330){
      if(mouseY > 80 && mouseY < 400){
        background(255);
                textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
  
  if(mousePressed) {
    if(mouseX > 310 && mouseX < 550){
      if(mouseY > 80 && mouseY < 100){
        background(255);
                textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
  
  if(mousePressed) {
    if(mouseX > 500 && mouseX < 550){
      if(mouseY > 80 && mouseY < 350){
        background(255);
                textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
  
  if(mousePressed) {
    if(mouseX > 390 && mouseX < 550){
      if(mouseY > 320 && mouseY < 350){
        background(255);
                textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
   
  if(mousePressed) {
    if(mouseX > 390 && mouseX < 410){
      if(mouseY > 150 && mouseY < 350){
        background(255);
        textSize(32);
        text("AGAIN", 250, 100); 
        fill(0, 102, 153);
        text("AGAIN", 250, 200);
        fill(0, 102, 153, 51);
        text("AGAIN", 250, 300);
      }
    }
  }
    
  if(mousePressed) {
    if(mouseX > 330 && mouseX < 370){
      if(mouseY > 20 && mouseY < 60){
        background(255);
        textSize(20);
        text("You thought this was the goal? Not quite, bro.", 70, 100); 
        fill(0, 102, 153);
        text("You thought this was the goal? Not quite, bro.", 70, 200);
        fill(0, 102, 153, 51);
        text("You thought this was the goal? Not quite, bro.", 70, 300);
      }
    }
  }
  
}

void goal() { // when the player reaches to the goal, show "GOOD JOB"

  if(mousePressed) {
    if(mouseX > 420 && mouseX < 490){
      if(mouseY > 250 && mouseY < 350){
        background(0, 255, 0);
        textSize(32);
        text("GOOD JOB", 200, 100); 
        fill(0, 102, 153);
        text("GOOD JOB", 200, 200);
        fill(0, 102, 153, 51);
        text("GOOD JOB", 200, 300);
      }
    }
  }

}


void reset(){ // click spacebar to restart
  if(keyPressed) {
    rectMode(CORNER);
    background(40, 130, 0);
    fill(50, 100, 0);
    noStroke();
    ellipseMode(CENTER);
    map();
  }
}

The problem with this coding is, it doesn’t restrict the player to start from the left top so basically he can cheat. I guess I can do something like: if mouse pressed at left top, start the game, else, game over. i tried to do that but i couldn’t make the code that works so it’s left as it is.

I wanted also to make it look more appealing, but i couldn’t. I guess there is a limit in how good looking you can make with just colours. I have to either use more colors or use some textures (like bricks or metal).

 

Leave a Reply