Raf-rgb_Arkanoid-game/Arkanoid.pde
Jugador j;
Escenario e;
Pelota p;

PImage fondo;

int vidas, nivel;
boolean start; //Nos ayudar치 a iniciar el movimiento de la pelota

void setup() {
  size(500, 700);
  
  fondo = loadImage("background.png"); //Se carga la imagen del fondo (la imagen debe de estar en el mismo lugar que este archivo)
  
  vidas = 3; //Se le asigna al jugador un maximo de 3 vidas
  nivel = 1; //Se inicia el juego en el nivel 1
  start = false;
  
  j = new Jugador();
  e = new Escenario(nivel);
  p = new Pelota(j.getPosicion());
  
  e.crearEscenario();
}


void draw() {
  //Si el juegador aun no ha perdido la pelota y el aun hay bloques que eliminar, el juego sigue
  if(!p.validarMuerte() && e.getNumBlocks() != 0) {
    background(fondo); //Se coloca el fondo
    
    e.mostrar(); //Se muestran los bloques
    
    
    //Si se presiona una tecla, start cambia a verdadero
    if(keyPressed) {
      start = true;
    }
    
    j.mover();
    j.mostrar();
  
    p.mostrar();
    
    //Si se start es verdadero, la pelota comenzar치 a moverse
    if(start) {
      p.mover();
      p.validarBordes();
      p.rebotar(j.getPosicion(), j.getAncho(), j.getAlto());
      p.eliminarBlock(e.getBlocks(), e.getColores(),e.getAncho(), e.getAlto());
    }
       
    fill(255);   
    textAlign(CENTER);
    textSize(30);
    
    //Se muestra en pantalla el puntaje del jugador y sus vidas
    text("Score: " + p.getPuntos() + "   Life: " + vidas, width/2, 35);
    
  } 
  //Si ya no hay bloques por eliminar, se inicia el siguiente nivel
  else if(e.getNumBlocks() == 0) {
    background(0);
    fill(255);
    
    textAlign(CENTER);
    
    //Se muestra al usuario el nivel que acaba de completar
    text("NIVEL " + nivel, width/2, height/2);
    text("COMPLETED", width/2, height/2 + 50);
    
    //Si el usuario presiona una tecla, inicia el siguiente nivel
    if(keyPressed) {
      nivel++; //Aumenta el nivel
      reset(); //Se incia el juego con el nivel correspodiente
    }
     
  } 
  //Si el jugador ya no tiene vidas, el juego termina
  else if(vidas == 0) { 
    background(0);
    fill(255);
    textAlign(CENTER);
    
    //Se muestra al usuario el puntaje que alcanz칩 a lo largo del juego
    text("GAME OVER", width/2, height/2);
    
    text("Score " + p.getPuntos(), width/2, height/2 + 50);
    
    text("Press ENTER", width/2, height - 200);
    
    //Si el usuario presiona la tecla ENTER, el juego inicia desde 0
    if(keyCode == ENTER) {
      setup();
    }
  }
  /*Si ninguna de las condiciones anteriores se cumplen, 
  quiere decir que el jugador solo perdi칩 su pelota, asi que
  se le da una pelota nueva en su posicion actual*/
  else {
    p.setPosicion(j.getPosicion()); //Se posiciona la pelota en su base
    start = false;
    vidas--; //Cuando se pierde la pelota, se pierde una vida :(
  }
}

//Metodo para crear el siguiente nivel
void reset() {
  e = new Escenario(nivel);
  e.crearEscenario();
  j = new Jugador();
  p.setPosicion(j.getPosicion());
}
  
