Por Nacho Cabanes
Vamos allá...
Nuestra estructura de clases ha crecido desde la primera entrega. Ahora tenemos también un Enemigo y un Mapa. A su vez, el mapa contiene un Nivel, y tenemos tres tipos de niveles preparados:
Estos niveles por ahora sólo incluyen información de las casillas del fondo y del nombre. Todavía no incluyen información específica sobre qué enemigos habrá en ese nivel. Tampoco tenemos preparados todos los tipos de casillas que existían en el juego original, pero aun así podemos aproximar la apariencia del juego original. Por ejemplo, el nivel 10 original era así:
que se puede descomponer en estas casillas:
No hemos creado aún las imágenes para esas casillas, pero las podemos aproximar con lo que ya tenemos, así:
El fuente completo quedaría así
public class Nivel10 : Nivel { public Nivel10() { nombre = "The Endorian Forest" datosNivelIniciales[ 0] = "M LLLM LLLLLLLLLLM"; datosNivelIniciales[ 1] = "M V M M"; datosNivelIniciales[ 2] = "MLLLLLL M V LLLLM"; datosNivelIniciales[ 3] = "M M M"; datosNivelIniciales[ 4] = "M MLLLL M"; datosNivelIniciales[ 5] = "M LFFFFFFFM LLLLLLLLM"; datosNivelIniciales[ 6] = "MLLLL M M"; datosNivelIniciales[ 7] = "M MLLLLLLLFFF M"; datosNivelIniciales[ 8] = "MLLLLL M V M"; datosNivelIniciales[ 9] = "M LLLLLLLM LLM"; datosNivelIniciales[10] = "MLLLLFF MLLLLLLL M"; datosNivelIniciales[11] = "M M FFF M"; datosNivelIniciales[12] = "M MMMMMMMMM M"; datosNivelIniciales[13] = "MLLL PP LLLM"; datosNivelIniciales[14] = "M PP M"; datosNivelIniciales[15] = "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"; Reiniciar(); } } /* fin de la clase Nivel10 */
Que se vería:
Los cambios son pocos: en vez de crear 3 niveles, crearemos 20. De paso, podemos añadir algo que ya podía haber tenido la versión anterior: cuando se acabe una partida, volveremos al primer nivel, para recomenzar desde éste, y no desde el punto en el que se terminó.
El principio de la clase quedaría así:
public class Mapa { Nivel nivelActual; Nivel[] listaNiveles; const int MAX_NIVELES = 20; int numeroNivelActual = 0; // Constructor public Mapa(Partida p) { listaNiveles = new Nivel[MAX_NIVELES]; listaNiveles[0] = new Nivel01(); listaNiveles[1] = new Nivel02(); listaNiveles[2] = new Nivel03(); listaNiveles[3] = new Nivel04(); listaNiveles[4] = new Nivel05(); listaNiveles[5] = new Nivel06(); listaNiveles[6] = new Nivel07(); listaNiveles[7] = new Nivel08(); listaNiveles[8] = new Nivel09(); listaNiveles[9] = new Nivel10(); listaNiveles[10] = new Nivel11(); listaNiveles[11] = new Nivel12(); listaNiveles[12] = new Nivel13(); listaNiveles[13] = new Nivel14(); listaNiveles[14] = new Nivel15(); listaNiveles[15] = new Nivel16(); listaNiveles[16] = new Nivel17(); listaNiveles[17] = new Nivel18(); listaNiveles[18] = new Nivel19(); listaNiveles[19] = new Nivel20(); nivelActual = listaNiveles[ numeroNivelActual ]; } public void Reiniciar() { numeroNivelActual = 0; nivelActual = listaNiveles[ numeroNivelActual ]; nivelActual.Reiniciar(); } [...]
Y como es habitual, la versión 0.13 completa está en la página del proyecto en Google Code.