Skip to content

Commit

Permalink
Mejorando slime agil
Browse files Browse the repository at this point in the history
  • Loading branch information
NicolasSchkurko committed Dec 5, 2024
1 parent 6225125 commit 9e37d2b
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 25 deletions.
18 changes: 15 additions & 3 deletions administradorDeEnemigos.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ object administradorDeEnemigos {

nombreParaEnemigo = new Slime(position = posicionTemporal, tipo = tipo)
enemigos.add(nombreParaEnemigo) /* Añade el nuevo enemigo a la colección de enemigos activos */

y.toString().printString()
self.sumarEnemigo() /* Incrementa el contador de enemigos en el administrador */
administradorDeOleadas.sumarEnemigo() /* Notifica al administrador de oleadas */
cantDeEnemigosPorLinea.get(y).aumentarCant()
self.aumentarLinea(y)
return game.addVisual(nombreParaEnemigo) /* Muestra al enemigo en el juego */
} else {
return /* No genera el enemigo si la posición está ocupada */
Expand All @@ -49,7 +49,7 @@ object administradorDeEnemigos {
// Elimina un enemigo específico de la colección de enemigos activos
method eliminarEnemigo(enemigo) {
const y= enemigo.position().y()
cantDeEnemigosPorLinea.get(y).restarCantidad()
self.decrementarLinea(y)
administradorDeOleadas.reducirEnemigo()
enemigos.remove(enemigo)
}
Expand All @@ -59,6 +59,7 @@ object administradorDeEnemigos {
enemigos.forEach({ enemigo => enemigo.eliminar() })
nombreEnemigo = 0
enemigos = []
cantDeEnemigosPorLinea.forEach({linea => linea.cantEnemigos(0)})
}

// Verifica si los enemigos están muertos
Expand All @@ -74,6 +75,13 @@ object administradorDeEnemigos {
enemigos.forEach({ enemigo => enemigo.cambiarFrame()})
}

method aumentarLinea(linea){
cantDeEnemigosPorLinea.get(linea).aumentarCant()
}

method decrementarLinea(linea){
cantDeEnemigosPorLinea.get(linea).restarCantidad()
}

method hayEnemigoFila(numeroFila) = cantDeEnemigosPorLinea.get(numeroFila).cantEnemigos() > 0

Expand All @@ -82,6 +90,10 @@ object administradorDeEnemigos {
class Linea{
var property cantEnemigos =0

method reset(){
cantEnemigos = 0
}

method aumentarCant() {
cantEnemigos+=1
}
Expand Down
1 change: 0 additions & 1 deletion administradorDeOleadas.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,6 @@ class Nivel{
}
method resetearCantEnemigosComoAlInicio(){}
}

object nivelFinal inherits Nivel(oleadas=[[slimeBasico,slimeBasico,slimeGuerrero,slimeDorado],
[slimeBasico,slimeGuerrero, slimeBomba,slimeGuerrero],
[slimeAgil,slimeGuerrero,slimeLadron,slimeNinja],
Expand Down
8 changes: 4 additions & 4 deletions magos.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -101,18 +101,17 @@ class MagoStop inherits MagoQueDispara(vida = 100, imagen = "magoStop.png", proy
class MagoPiedra inherits Mago(vida = 400, imagen = "magoPiedra.png") {}

// Mago Explosivo
class MagoExplosivo inherits Mago(vida = 10, imagen = "magoExplosivo.png") {
class MagoExplosivo inherits Mago(vida = 1000, imagen = "magoExplosivo.png") {
const explosion = game.sound("m.explosion.mp3")

override method matar() {
if (self.estaMuerto()) {
self.vida(0)
const posicionEnFrente = new MutablePosition(x = position.x() + 1, y = position.y())
const enemigoEnFrente = game.getObjectsIn(posicionEnFrente)
explosion.volume(0.1)
explosion.play()
enemigoEnFrente.forEach({ objeto => objeto.matarSlime() }) //Map devuelve lista, usar forEach
self.eliminar()
}
}
}

Expand Down Expand Up @@ -148,7 +147,8 @@ class MagoTienda{
puntaje.restarPuntos(costo)//Idem en todo mago
const mago = self.magoQueGenera(posicionMago)
return mago
}
}

method recibeDanioMago(danio,enemigo){}
method frenarEnemigo()= true
// method efectoDeInvocacion(){} //esto estaba porque antes los magos irlandeses interactuaban directamente con el contador de puntos
Expand Down
24 changes: 7 additions & 17 deletions slime.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -196,24 +196,14 @@ object slimeBomba inherits Tipo(danio=250, vida=180, imagen="s.slimeMedioOriente

object slimeAgil inherits Tipo(danio=50, vida=200, imagen="s.slimeAgil_01.png",imagenesNormales=["s.slimeAgil_01.png","s.slimeAgil_02.png","s.slimeAgil_03.png"],imagenesRecibeDanio=["s.slimeAgilDanio_01.png","s.slimeAgilDanio_02.png","s.slimeAgilDanio_03.png"]){

override method accionAlRecibirDanio() = {slime=>
if(slime.vida()<=self.vida()*0.5){
self.cambiarDeCarril().apply(slime)
}
}
override method accionAlRecibirDanio() = {slime=>self.cambiarDeCarril().apply(slime)}
method cambiarDeCarril()={slime=>
const posicionArriba= new MutablePosition(x = slime.position().x(), y = slime.position().y()+1)
const posicionAbajo= new MutablePosition(x = slime.position().x(), y = slime.position().y()-1)
const celA=game.getObjectsIn(posicionArriba)
const celAB=game.getObjectsIn(posicionAbajo)
const celdaArriba= [celA,posicionArriba]
const celdaAbajo= [celAB,posicionAbajo]
const posiciones = [celdaArriba,celdaAbajo]
posiciones.any({ celda => celda.get(0).all({objeto=>!objeto.frenarEnemigo()}) && self.moverAcarrilAledanio(slime, celda.get(1))})
}
method moverAcarrilAledanio(slime,carril){
if(carril.y()<5 && carril.y()>=0 ){
slime.position(carril)
const newPosicion= new MutablePosition(x = slime.position().x(), y = (slime.position().y()+((-1).randomUpTo(2))).max(0).min(4)) //
const celdavacia=game.getObjectsIn(newPosicion).isEmpty()
if(celdavacia){
administradorDeEnemigos.decrementarLinea(slime.position().y())
slime.position(newPosicion)
administradorDeEnemigos.aumentarLinea(newPosicion.y())
}
}
}

0 comments on commit 9e37d2b

Please sign in to comment.