From 36441e83c70dddf8c509f726105948ca4c2f41e5 Mon Sep 17 00:00:00 2001 From: GiuffraMateo Date: Thu, 19 Oct 2023 13:18:46 -0300 Subject: [PATCH] perseguidores casi completado --- src/enemigos.wlk | 58 ++++++++++++++++++++++++++++++++++++++++++++++ src/juego.wpgm | 10 +++++--- src/nivelx.wlk | 18 ++++++++++++++ src/personajes.wlk | 17 +++++++++++++- 4 files changed, 99 insertions(+), 4 deletions(-) diff --git a/src/enemigos.wlk b/src/enemigos.wlk index e1b2be2..7e0b8db 100644 --- a/src/enemigos.wlk +++ b/src/enemigos.wlk @@ -44,6 +44,64 @@ class Guardia { } +class GuardiaPerseguidor inherits Guardia{ + + const personajes = #{harry, sirius} + var property danio = 10 + + method perseguir(){ + if (self.veAlgunIntruso()){ + self.avanzarHacia(self.intrusoMasCercano().position()) + } + } + + method veAlgunIntruso(){ + return personajes.any({personaje => self.puedoVerlo(personaje)}) + } + + method intrusoMasCercano(){ + return personajes.find({personaje => self.puedoVerlo(personaje)}) + } + + + + method verAInfiltrado(){ + return 3 + + } + + method avanzarHacia(destino){ + position = game.at ( + position.x() + (destino.x() - position.x()) / 2, + position.y() + (destino.y() - position.y()) / 2 + ) + } + + method puedoVerlo(personaje){ + + return + self.verAInfiltrado() >= self.position().x() - personaje.position().x() or + self.verAInfiltrado() >= self.position().y() - personaje.position().y() + + } + + + + method distanciaEntre(personaje){ + return self.position().x() - personaje.position().x() + } + + override method colisionarCon(personaje){ + personaje.quitarVida(self.danio()) + game.say(personaje, personaje.vida().toString() ) + } + + +} + + + + object listaGuardias{ const property guardias = #{} diff --git a/src/juego.wpgm b/src/juego.wpgm index 2875f06..d0f168b 100644 --- a/src/juego.wpgm +++ b/src/juego.wpgm @@ -12,12 +12,16 @@ program juego { game.height(18) game.boardGround("background2.png") - //game.addVisual(harry) - //game.addVisual(sirius) + const guardia = new GuardiaPerseguidor() + game.addVisual(harry) + game.addVisual(sirius) + game.addVisual(guardia) + + game.onTick(500, "", {guardia.perseguir()}) game.onTick(1000, "caminataGuardias", {listaGuardias.caminar()}) - nivelx.generar() + //nivelx.generar() keyboard.up().onPressDo({ harry.mover(arriba) }) keyboard.down().onPressDo({ harry.mover(abajo) }) diff --git a/src/nivelx.wlk b/src/nivelx.wlk index b9d2470..23a292f 100644 --- a/src/nivelx.wlk +++ b/src/nivelx.wlk @@ -136,3 +136,21 @@ object s{ } } + +//object nivel2{ +// +// method generar(){ +// (0..game.width() -1).forEach({x=> +// (0..game.height() -1).forEach({y=> +// self.generarCelda(x,y)}) +// }) +// +// +// } +// +// method generarCelda(x,y){ +// const celda = celdas.get(y).get(x) +// celda.forEach({objeto => objeto.generar(game.at(x,y))}) +// } +//} + diff --git a/src/personajes.wlk b/src/personajes.wlk index 606cbb5..ac676da 100644 --- a/src/personajes.wlk +++ b/src/personajes.wlk @@ -6,7 +6,7 @@ class Personaje { var property estado = self.estadoHabitual() var property position = game.at(0, 0) - + var property vida = 100 method transformacion() method estadoHabitual() method puedePasar(puerta) @@ -14,6 +14,21 @@ class Personaje { method image() = estado.image() + ".png" method colisionarCon(personaje) { } + method quitarVida(vidaQuitada){ + vida -= vidaQuitada + self.verSiPerdi() + + } + + method verSiPerdi(){ + if (vida <= 0) self.perder() + + } + + method perder(){ + self.volverAlPrincipio() + game.say(self, "me mataron") + } method transformarse() { estado = self.transformacion()