/*
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Copyright 2015 Jose A. Gonzalez Cervera
Copyright 2015 Juan A. Fernández Sánchez
*/
package butterflydevs.brainstudio.extras;
import java.util.List;
/**
* Clase extra que nos sirve para abstraer el concepto de Jugada.
* Así podemos usar información entre el juego y la base de datos de forma más simple,
* además la depuración gracias a la sobrecarga del método toString se hace más simple.
*
* Un objeto de tipo juagada podría tener más variables como el juego del que viene o el nivel,
* pero como solo es una abstracción para el intercambio de información de forma más fluida no es
* necesario.
*
*/
public class Jugada {
private int puntuacion; //Puntuación de la jugada (según el algoritmo de cálculo del juego en cuestión.
private int porcentajeCompletado; //Porcentaje del juego completado, tmb. según el alg. del juego.
private int id; //Identificador usado para la base de datos pare que toda jugada sea unívoca.
/**
* Constructor de la clase.
* Inicializa el objeto de tipo jugada con los datos puntuación y porcentaje.
* @param puntuacion Puntuación de la jugada.
* @param porcentajeCompletado Porcentaje completado en esa jugada en el juego en cuestión.
*/
public Jugada(int puntuacion, int porcentajeCompletado){
this.puntuacion=puntuacion;
this.porcentajeCompletado=porcentajeCompletado;
}
//Geters y Seters de la clase para las variables privadas
public int getPuntuacion(){
return puntuacion;
}
public void setPuntuacion(int nuevaPuntuacion){
puntuacion=nuevaPuntuacion;
}
public int getPorcentaje(){
return porcentajeCompletado;
}
public void setPorcetaje(int nuevoPorcentaje){
porcentajeCompletado=nuevoPorcentaje;
}
public void setId(int id){ this.id=id;}
public int getId(){return id;}
/**
* Sobrecarga del método toString para describir en formato texto un objeto del tipo Jugada.
* @return Una cadena de texto con la información necesaria y en el formato específico de un objeto.
*/
@Override
public String toString(){
return "[puntuacion="+puntuacion+", porcentaje="+porcentajeCompletado+"]\n";
}
/**
* Método estático que no tiene que ver con un objeto de tipo Jugada en concreto pero que los maneja
* y como la necesitaremos en más de un lugar lo hacemos de clase para poder llamarlo sin instanciar
* un objeto.
*
* Nos será útil cuando queramos cargar de entre una lista de jugadas recuperadas de la base de datos
* la más alta para colocarla en los distintos marcadores que tenemos por la aplicación.
*
* @param jugadas Lista de jugadas para trabajar con ella.
* @return La jugada más alta basándonos sólo en la PUNTUACIÓN.
*/
static public Jugada obtenMaximaJugada(List<Jugada> jugadas){
/**
* Con esta iniciación de variables si no existe jugada maxima porque aún no
* hay ninguna jugada se devuelve una jugada con 0, 0 para que pueda mostrar algo .
*/
int puntuacion = 0;
int porcentaje = 0;
for(Jugada jugada: jugadas)
//El parámetro decisivo es la puntuación.
if(jugada.getPuntuacion()>puntuacion) {
puntuacion = jugada.getPuntuacion();
porcentaje = jugada.getPorcentaje();
}
return new Jugada(puntuacion,porcentaje);
}
static public Jugada obtenMaximaJugada2(List<Jugada> jugadas){
/**
* Con esta iniciación de variables si no existe jugada maxima porque aún no
* hay ninguna jugada se devuelve una jugada con 0, 0 para que pueda mostrar algo .
*/
int puntuacion = 0;
int porcentaje = 0;
for(Jugada jugada: jugadas)
//El parámetro decisivo es la puntuación.
if(jugada.getPorcentaje()>porcentaje) {
puntuacion = jugada.getPuntuacion();
porcentaje = jugada.getPorcentaje();
}
return new Jugada(puntuacion,porcentaje);
}
}