Skip to content

Commit

Permalink
ahora los slimes tienen animaciones
Browse files Browse the repository at this point in the history
  • Loading branch information
NahuelMarek committed Nov 29, 2024
1 parent 5953b9b commit 40d46bd
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 22 deletions.
3 changes: 3 additions & 0 deletions administradorDeEnemigos.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,7 @@ object administradorDeEnemigos {
method moverEnemigos() {
enemigos.forEach({ enemigo => enemigo.movete() })
}
method cambiarFrame(){
enemigos.forEach({ enemigo => enemigo.cambiarFrame()})
}
}
14 changes: 5 additions & 9 deletions administradorDeJuego.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -177,22 +177,15 @@ object configuracion {
const tickParaDisparar= game.tick(tiempoDisparo, { administradorDeMagos.disparar()},false)
const tickParaMoverYColisionarDisparos= game.tick(tiemposProyectiles, { administradorDeProyectiles.moverProyectiles() administradorDeProyectiles.impactarProyectiles() },false)
const tickParaCambiarFrames= game.tick((tiemposProyectiles/3)-5, {administradorDeProyectiles.cambiarFrame()},false)
//game.onTick(tiempoMuerte, "matar enemigos", { administradorDeEnemigos.estanMuertos() })
//game.onTick(tiempoMuerte, "matar magos", { administradorDeMagos.matarMagos() })

/* game.onTick(tiemposProyectiles, "impactarDisparos", {
administradorDeProyectiles.impactarProyectiles()
administradorDeProyectiles.combinarProyectiles()
}) */

const tickParaCambiarFramesEnemigos= game.tick((tiempoMoverEnemigo/3)-5, {administradorDeEnemigos.cambiarFrame()},false)


var property sonido = "pvz8bit.mp3"
const musica = game.sound(self.sonido()) // El reproductor de música es constante; solo cambia el archivo de sonido
method iniciarMusica() {sonidoPartida.iniciarMusica()}
// Método para detener la música de fondo
method detenerMusica() {
sonidoPartida.detenerMusica()
try sonidoPartida.detenerMusica() catch e return
}

method iniciarConfig(){
Expand Down Expand Up @@ -264,20 +257,23 @@ object configuracion {
tickParaDisparar.start()
tickParaMoverYColisionarDisparos.start()
tickParaMoverEnemigos.start()
tickParaCambiarFramesEnemigos.start()
}
method frenarTicks() {
tickParaAumentarDinero.stop()
tickParaCambiarFrames.stop()
tickParaDisparar.stop()
tickParaMoverYColisionarDisparos.stop()
tickParaMoverEnemigos.stop()
tickParaCambiarFramesEnemigos.stop()
}
method resetTicks(){
tickParaAumentarDinero.reset()
tickParaCambiarFrames.reset()
tickParaDisparar.reset()
tickParaMoverYColisionarDisparos.reset()
tickParaMoverEnemigos.reset()
tickParaCambiarFramesEnemigos.reset()
}
// Método para iniciar la música de fondo en bucle

Expand Down
38 changes: 25 additions & 13 deletions slime.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,23 @@ class Slime {
var property enMovimiento = true // Indica si el slime puede moverse
var property vida = tipo.vida()
const property danio = tipo.danio()

var imagen = tipo.imagenesNormales().get(0)
var frame=0

method cambiarFrame() {
imagen = tipo.imagenesNormales().get(frame)
if(frame<2) {frame+=1}
}
// Métodos de visualización y estado
method frenarEnemigo() = true
method position() = position
method image() = tipo.imagen()
method image() = imagen
method sePuedeSuperponer() = false

// Movimiento del Slime
method movete() {tipo.moverse().apply(self)}
method movete() {imagen=tipo.imagenesNormales().get(0)
frame=1
tipo.moverse().apply(self)}

// Lógica para frenar el movimiento
method meFreno() {tipo.meFreno().apply(self)}
Expand All @@ -34,6 +42,7 @@ class Slime {
method recibeDanioMago(_danio){}

method recibeDanioEnemigo(_danio) {
imagen=tipo.imagenesRecibeDanio().get(frame)
self.vida(self.vida() - _danio)
tipo.accionAlRecibirDanio().apply(self)
return true
Expand All @@ -54,6 +63,8 @@ class Slime {
administradorDeEnemigos.eliminarEnemigo(self)
}
method tipoProyectil()=false


}
// ===============================
// Tipos de Slime: Variantes
Expand All @@ -63,8 +74,9 @@ class Tipo{
const property danio
const property vida
method desplazamiento() = 1
const imagen="s.slimeBase.png"
method imagen() {return imagen}
const property imagenesNormales
const property imagenesRecibeDanio
const property imagen
method moverse()={slime=> slime.estaMuerto()
if (slime.enMovimiento())
slime.position().goLeft(slime.tipo().desplazamiento())
Expand Down Expand Up @@ -95,20 +107,20 @@ class Tipo{
method accionAlRecibirDanio() ={slime => return }
}

object slimeBasico inherits Tipo(danio= 25, vida=100, imagen="s.slimeBase.png") {
object slimeBasico inherits Tipo(danio= 25, vida=100, imagen="s.slimeBase_01.png", imagenesNormales=["s.slimeBase_01.png","s.slimeBase_02.png","s.slimeBase_03.png"],imagenesRecibeDanio=["s.slimeBaseDanio_01.png","s.slimeBaseDanio_02.png","s.slimeBaseDanio_03.png"]) {
}

object slimeGuerrero inherits Tipo(danio= 25, vida=200, imagen="s.slimeGuerrero.png"){
object slimeGuerrero inherits Tipo(danio= 25, vida=200, imagen="s.slimeGuerrero_01.png",imagenesNormales=["s.slimeGuerrero_01.png","s.slimeGuerrero_02.png","s.slimeGuerrero_03.png"],imagenesRecibeDanio=["s.slimeGuerreroDanio_01.png","s.slimeGuerreroDanio_02.png","s.slimeGuerreroDanio_03.png"]){
}

object slimeNinja inherits Tipo(danio= 200, vida=120, imagen="s.slimeNinja.png") {
object slimeNinja inherits Tipo(danio= 200, vida=120, imagen="s.slimeNinja_01.png",imagenesNormales=["s.slimeNinja_01.png","s.slimeNinja_02.png","s.slimeNinja_03.png"],imagenesRecibeDanio=["s.slimeNinjaDanio_01.png","s.slimeNinjaDanio_02.png","s.slimeNinjaDanio_03.png"]) {
override method desplazamiento() = 2
}

object slimeBlessed inherits Tipo(danio= 200, vida=300, imagen="s.slimeBlessed.png"){
object slimeBlessed inherits Tipo(danio= 200, vida=300, imagen="s.slimeBlessed_01.png",imagenesNormales=["s.slimeBlessed_01.png","s.slimeBlessed_02.png","s.slimeBlessed_03.png"],imagenesRecibeDanio=["s.slimeBlessedDanio_01.png","s.slimeBlessedDanio_02.png","s.slimeBlessedDanio_03.png"]){
}

object slimeLadron inherits Tipo(danio= 25, vida=160, imagen="s.slimeLadron.png") {
object slimeLadron inherits Tipo(danio= 25, vida=160, imagen="s.slimeLadron_01.png",imagenesNormales=["s.slimeLadron_01.png","s.slimeLadron_02.png","s.slimeLadron_03.png"],imagenesRecibeDanio=["s.slimeLadronDanio_01.png","s.slimeLadronDanio_02.png","s.slimeLadronDanio_03.png"]) {

override method meFreno()={slime=>
const posicionEnFrente = new MutablePosition(x = slime.position().x() - 1, y = slime.position().y())
Expand All @@ -124,7 +136,7 @@ object slimeLadron inherits Tipo(danio= 25, vida=160, imagen="s.slimeLadron.png"

}

object slimeDorado inherits Tipo(danio=0, vida=175, imagen="s.slimeDorado.png"){
object slimeDorado inherits Tipo(danio=0, vida=175, imagen="s.slimeDorado_01.png",imagenesNormales=["s.slimeDorado_01.png","s.slimeDorado_02.png","s.slimeDorado_03.png"],imagenesRecibeDanio=["s.slimeDoradoDanio_01.png","s.slimeDoradoDanio_02.png","s.slimeDoradoDanio_03.png"]){
override method desplazamiento() = 2
override method meFreno()={slime=>slime.enMovimiento(true)}
override method estaMuerto()={slime=>
Expand All @@ -136,7 +148,7 @@ object slimeDorado inherits Tipo(danio=0, vida=175, imagen="s.slimeDorado.png"){
return slime.sinVida() || slime.llegoACasa()
}
}
object slimeDeMedioOriente inherits Tipo(danio=250, vida=180, imagen="s.slimeMedioOriente.png"){
object slimeDeMedioOriente inherits Tipo(danio=250, vida=180, imagen="s.slimeMedioOriente_01.png",imagenesNormales=["s.slimeMedioOriente_01.png","s.slimeMedioOriente_02.png","s.slimeMedioOriente_03.png"],imagenesRecibeDanio=["s.slimeMedioOrienteDanio_01.png","s.slimeMedioOrienteDanio_02.png","s.slimeMedioOrienteDanio_03.png"]){

override method meFreno()={slime=>
const posicionEnFrente = new MutablePosition(x = slime.position().x(), y = slime.position().y())
Expand All @@ -155,7 +167,7 @@ object slimeDeMedioOriente inherits Tipo(danio=250, vida=180, imagen="s.slimeMed

}

object slimeAgil inherits Tipo(danio=50, vida=450, imagen="s.slimeAgil.png"){
object slimeAgil inherits Tipo(danio=50, vida=450, 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){
Expand Down

0 comments on commit 40d46bd

Please sign in to comment.