From b9af00fed54aeff7f2f0f977e7a904fe9f9ea0f8 Mon Sep 17 00:00:00 2001 From: OrianaIsabel Date: Sun, 10 Nov 2024 13:32:51 -0300 Subject: [PATCH] Funcio niveles y escenario --- juego.wlk | 9 ++-- menus.wlk | 3 +- movimiento.wlk | 3 +- muros.wlk | 6 +-- niveles.wlk | 124 ++++++++++++++++++++++++++++++++++++++++++++++++- puntos.wlk | 5 +- 6 files changed, 137 insertions(+), 13 deletions(-) diff --git a/juego.wlk b/juego.wlk index 7e58474..9419f7f 100644 --- a/juego.wlk +++ b/juego.wlk @@ -4,6 +4,7 @@ import muros.* import enemigos.* import puntos.* import miscelaneos.* +import niveles.* object juego{ //DIBUJO DE LOS ELEMENTOS DEL MUNDO @@ -12,9 +13,9 @@ object juego{ //dibujar fondo game.addVisual(fondoJuego) //dibujar lateral superior - escenarioNivel.generarLateralSuperior() + niveles.generarLateralSuperior() //dibujar muros - escenarioNivel.generarEscenario() + niveles.generarEscenario() //dibujar enemigo lineaEnemiga.activar() //dibujar jugador @@ -25,7 +26,7 @@ object juego{ //dibujar puntos game.addVisual(points) //dibujar superior - escenarioNivel.generarBloquesSuperiores() + niveles.generarBloquesSuperiores() //reproducir la musica correspondiente musicaDeFondo.play() } @@ -36,7 +37,7 @@ object juego{ lineaEnemiga.enemigo().limpiarEnemigos() game.removeVisual(fondoJuego) game.removeVisual(points) - escenarioNivel.limpiarEscenario() + niveles.limpiarEscenario() musicaDeFondo.stop() } diff --git a/menus.wlk b/menus.wlk index 8285a4e..53a9b9c 100644 --- a/menus.wlk +++ b/menus.wlk @@ -2,6 +2,7 @@ import mainExample.* import muros.* import miscelaneos.* import juego.* +import niveles.* class Menus{ const add_1 @@ -55,7 +56,7 @@ object menuNivel inherits Menus(add_1 = menuNiveles, add_2 = seleccionNivel, can if(sincronizadorDePantallas.pantallaActual() == tipoDeMenu){ sincronizadorDePantallas.cambiarPantalla("jugar") const nivel = (add_2.position().x()-1)/2 - escenarioNivel.nivel(nivel) + niveles.nivel(nivel) self.limpiarPantalla() juego.jugar() } diff --git a/movimiento.wlk b/movimiento.wlk index 5f80ed0..7430496 100644 --- a/movimiento.wlk +++ b/movimiento.wlk @@ -1,5 +1,6 @@ import muros.* import miscelaneos.* +import niveles.* class FiguraConMovimiento inherits ObjetoVisible{ var position @@ -7,7 +8,7 @@ class FiguraConMovimiento inherits ObjetoVisible{ method equisCorrecta(equis) = equis >= 1 && equis <= (game.width()-2) method yeCorrecta(ye) = ye >= 1 && ye <= (game.height()-2) method position(posicion){ - if(self.equisCorrecta(posicion.x()) && self.yeCorrecta(posicion.y()) && !escenarioNivel.mismaPosicion(posicion)){ + if(self.equisCorrecta(posicion.x()) && self.yeCorrecta(posicion.y()) && !niveles.mismaPosicion(posicion)){ position = game.at(posicion.x(), posicion.y()) } } diff --git a/muros.wlk b/muros.wlk index 0affd60..b04ccee 100644 --- a/muros.wlk +++ b/muros.wlk @@ -7,7 +7,7 @@ class Bloque inherits ObjetoVisible{ method ubicarYDibujar(x,y){ self.position(game.at(x,y)) game.addVisual(self) - escenarioNivel.enlistarBloque(self) + niveles.enlistarBloque(self) } method quitarBloque() = game.removeVisual(self) @@ -31,7 +31,7 @@ object visual{ object visualSuperior{ var property valor = "b_fiesta_sup.png" } - +/* object escenarioNivel{ const property listaPosiciones = [] const property listaPuntos = [] @@ -69,4 +69,4 @@ object escenarioNivel{ method quitarObjeto(cosa) = listaPuntos.remove(cosa) method sacarBloqueDeLista(block) = listaBloques.remove(block) -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/niveles.wlk b/niveles.wlk index eb5592c..c1a4b67 100644 --- a/niveles.wlk +++ b/niveles.wlk @@ -1,7 +1,95 @@ import miscelaneos.* import muros.* +/* +class Nivel { + const matrizPosiciones + method entregarFila(fila) = matrizPosiciones.get(fila) + const property listaPosiciones = [] + const property listaPuntos = [] + const property listaBloques = [] + method generarEscenario(){ + (16 .. 0).forEach({y => const listaAux = self.entregarFila(17-y) + (0..17).forEach({x => const aux = listaAux.get(x) + aux.decodificar(x, y)}) + }) + } + method generarBloquesSuperiores(){//para crear la ilusion de que el jugador está detrás del bloque + (16 .. 0).forEach({y => const listaAux = self.entregarFila(17-y) + (0..17).forEach({x => const aux = listaAux.get(x) aux.decodificarSuperior(x, y)}) + }) + } + + method generarLateralSuperior(){ + (17..0).forEach({x => listaPosiciones.add(game.at(x,17)) new Bloque().ubicarYDibujar(x,17)}) + } + + method limpiarBloques() = listaBloques.forEach({block => block.quitarBloque() listaBloques.remove(block)}) + method limpiarPuntos() = listaPuntos.forEach({punto => listaPuntos.remove(punto)}) + method limpiarEscenario() { + self.limpiarBloques() + self.limpiarPuntos() + } + + method mismaPosicion(posiblePosicion) = listaPosiciones.any({posicion => posicion == posiblePosicion}) + method mismaPosicionPunto(posiblePosicion) = listaPuntos.any({posicion => posicion == posiblePosicion}) + + method enlistarObjeto(cosa) = listaPuntos.add(cosa) + method enlistarBloque(block) = listaBloques.add(block) + + method quitarObjeto(cosa) = listaPuntos.remove(cosa) + method sacarBloqueDeLista(block) = listaBloques.remove(block) +} + +const nivel1 = new Nivel( + matrizPosiciones = [[b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b], + [b,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,b], + [b,n,b,b,b,n,n,n,n,n,n,n,n,b,b,b,n,b], + [b,n,b,n,b,n,n,n,n,n,n,n,n,b,n,b,n,b], + [b,n,b,n,b,n,n,n,n,n,n,n,n,b,n,b,n,b], + [b,n,b,n,b,n,n,n,n,n,n,n,n,b,n,b,n,b], + [b,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,b], + [b,n,n,n,n,n,n,b,b,b,b,n,n,n,n,n,n,b], + [b,n,n,n,n,n,n,n,b,b,n,n,n,n,n,n,n,b], + [b,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,b], + [b,n,n,n,n,n,n,n,b,b,n,n,n,n,n,n,n,b], + [b,n,n,n,n,n,n,n,b,b,n,n,n,n,n,n,n,b], + [b,n,n,b,n,n,n,n,b,b,n,n,n,n,b,n,n,b], + [b,n,n,n,b,b,n,n,b,b,n,n,b,b,n,n,n,b], + [b,n,n,n,n,n,b,b,n,n,b,b,n,n,n,n,n,b], + [b,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,b], + [b,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,b], + [b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b]] +) + +const nivel2 = new Nivel( + matrizPosiciones = [[b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b], + [b,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,b], + [b,n,n,n,n,n,b,b,b,b,b,b,b,b,n,n,n,b], + [b,n,n,n,b,b,n,n,n,n,n,n,n,n,b,n,n,b], + [b,n,b,b,n,n,n,b,b,b,b,b,b,n,b,n,n,b], + [b,n,b,n,n,n,b,n,n,n,n,n,b,n,n,b,n,b], + [b,n,b,n,b,b,n,n,b,b,b,n,n,b,n,b,n,b], + [b,n,b,n,b,n,n,b,n,n,n,b,n,b,n,b,n,b], + [b,n,b,n,b,n,b,n,n,b,n,b,n,b,n,b,n,b], + [b,n,b,n,b,n,b,b,b,n,n,b,n,b,n,b,n,b], + [b,n,b,n,b,n,n,n,n,n,b,n,n,b,n,b,n,b], + [b,n,b,n,b,b,b,b,b,b,n,n,b,b,n,b,n,b], + [b,n,b,n,n,n,n,n,n,n,n,b,n,n,n,b,n,b], + [b,n,n,b,b,b,b,b,b,b,b,n,n,b,b,n,n,b], + [b,n,n,n,n,n,n,n,n,n,n,b,b,n,n,n,n,b], + [b,n,n,b,b,b,b,b,b,b,b,n,n,n,n,n,n,b], + [b,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,b], + [b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b]] + +) +*/ object niveles{ + const property listaPosiciones = [] + const property listaPuntos = [] + const property listaBloques = [] + var property nivel = 0 + const nivel1 = [[b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b], [b,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,b], [b,n,b,b,b,n,n,n,n,n,n,n,n,b,b,b,n,b], @@ -40,13 +128,45 @@ object niveles{ [b,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,b], [b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b]] - method entregarFila(fila, nivel) = if(nivel == 0) nivel1.get(fila) else nivel2.get(fila) + method entregarFila(fila, nivelPedido) = if(nivelPedido == 0) nivel1.get(fila) else nivel2.get(fila) + + method generarEscenario(){ + (16 .. 0).forEach({y => const listaAux = self.entregarFila(17-y, nivel) + (0..17).forEach({x => const aux = listaAux.get(x) + aux.decodificar(x, y)}) + }) + } + method generarBloquesSuperiores(){//para crear la ilusion de que el jugador está detrás del bloque + (16 .. 0).forEach({y => const listaAux = self.entregarFila(17-y, nivel) + (0..17).forEach({x => const aux = listaAux.get(x) aux.decodificarSuperior(x, y)}) + }) + } + + method generarLateralSuperior(){ + (17..0).forEach({x => listaPosiciones.add(game.at(x,17)) new Bloque().ubicarYDibujar(x,17)}) + } + + method limpiarBloques() = listaBloques.forEach({block => block.quitarBloque() listaBloques.remove(block)}) + method limpiarPuntos() = listaPuntos.forEach({punto => listaPuntos.remove(punto)}) + method limpiarEscenario() { + self.limpiarBloques() + self.limpiarPuntos() + } + + method mismaPosicion(posiblePosicion) = listaPosiciones.any({posicion => posicion == posiblePosicion}) + method mismaPosicionPunto(posiblePosicion) = listaPuntos.any({posicion => posicion == posiblePosicion}) + + method enlistarObjeto(cosa) = listaPuntos.add(cosa) + method enlistarBloque(block) = listaBloques.add(block) + + method quitarObjeto(cosa) = listaPuntos.remove(cosa) + method sacarBloqueDeLista(block) = listaBloques.remove(block) } object b { method decodificar(x,y) { - escenarioNivel.listaPosiciones().add(game.at(x,y)) + niveles.listaPosiciones().add(game.at(x,y)) new Bloque().ubicarYDibujar(x,y) } method decodificarSuperior(x,y) = new BloqueSuperior().ubicarYDibujar(x, y) diff --git a/puntos.wlk b/puntos.wlk index 4d4c7ae..b4a5c6b 100644 --- a/puntos.wlk +++ b/puntos.wlk @@ -1,5 +1,6 @@ import muros.* import miscelaneos.* +import niveles.* class Punto inherits ObjetoVisible{ var property position = posicionAleatoria.generarPosicionAleatoria() @@ -42,10 +43,10 @@ object posicionAleatoria { const x = self.generarPosX() const y = self.generarPosY() - if(escenarioNivel.mismaPosicion(game.at(x, y)) || escenarioNivel.mismaPosicionPunto(game.at(x, y))){ + if(niveles.mismaPosicion(game.at(x, y)) || niveles.mismaPosicionPunto(game.at(x, y))){ return self.generarPosicionAleatoria() } - escenarioNivel.enlistarObjeto(game.at(x, y)) + niveles.enlistarObjeto(game.at(x, y)) return game.at(x, y) } } \ No newline at end of file