From ed302e24a1fc20f2b1d869350058ea79542b51d9 Mon Sep 17 00:00:00 2001 From: Nahuel Marek Date: Fri, 4 Oct 2024 20:52:00 -0300 Subject: [PATCH] =?UTF-8?q?a=C3=B1adi=20posible=20tienda,=20generador=20de?= =?UTF-8?q?=20plantas=20y=20junte=20funciones=20de=20movimiento=20del=20cu?= =?UTF-8?q?rsor=20dentro=20de=20un=20solo=20metodo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cursor.wlk | 28 ++++++++++++++++++++++++++++ generadorDeEnemigos.wlk | 2 +- generadorDePlantas.wlk | 22 ++++++++++++++++++++++ main.wpgm | 30 +++++++++++++++--------------- menu.wlk | 33 +++++++++++++++++++++++++++++++++ pepita.wlk | 31 ------------------------------- plantas.wlk | 26 ++++++++++++++++++++++++++ zombie.wlk | 5 ++--- 8 files changed, 127 insertions(+), 50 deletions(-) create mode 100644 cursor.wlk create mode 100644 generadorDePlantas.wlk create mode 100644 menu.wlk delete mode 100644 pepita.wlk create mode 100644 plantas.wlk diff --git a/cursor.wlk b/cursor.wlk new file mode 100644 index 0000000..71289ff --- /dev/null +++ b/cursor.wlk @@ -0,0 +1,28 @@ +import wollok.game.* + +object cursor { + var property position = new MutablePosition(x=7, y=3) + var property vida = 3 // Le doy una propiedad vida para que reciba daño cuando choca con un zombie + + method perderVida(danio) { vida -= danio} + + method image() = "marcoRojo.png" + + method accion(){ + keyboard.right().onPressDo({ self.moverseDerecha() }) + keyboard.left().onPressDo({ self.moverseIzquierda() }) + keyboard.up().onPressDo({ self.moverseArriba() }) + keyboard.down().onPressDo({ self.moverseAbajo() }) + } + + method moverseDerecha() = if (self.position().x()<14) position.goRight(1) + method moverseIzquierda() = if (self.position().x()>0) position.goLeft(1) + method moverseArriba() = if (self.position().y()<4) position.goUp(1) + method moverseAbajo() = if (self.position().y()>0) position.goDown(1) + + method noEstaViva() = vida < 0 + + method morir(){ + if (self.noEstaViva()){ game.say(self, "Durisimo Helmano")} // Delego la resonsabilidad de morir a pepita + } +} diff --git a/generadorDeEnemigos.wlk b/generadorDeEnemigos.wlk index 76a856a..008a2a4 100644 --- a/generadorDeEnemigos.wlk +++ b/generadorDeEnemigos.wlk @@ -14,7 +14,7 @@ object generadorDeEnemigos { if (numero==1) {/*generara un zombie normal*/ var nombreParaEnemigo = self.nombre() /* esto esta hecho porque sino wollok se enoja, para poder crear un enemigo*/ - nombreParaEnemigo = new ZombiesNormales() + nombreParaEnemigo = new ZombiesNormales(position= new MutablePosition(x=10, y=0.randomUpTo(5).truncate(0))) enemigo.add(nombreParaEnemigo)/*se añade a la lista de enemigos activos*/ return game.addVisual(nombreParaEnemigo)/*muestra al enemigo en el juego*/ } diff --git a/generadorDePlantas.wlk b/generadorDePlantas.wlk new file mode 100644 index 0000000..922b2f1 --- /dev/null +++ b/generadorDePlantas.wlk @@ -0,0 +1,22 @@ +import plantas.* +object generadorDePlantas { + var nombrePlanta = 0 /*asigno el nombre a los enemigos que voy creando segun numeros, asi puedo crear nombres nuevos + automaticamente*/ + + const plantas = #{}/*contiene cada enemigo que fue creando*/ + + method nombre() = nombrePlanta /*para poder consultar el ultimo nombre usado*/ + method sumarPlanta() { /*suma 1 a nombre enemigo para asi crear enemigos nuevos, luego hay que hacer la funcion para que reste 1 cuando maten a un enemigo*/ + nombrePlanta+=1 + } + method generarPlanta(planta, posicion){/*segun el numero ingresado, se generara un tipo de enemigo distinto*/ + var nombreParaPlanta = self.nombre() /* esto esta hecho porque sino wollok se enoja,para poder crear un enemigo*/ + if (planta=="papa") + nombreParaPlanta = new Papa(position= posicion) + else if (planta=="guisante") + nombreParaPlanta = new Guisante(position= posicion) + plantas.add(nombreParaPlanta)/*se añade a la lista de enemigos activos*/ + return game.addVisual(nombreParaPlanta)/*muestra al enemigo en el juego*/ + + } +} \ No newline at end of file diff --git a/main.wpgm b/main.wpgm index 2bc689b..c8b9456 100644 --- a/main.wpgm +++ b/main.wpgm @@ -1,21 +1,21 @@ import wollok.game.* -import pepita.* +import cursor.* import zombie.* import fantasma.* +import menu.* import generadorDeEnemigos.* -program PepitaGame { - game.title("Pepita") - game.height(5) +program cursorGame { + game.title("cursor") + game.height(6) game.width(15) game.cellSize(100) /*game.addVisual(Fantasmas)*/ - game.addVisual(pepita) - - keyboard.d().onPressDo({ pepita.moverseDerecha(1) }) - keyboard.a().onPressDo({ pepita.moverseIzquierda(1) }) - keyboard.w().onPressDo({ pepita.moverseArriba(1) }) - keyboard.s().onPressDo({ pepita.moverseAbajo(1) }) + game.addVisual(cursor) + game.addVisual(menu) + menu.accion() + cursor.accion() + menu.iniciarTienda() game.onTick(3000, "generar nuevo Enemigo", {generadorDeEnemigos.sumarEnemigo() generadorDeEnemigos.generarEnemigo(1)})/*suma 1 a nombreEnemigo para poder crear el siguiente, y genera un enemigo, se hace en este orden ya que si se crea el primer enemigo, luego un segundo, y antes de que que se genere el @@ -24,19 +24,19 @@ program PepitaGame { game.onTick(3000, "mover enemigo", {generadorDeEnemigos.moverEnemigos()})/*cada cierto tiempo hace que se muevan los enemigos*/ - game.whenCollideDo(pepita, { elemento => + game.whenCollideDo(cursor, { elemento => elemento.moverse(false) - })/*cuando chocan con pepita, frenan, a futuro seria que cuando un zombie choca con una planta, frena y empieza a + })/*cuando chocan con cursor, frenan, a futuro seria que cuando un zombie choca con una planta, frena y empieza a atacar*/ game.start() - game.onCollideDo(pepita, {elemento => game.say(elemento, "Duro de Cojones")}) - game.onCollideDo(pepita, {elemento => pepita.perderVida(elemento.danio())}) + game.onCollideDo(cursor, {elemento => game.say(elemento, "Duro de Cojones")}) + game.onCollideDo(cursor, {elemento => cursor.perderVida(elemento.danio())}) - game.onTick(3000, "matar pepita", {if (pepita.noEstaViva()){pepita.morir()}}) + game.onTick(3000, "matar cursor", {if (cursor.noEstaViva()){cursor.morir()}}) const musica = game.sound("musica.mp3") musica.shouldLoop(true) diff --git a/menu.wlk b/menu.wlk new file mode 100644 index 0000000..58e7c94 --- /dev/null +++ b/menu.wlk @@ -0,0 +1,33 @@ +import generadorDePlantas.* +import plantas.* +import cursor.* + +object menu { + const position = new MutablePosition(x=0, y=5) + method position() = position + + var property imagen = "marcoRojo.png" + method image() = imagen + + method accion(){ + keyboard.d().onPressDo({self.moverseDerecha()}) + keyboard.a().onPressDo({self.moverseIzquierda()}) + keyboard.enter().onPressDo({self.generarPlanta()}) + } + method moverseDerecha() = if (self.position().x()<6) position.goRight(1) + method moverseIzquierda() = if (self.position().x()>0) position.goLeft(1) + method generarPlanta(){ + const plantaAgenerar = game.colliders(self) // no usamos uniqueColliders porque tira error si no hay ninguna + const plantaSeleccionada = plantaAgenerar.first().tipo() + const posicion = game.at(cursor.position().x(),cursor.position().y()) + generadorDePlantas.generarPlanta(plantaSeleccionada,posicion) + } + + method iniciarTienda(){ + const papaTienda = new Papa(position = game.at(0,5)) + game.addVisual(papaTienda) + const guisanteTienda = new Guisante(position = game.at(1,5)) + game.addVisual(guisanteTienda) + } +} + diff --git a/pepita.wlk b/pepita.wlk deleted file mode 100644 index 8d05202..0000000 --- a/pepita.wlk +++ /dev/null @@ -1,31 +0,0 @@ -import wollok.game.* - -object pepita { - const position = new MutablePosition(x=0, y=0) - - var property vida = 3 // Le doy una propiedad vida para que reciba daño cuando choca con un zombie - - method perderVida(danio) { vida -= danio} - - method image() = "marcoRojo.png" - method position() = position - - method moverseDerecha(casillas) { - position.goRight(casillas) - } - method moverseIzquierda(casillas) { - position.goLeft(casillas) - } - method moverseArriba(casillas) { - position.goUp(casillas) - } - method moverseAbajo(casillas) { - position.goDown(casillas) - } - - method noEstaViva() = vida < 0 - - method morir(){ - if (self.noEstaViva()){ game.say(self, "Durisimo Helmano")} // Delego la resonsabilidad de morir a pepita - } -} diff --git a/plantas.wlk b/plantas.wlk new file mode 100644 index 0000000..f80d305 --- /dev/null +++ b/plantas.wlk @@ -0,0 +1,26 @@ +class Papa{ + const position + const property tipo = "papa" + var property vida=100 + method position() = position + var property imagen = "golondrina.png" + method image() = imagen + + method recibeDanio(danio) { + self.vida(self.vida() - danio) + } +} + +class Guisante{ + const position + const property tipo = "guisante" + var property vida=100 + method position() = position + var property imagen = "zombie.png" + method image() = imagen + + method recibeDanio(danio) { + self.vida(self.vida() - danio) + } +} +const pepe = new Guisante (position=game.at(0,0)) \ No newline at end of file diff --git a/zombie.wlk b/zombie.wlk index dac9e4e..a03b510 100644 --- a/zombie.wlk +++ b/zombie.wlk @@ -1,9 +1,9 @@ class ZombiesNormales { - const position = new MutablePosition(x=10, y=0.randomUpTo(5).truncate(0)) + const position var property moverse = true /*va a servir para hacer que deje de avanzar*/ method position() = position - var property imagen = "slime_base.png" + var property imagen = "slime base.png" method image() = imagen method movete() { @@ -19,4 +19,3 @@ class ZombiesNormales { } -const pepe = new ZombiesNormales() \ No newline at end of file