From 31aae21524a78eed8c63ad098b624b259371b8a5 Mon Sep 17 00:00:00 2001 From: LucianoSantinoValenzuelaMaltas Date: Tue, 29 Oct 2024 00:08:59 -0300 Subject: [PATCH] =?UTF-8?q?gok=C3=BA=5FKame=20muere=20si=20es=20impactado,?= =?UTF-8?q?=20pero=20c=C3=B3digo=20mejorable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- enemigos.wlk | 18 ++++++++++++++++- jugador.wlk | 45 ++++++++++++++++++++++++++++++++++++++----- mainExample.wpgm | 50 +++++++++++++++++++++++++++--------------------- menus.wlk | 4 +++- puntos.wlk | 2 ++ 5 files changed, 90 insertions(+), 29 deletions(-) diff --git a/enemigos.wlk b/enemigos.wlk index d54a562..aaa44fc 100644 --- a/enemigos.wlk +++ b/enemigos.wlk @@ -1,6 +1,10 @@ +import menus.* + + class Enemigo1{ var property position = game.at(4,16) var lado = 0 + var property vida method image() = "cell1.png" method moverseH(limite1, limite2){ @@ -22,6 +26,18 @@ class Enemigo1{ } } + method herido() { + vida -= 50 + if(vida == 0){ + self.morir() + } + } + + method morir() { + sincronizadorDePantallas.cambiarPantalla("ganador") + new MenuGanaste().cargar() + } + method limpiarEnemigos(){ game.removeVisual(self) } @@ -29,7 +45,7 @@ class Enemigo1{ } object lineaEnemiga{ - var property enemigo = new Enemigo1() + var property enemigo = new Enemigo1(vida = 150) method activar(){ game.addVisual(enemigo) diff --git a/jugador.wlk b/jugador.wlk index a266729..a5237dc 100644 --- a/jugador.wlk +++ b/jugador.wlk @@ -1,3 +1,4 @@ +import enemigos.* import muros.* import menus.* @@ -15,7 +16,9 @@ class Jugador inherits FiguraConMovimiento(position = game.at(1, 1)) { } method volver(){ - game.addVisualCharacter(self) + if(sincronizadorDePantallas.pantallaActual() == "jugar"){ + game.addVisualCharacter(self) + } } var property valor = "helado.png" @@ -30,6 +33,12 @@ class Jugador inherits FiguraConMovimiento(position = game.at(1, 1)) { game.removeVisual(self) } + method impactado() { + self.eliminate() + sincronizadorDePantallas.cambiarPantalla("perdedor") + new MenuPerdiste().cargar() + } + method atacarDerecha() = new KamehamehaDerecha().energia(self.position(), "goku_Kamehameha_Derecha.png", 1) method atacarIzquierda() = new KamehamehaIzquierda().energia(self.position(), "goku_Kamehameha_Izquierda.png", -1) } @@ -42,15 +51,33 @@ object gokuAtacando { var property position = null var property lado = null method image() = lado + + method impactado(){ + //game.allVisuals().filter({objeto => objeto.image() == KamehamehaDerecha.image() || objeto.image() == KamehamehaIzquierda.image()}).head() + sincronizadorDePantallas.cambiarPantalla("perdedor") + //new MenuPerdiste().cargar() + } + + method eliminate(){ + game.removeVisual(self) + } + } class KamehamehaDerecha{ var personaje = null + var property impacto = 0 var property position = null method image() = "kamehameha_Derecha.png" + method impactado() { + //game.allVisuals().filter({objeto => objeto.image() == Enemigo1.image()}).head().herido() + lineaEnemiga.enemigo().herido() + self.impacto(1) + } + method energia(posicion, lado, valor){ gokuAtacando.lado(lado) gokuAtacando.position(posicion) @@ -67,7 +94,7 @@ class KamehamehaDerecha{ method lugarValido() = escenario.mismaPosicion(self.position()) method avanzar(){ - if(!escenario.mismaPosicion(game.at(self.position().x() + 1, self.position().y())) && self.position().x() + 1 < game.width() - 1){ + if(!escenario.mismaPosicion(game.at(self.position().x() + 1, self.position().y())) && self.position().x() + 1 < game.width() - 1 && impacto < 1 && sincronizadorDePantallas.pantallaActual() != "perdedor"){ self.position(game.at(self.position().x() + 1, self.position().y())) game.schedule(500, {self.avanzar()}) } @@ -75,11 +102,15 @@ class KamehamehaDerecha{ personaje.position(gokuAtacando.position()) personaje.volver() self.eliminate() + gokuAtacando.eliminate() + if(sincronizadorDePantallas.pantallaActual() == "perdedor"){ + new MenuPerdiste().cargar() + } } } method eliminate(){ - game.removeVisual(gokuAtacando) + //game.removeVisual(gokuAtacando) game.removeVisual(self) } } @@ -88,7 +119,7 @@ class KamehamehaIzquierda inherits KamehamehaDerecha{ override method image() = "kamehameha_Izquierda.png" override method avanzar(){ - if(!escenario.mismaPosicion(game.at(self.position().x() - 1, self.position().y())) && self.position().x() - 1 > 0){ + if(!escenario.mismaPosicion(game.at(self.position().x() - 1, self.position().y())) && self.position().x() - 1 > 0 && impacto < 1 && sincronizadorDePantallas.pantallaActual() != "perdedor"){ self.position(game.at(self.position().x() - 1, self.position().y())) game.schedule(500, {self.avanzar()}) } @@ -96,7 +127,11 @@ class KamehamehaIzquierda inherits KamehamehaDerecha{ personaje.position(gokuAtacando.position()) personaje.volver() self.eliminate() - } + gokuAtacando.eliminate() + if(sincronizadorDePantallas.pantallaActual() == "perdedor"){ + new MenuPerdiste().cargar() + } + } } } diff --git a/mainExample.wpgm b/mainExample.wpgm index 287c501..a3f880f 100644 --- a/mainExample.wpgm +++ b/mainExample.wpgm @@ -24,36 +24,42 @@ program BadIceCreamGame { //Juego puntos - keyboard.r().onPressDo({ - const nuevaFruta = interactuador.obtenerPrimerElemento("r"," sobre una fruta para recolectarla") - if(nuevaFruta.esFruta()){ - //jugador.recolectar(nuevaFruta) - game.allVisuals().filter({objeto => objeto.image() == datosJugador.imagen()}).head().recolectar(nuevaFruta) - points.sumarFrutas() - } - if(points.frutasObtenidas() == 10 || points.frutasObtenidas() == 20){ - spawn.dibujarFrutas() - } - if(points.frutasObtenidas() == 30){ - sincronizadorDePantallas.cambiarPantalla("ganador") - //const menuGanaste = new MenuGanaste() - //menuGanaste.cargar() - new MenuGanaste().cargar() + keyboard.r().onPressDo({ + if(sincronizadorDePantallas.habilitar()){ + const nuevaFruta = interactuador.obtenerPrimerElemento("r"," sobre una fruta para recolectarla") + if(nuevaFruta.esFruta()){ + //jugador.recolectar(nuevaFruta) + game.allVisuals().filter({objeto => objeto.image() == datosJugador.imagen()}).head().recolectar(nuevaFruta) + points.sumarFrutas() + } + if(points.frutasObtenidas() == 10 || points.frutasObtenidas() == 20){ + spawn.dibujarFrutas() + } + if(points.frutasObtenidas() == 30){ + sincronizadorDePantallas.cambiarPantalla("ganador") + //const menuGanaste = new MenuGanaste() + //menuGanaste.cargar() + new MenuGanaste().cargar() + } } + }) - keyboard.e().onPressDo({game.allVisuals().filter({objeto => objeto.image() == datosJugador.imagen()}).head().atacarDerecha()}) - keyboard.q().onPressDo({game.allVisuals().filter({objeto => objeto.image() == datosJugador.imagen()}).head().atacarIzquierda()}) + keyboard.e().onPressDo({if(sincronizadorDePantallas.habilitar()) {game.allVisuals().filter({objeto => objeto.image() == datosJugador.imagen()}).head().atacarDerecha()}}) + keyboard.q().onPressDo({if(sincronizadorDePantallas.habilitar()) {game.allVisuals().filter({objeto => objeto.image() == datosJugador.imagen()}).head().atacarIzquierda()}}) // Si tocas shift se gana el juego automaticamente. Asi cuando probamos no tenemos que jugarlo completo. Despues esto se saca. keyboard.shift().onPressDo({ - sincronizadorDePantallas.cambiarPantalla("ganador") - /*const menuGanaste = new MenuGanaste() - menuGanaste.cargar()})*/ - new MenuGanaste().cargar()}) + if(sincronizadorDePantallas.habilitar()){ + sincronizadorDePantallas.cambiarPantalla("ganador") + /*const menuGanaste = new MenuGanaste() + menuGanaste.cargar()})*/ + new MenuGanaste().cargar() + } + }) - game.onCollideDo(lineaEnemiga.enemigo(), {elemento => if(elemento.jugador()){ elemento.eliminate() sincronizadorDePantallas.cambiarPantalla("perdedor") new MenuPerdiste().cargar()}}) + game.onCollideDo(lineaEnemiga.enemigo(), {elemento => elemento.impactado()}) } object interactuador{ diff --git a/menus.wlk b/menus.wlk index 1ad10df..9959ab2 100644 --- a/menus.wlk +++ b/menus.wlk @@ -112,7 +112,7 @@ class MenuGanaste inherits Menus(add_1 = ganaste, /*add_2 = seleccionGanaste,*/ override method cargar(){ super() //game.removeVisual(jugador) - game.allVisuals().filter({objeto => objeto.image() == datosJugador.imagen()}).head().eliminate() + //game.allVisuals().filter({objeto => objeto.image() == datosJugador.imagen()}).head().eliminate() lineaEnemiga.enemigo().limpiarEnemigos() game.removeVisual(fondoJuego) game.removeVisual(points) @@ -195,6 +195,8 @@ object sincronizadorDePantallas{ pantalla = nuevaPantalla } method pantallaActual() = pantalla + + method habilitar() = pantalla == "jugar" } object laMuerte { diff --git a/puntos.wlk b/puntos.wlk index 05c3a27..d352ed4 100644 --- a/puntos.wlk +++ b/puntos.wlk @@ -5,6 +5,8 @@ class Fruta{ method jugador() = false + method impactado() = null + method image(){ if(points.frutasObtenidas() < 10){ return spawn.puntos().get(0)