Skip to content

Commit

Permalink
Los proyectiles afectan a morcilla
Browse files Browse the repository at this point in the history
No pude testearlo
  • Loading branch information
bcochon committed Oct 17, 2024
1 parent facda9c commit 1b26285
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 62 deletions.
2 changes: 2 additions & 0 deletions entorno.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class Proyectiles {
const id

method direccionIzquierda(velocidad) {
game.whenCollideDo(self, {=> morcilla.perderVida()})
game.addVisual(self)
game.onTick(velocidad, "proyectilIzquierda" + id, {self.movimientoIzquierda(velocidad)})
}
Expand All @@ -33,6 +34,7 @@ class Proyectiles {
}

method direccionDerecha(velocidad) {
game.whenCollideDo(self, {=> morcilla.perderVida()})
game.addVisual(self)
game.onTick(velocidad, "proyectilDerecha" + id, {self.movimientoDerecha(velocidad)})
}
Expand Down
150 changes: 88 additions & 62 deletions morcilla.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -2,80 +2,106 @@ import wollok.game.*
import general.*

object morcilla {
var property position = new PositionMejorada(x=0, y=2)
var property vidas = 5
var property puedeAtacar = false
var property position = new PositionMejorada(x=0, y=2)
method image() = "morcilla256.png"

var saltando = false
var suspendido = false
var caerActivo = false
var movimientoActivo = true
// ================================== MOVIMIENTO ==================================
var saltando = false
var suspendido = false
var caerActivo = false
var movimientoActivo = true

method image() = "morcilla256.png"
method saltando() = saltando
method saltando() = saltando

method caminarDerecha(pasos) {
if(movimientoActivo)
position.goRightMejorado(pasos, 30)
method caminarDerecha(pasos) {
if(movimientoActivo)
position.goRightMejorado(pasos, 30)

// FALTA EVALUAR SI QUEDA SUSPENDIDO
self.caer()
}
// FALTA EVALUAR SI QUEDA SUSPENDIDO
self.caer()
}

method caminarIzquierda(pasos) {
if(movimientoActivo)
position.goLeftMejorado(pasos, 0)

// FALTA EVALUAR SI QUEDA SUSPENDIDO
self.caer()
}

method saltar(duracion) {
if (!suspendido && movimientoActivo) {
saltando = true
suspendido = true
const tiempo = duracion / 5

game.schedule(tiempo * 0, { position.goUp(1) })
game.schedule(tiempo * 1, { position.goUp(1) })
game.schedule(tiempo * 2, { position.goUp(1) })
game.schedule(tiempo * 3, { position.goUp(1) })
game.schedule(tiempo * 4, { position.goUp(1) })

method caminarIzquierda(pasos) {
if(movimientoActivo)
position.goLeftMejorado(pasos, 0)
game.schedule(tiempo * 5, { saltando = false })
game.schedule(tiempo * 5, { self.caer() })
}
}

// FALTA EVALUAR SI QUEDA SUSPENDIDO
self.caer()
}

method saltar(duracion) {
if (!suspendido && movimientoActivo) {
saltando = true
suspendido = true
const tiempo = duracion / 5

game.schedule(tiempo * 0, { position.goUp(1) })
game.schedule(tiempo * 1, { position.goUp(1) })
game.schedule(tiempo * 2, { position.goUp(1) })
game.schedule(tiempo * 3, { position.goUp(1) })
game.schedule(tiempo * 4, { position.goUp(1) })

game.schedule(tiempo * 5, { saltando = false })
game.schedule(tiempo * 5, { self.caer() })
method gravedad() {
if (position.y() > 2 && !saltando) {
// Está cayendo o saltando
position.goDown(1)
suspendido = true
}
else if (!saltando) {
// Ya cayó
game.removeTickEvent("gravedad")
suspendido = false
caerActivo = false
}
}

method caer() {
if(!caerActivo && suspendido){
game.onTick(100, "gravedad", {self.gravedad()})
caerActivo = true
}
}
}

method gravedad() {
if (position.y() > 2 && !saltando) {
// Está cayendo o saltando
position.goDown(1)
suspendido = true

// ================================== BATALLA ==================================

var property vidas = 5
var inmunidadActiva = false
var property puedeAtacar = false

method perderVida() {
vidas = (vidas-1).max(0)
game.say(self, "Ay!")

self.obtenerInmunidad(300)

if(vidas < 1)
self.derrota()
}
else if (!saltando) {
// Ya cayó
game.removeTickEvent("gravedad")
suspendido = false
caerActivo = false

method obtenerInmunidad(duracion) {
inmunidadActiva = true
game.schedule(100, {inmunidadActiva = false})
}
}

method caer() {
if(!caerActivo && suspendido){
game.onTick(100, "gravedad", {self.gravedad()})
caerActivo = true
method derrota() {
game.say(self, "Ya perdí :(")
}
}

method atacar() {

}
method atacar() {
// Acá habría una animación, por ejemplo
}

method posicionDeAtaque() {
movimientoActivo = false
position = new PositionMejorada (x=17, y=2)
}
method posicionDeAtaque() {
movimientoActivo = false
position = new PositionMejorada (x=17, y=2)
}

method activarMovimiento() {movimientoActivo = true}
method activarMovimiento() {
movimientoActivo = true
}
}

0 comments on commit 1b26285

Please sign in to comment.