Open lspigariol opened 3 years ago
Buenos días Lucas, nos fueron de mucha utilidad los aportes. Respecto a la corrección:
Se elimino lógica repetida en mensaje configurarTeclasExtras() del segundo personaje
La pantalla de dificultad y pantalla de seleccion de jugadores ahora heredan de la clase PantallaSeleccion la logica en comun(ej:configurarTeclado()). Cada uno interpreta diferente el mensaje inicio para configurar la pantalla a su manera. Esto nos facilita la creacion de nuevas pantallas sin repetir codigo.
Optamos por que los comportamientos que no importa si se eligio uno o dos jugadores sean responsabilidad de Nivel, y delegamos la responsabilidad de dibujar y configurar las teclas de cada jugador a unJugador y dosJugadores. ej: el mensaje unJugador.inicio() agrega visuales de jugador1 y pregunta a jugador1 como es su configuracion de teclas.
La clase Visual ahora tiene los mensajes esAtravesable() y cobrarVida(), todos los visuales responden a su manera estos mensajes.
Los visuales sin comportamiento diferente(ej: flechas, dialogos, fondos) ahora son instanciados desde la subclase VisualUI(que hereda de Visual): Sus imagenes y posicion son pasados como parametros al instanciar mediante new VisualUI(image= "i.png", position= "game.at(x,y)).
Se dejo de utilizar game.addVisualIn(), a favor de game.addVisual(new VisualUI(image="i.png",position=game.at(x,y)) en visuals que no tenian comportamientos diferentes
La roca abandono su diccionario y ahora utiliza polimorfismo. Cada visual interactuado se encarga de informar a roca su mensaje. Tambien recuerda lo que fue dicho para no ser un loro
Los sonidos usan la biblioteca?funcion? nativa de Wollok
Se cambio la logica de movimiento basandose en https://github.com/uqbar-project/wollok/issues/1941 para evitar cuelgue luego de determinado tiempo.
Se aprovecho para simplificar el movimiento de personaje1
No me parecia apropiado que sea responsabilidad de nivel responder como personaje1 se debe mover, por ej: mediante el mensaje nivel.configurarTeclas(personaje1). Se cambio para que los personajes administren sus teclas a su manera, mediante personaje1.configurarTeclasExtras(), personaje2.configurarTeclasExtras(). Me parece mas apropiado porque se puede expandir sobre eso, a diferencia de tener parte del comportamiento de los personajes suelto por los niveles.
Gracias
Buenas chicos! Llego medio tarde al evento, pero coincido con Lucas, el trabajo está muy bien y se nota que han trabajado bastante (y se aprecia que sigan aplicando correcciones y mejoras!).
La verdad es que no tengo mucho más que agregar, hay una única porción de código que me parece que deberían mejorar: en el objeto escenarioDerrota
, tienen tres métodos que hacen CASI lo mismo. Pueden simplificar esos métodos en uno usando parámetros.
Saluda, Adrián.
Buenos dias Adrian, perdon por la demora de antemano!
Sobre escenarioDerrota
, simplificamos los 3 metodos en dibujarEstadistica(pestadistica)
.
Las 3 estadisticas se instancian de la misma clase Estadistica con diferentes atributos, es responsabilidad de estas responder a donde van, su imagen, contador. Estas son pasadas como parametros al metodo dibujarEstadistica(pestadistica)
method inicio(razon) {
self.dibujarEstadisticas(estadisticasZombie)
self.dibujarEstadisticas(estadisticasSalmones)
self.dibujarEstadisticas(estadisticasLimones)
... etc
}
Se utilizo el mensaje mostrarEstadis(listaDeEstadisticas)
. Con un forEach se pasa cada objeto como parametro a dibujarEstadistica(pestadistica).
Me parecio que el resultado es mas legible y facilita agregar nuevas estadisticas.
self.mostrarEstadis([estadisticasZombie,
estadisticasBayas,
estadisticasDias
])
method mostrarEstadis(lista) {
lista.forEach{ i => self.dibujarEstadisticas(i)}
}
dibujarRoca(razon)
y eventoFinDePartida()
, para que se distinga mejor la logica de cada uno, sea mas legible, y facil de modificar mas adelante.Gracias por todo, Saludos!
esta muy completa la implementacion del juego, trabajaron mucho. por eso mismo vale la pena hacer ajustes en el codigo, no para agregarle funcionalidad, pero sí para hacerlo mas "objetoso" les hice un commit con varios comentarios y pistas de codigo