Skip to content

Commit

Permalink
Avancess
Browse files Browse the repository at this point in the history
Co-authored-by: Luciano Ezequiel Tapia <[email protected]>
Co-authored-by: Bruno <[email protected]>
  • Loading branch information
3 people committed Nov 6, 2024
1 parent a1e62f2 commit a09a03c
Show file tree
Hide file tree
Showing 13 changed files with 130 additions and 32 deletions.
Binary file added assets/2vidas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/3vidas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/4vidas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/5vidas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/stock_fondo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/stock_fondo2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/vidaLlena.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/vidaVacia.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
38 changes: 24 additions & 14 deletions entorno.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -29,49 +29,59 @@ const cartelAtaque = new Visual (position = new Position(x=17, y=20), image = "p
// =============================================== BOSSFIGHTS ===============================================
class BossFight {
const property jefe
var duracionTurnoJefe = 6000 // default puesto por las dudas
var jefeEnBatalla = false
var turnoMorcilla = true

method iniciarPelea() {
if (!jefe.derrotado()) {
game.boardGround("arena_de_jefe.png")
entorno.limpiarEntorno()
game.addVisual(morcilla)
morcilla.enBatalla(true)
jefeEnBatalla = true

jefe.posicionBatalla()
game.addVisual(jefe)

self.habilitarAtaque()
keyboard.e().onPressDo({self.gestionarAtaque()})
}
}

method habilitarAtaque() {
morcilla.posicionDeAtaque()
game.addVisual(cartelAtaque)
keyboard.e().onPressDo({self.gestionarAtaque()})
turnoMorcilla = true
}

method gestionarAtaque() {
game.removeVisual(cartelAtaque)

const duracionCinematica = 2000
morcilla.atacar()
jefe.disminuirVida()

if(jefe.derrotado())
self.finalizarBatalla()
else
game.schedule(duracionCinematica, { self.etapaDefensa() })
if(jefeEnBatalla && turnoMorcilla){

turnoMorcilla = false
game.removeVisual(cartelAtaque)

const duracionCinematica = 2000
morcilla.atacar()
jefe.disminuirVida()

if(jefe.derrotado())
self.finalizarBatalla()
else
game.schedule(duracionCinematica, { self.etapaDefensa() })
}
}

method etapaDefensa() {
morcilla.activarMovimiento()

const duracionTurnoJefe = jefe.ataque()
game.schedule(duracionTurnoJefe, { self.habilitarAtaque() })
duracionTurnoJefe = jefe.ataque()
game.schedule(duracionTurnoJefe+100, { self.habilitarAtaque() })
}

method finalizarBatalla() {
game.boardGround("stock_fondo.png")
jefeEnBatalla = false
game.boardGround("stock_fondo2.png")
entorno.limpiarEntorno()
game.addVisual(morcilla)
morcilla.enBatalla(false)
Expand Down
41 changes: 38 additions & 3 deletions jefe.wlk
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import entorno.*
import wollok.game.*
import morcilla.*
import general.*
Expand All @@ -6,9 +7,9 @@ import proyectiles.*
class JefeInteractuable{
var property position
const property image
var property vida = 3
var property vida = 5

const posInicial = position
const posInicial = position

method posicionPrevia() {
position = posInicial
Expand Down Expand Up @@ -64,5 +65,39 @@ class ProyectilJefe1 inherits Proyectiles {
method image() = "ataque_prueba.png"
}

const jefeDePrueba = new JefeDePrueba (position = new PositionMejorada(x=10, y=2), image = "celda_roja.png")
const jefeDePrueba = new JefeDePrueba (position = new PositionMejorada(x=3, y=2), image = "celda_roja.png")

class JefeGato inherits JefeInteractuable {

method ataque() {
const opcion = (0.randomUpTo(2)).roundUp()

//if(opcion == 1)
return self.ataque1()
//else if(opcion == 2)
//return self.ataque2()
//else
// return 0
}

method ataque1() {
const proyectilDR1 = new ProyectilJefe1(position = new PositionMejorada(x = 0, y = 30), id = "DR1")
const proyectilDL1 = new ProyectilJefe1(position = new PositionMejorada(x = 32, y = 27), id = "DL1")

game.schedule(100, {proyectilDR1.direccionDiagonalAbajoDerecha(100)})
game.schedule(300, {proyectilDL1.direccionDiagonalAbajoIzquierda(100)})

return 6000
}

method ataque2() {
const proyectilDR1 = new ProyectilJefe1(position = new PositionMejorada(x = 0, y = 27), id = "DR1")
const proyectilDL1 = new ProyectilJefe1(position = new PositionMejorada(x = 32, y = 32), id = "DL1")

game.schedule(300, {proyectilDR1.direccionDiagonalAbajoDerecha(100)})
game.schedule(100, {proyectilDL1.direccionDiagonalAbajoIzquierda(50)})

return 6000
}
}
const jefeGato = new JefeGato (position = new PositionMejorada(x=27, y=2), image = "celda_gris.png")
9 changes: 8 additions & 1 deletion main.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,28 @@ import proyectiles.*

program MorcillaGame {
game.title("La Bizarra Aventura de MORCILLA")
game.boardGround("stock_fondo.jpg")
game.boardGround("stock_fondo2.jpg")
game.height(32)
game.width(33)
game.cellSize(100)

game.addVisual(jefeDePrueba)
game.addVisual(jefeGato)

game.addVisual(morcilla)
administradorVidas.definirVidas()

game.showAttributes(morcilla)
game.showAttributes(jefeGato)
game.showAttributes(jefeDePrueba)

// Mover a morcilla
keyboard.d().onPressDo({ morcilla.caminarDerecha(1) })
keyboard.a().onPressDo({ morcilla.caminarIzquierda(1) })
keyboard.space().onPressDo({ morcilla.saltar(1000) })

game.whenCollideDo(jefeDePrueba, {personaje => personaje.iniciarPeleaMorcilla(jefeDePrueba)})
game.whenCollideDo(jefeGato, {personaje => personaje.iniciarPeleaMorcilla(jefeGato)})

game.start()
}
54 changes: 49 additions & 5 deletions morcilla.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import entorno.*
import jefe.*

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

// ================================== MOVIMIENTO ==================================
Expand Down Expand Up @@ -84,9 +84,11 @@ object morcilla {

method iniciarPeleaMorcilla(jefe){
if(!enBatalla){ // Un pequeño problema es que una vez que se activa el method podés activar la pelea en cualquier momento
game.say(jefe, "Pulsa J para iniciar battalla")

keyboard.j().onPressDo({ (new BossFight(jefe = jefe)).iniciarPelea() })

self.desactivarMovimiento()
game.say(jefe, "Has llegado morcilla. Ahora nos vamos a agarrar")

game.schedule(2000, new BossFight(jefe = jefe).iniciarPelea())
}
}

Expand All @@ -95,6 +97,8 @@ object morcilla {
vidas = (vidas-1).max(0)
game.say(self, "Ay!")

administradorVidas.actualizarVida(vidas)

self.obtenerInmunidad(300)

if(vidas < 1)
Expand All @@ -119,11 +123,51 @@ object morcilla {
}

method posicionDeAtaque() {
self.desactivarMovimiento()
//position = new PositionMejorada (x=15, y=2)
}

method desactivarMovimiento() {
movimientoActivo = false
position = new PositionMejorada (x=15, y=2)
}

method activarMovimiento() {
movimientoActivo = true
}
}

class VidaMorcilla {
var property image = "vidaLlena.png"
var property position
const id

method id() = id

method perderVida() {
image = "vidaVacia.png"
}

method tenerVida() {
image = "vidaLlena.png"
}
}

object administradorVidas {
const vidaMaximaMorcilla = morcilla.vidas()

const vida1 = new VidaMorcilla(position = new PositionMejorada(x = 1, y = 31), id = 1)
const vida2 = new VidaMorcilla(position = new PositionMejorada(x = 3, y = 31), id = 2)
const vida3 = new VidaMorcilla(position = new PositionMejorada(x = 5, y = 31), id = 3)
const vida4 = new VidaMorcilla(position = new PositionMejorada(x = 7, y = 31), id = 4)
const vida5 = new VidaMorcilla(position = new PositionMejorada(x = 9, y = 31), id = 5)

const vidas = [vida1, vida2, vida3, vida4, vida5]

method definirVidas() {
vidas.forEach({sprite => if(sprite.id() <= vidaMaximaMorcilla){game.addVisual(sprite)}})
}

method actualizarVida(vidaActual) {
vidas.forEach({sprite => if(sprite.id() > vidaActual){sprite.perderVida()}else{sprite.tenerVida()}})
}
}
20 changes: 11 additions & 9 deletions proyectiles.wlk
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import morcilla.*

class Proyectiles {
var property position
const id

method direccionIzquierda(velocidad) {
game.onCollideDo(self, {elemento => elemento.perderVida()})
game.onCollideDo(self, {elemento => if(elemento === morcilla){elemento.perderVida()}})
game.addVisual(self)
game.onTick(velocidad, "proyectilIzquierda" + id, {self.movimientoIzquierda(velocidad)})
}
Expand All @@ -18,7 +20,7 @@ class Proyectiles {
}

method direccionDerecha(velocidad) {
game.onCollideDo(self, {elemento => elemento.perderVida()})
game.onCollideDo(self, {elemento => if(elemento === morcilla){elemento.perderVida()}})
game.addVisual(self)
game.onTick(velocidad, "proyectilDerecha" + id, {self.movimientoDerecha(velocidad)})
}
Expand All @@ -33,14 +35,14 @@ class Proyectiles {
}

method direccionDiagonalAbajoDerecha(velocidad) {
game.onCollideDo(self, {elemento => elemento.perderVida()})
game.onCollideDo(self, {elemento => if(elemento === morcilla){elemento.perderVida()}})
game.addVisual(self)
game.onTick(velocidad, "proyectilDiagonalAbajoDerecha" + id, {self.movimientoDiagonalAbajoDerecha(velocidad)})
}

method movimientoDiagonalAbajoDerecha(velocidad) {
position.goRightMejorado(1, 30)
position.goDownMejorado(1, 40)
position.goDownMejorado(1, 0)
if(position.x() == 30)
{
game.removeVisual(self)
Expand All @@ -49,18 +51,18 @@ class Proyectiles {
}

method direccionDiagonalAbajoIzquierda(velocidad) {
game.onCollideDo(self, {elemento => elemento.perderVida()})
game.onCollideDo(self, {elemento => if(elemento === morcilla){elemento.perderVida()}})
game.addVisual(self)
game.onTick(velocidad, "proyectilDiagonalAbajoDerecha" + id, {self.movimientoDiagonalAbajoIzquierda(velocidad)})
}

method movimientoDiagonalAbajoIzquierda(velocidad) {
position.goLeftMejorado(1, 30)
position.goDownMejorado(1, 40)
if(position.x() == 30)
position.goLeftMejorado(1, 0)
position.goDownMejorado(1, 0)
if(position.x() == 0)
{
game.removeVisual(self)
game.removeTickEvent("proyectilDiagonalAbajoIzquierda" + id)
}
}
}
} // revisar proyectiles en diagonal

0 comments on commit a09a03c

Please sign in to comment.