Skip to content

Commit

Permalink
Logica añadida de multiples elevadores
Browse files Browse the repository at this point in the history
  • Loading branch information
Valentin-Sosa committed Nov 6, 2024
1 parent ff1c8c9 commit d2aa954
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 40 deletions.
Binary file added assets/ganar.ogg
Binary file not shown.
Binary file added assets/puerta.ogg
Binary file not shown.
92 changes: 69 additions & 23 deletions elementos.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class Elemento
class Elevador
{
const posicionInicial
const offset
var property activado = false
method image() = "elevador2.png"
method puedeSerAtravesado() = false
Expand All @@ -28,7 +29,7 @@ class Elevador
method position()
{
if(activado){
return posicionInicial.down(1)
return posicionInicial.down(offset)
}

return posicionInicial
Expand All @@ -40,45 +41,87 @@ class Elevador
}
}

const elevadorPorBoton = new Elevador (posicionInicial = game.at(14, 9))

const elevadorPorPalanca = new Elevador (posicionInicial = game.at(0, 6))

class Boton inherits Elemento
class ElevadorPorBoton inherits Elevador
{
method image() = "boton2.png"
const botonAsociado1
const botonAsociado2

method estaPresionado()
method chequearSusBotones()
{
const posibles = game.getObjectsIn(self.position())
return posibles.any({objeto => objeto.puedePresionarBoton()})
if(botonAsociado1.estaPresionado() || botonAsociado2.estaPresionado()) self.cambiarEstado(true)
else self.cambiarEstado(false)
}

method agregarseAlMapa()
{
game.addVisual(self)
game.addVisual(botonAsociado1)
game.addVisual(botonAsociado2)
}
}

object botonAbajo inherits Boton (position = game.at(5, 7))
class ElevadorPorPalanca inherits Elevador
{
method chequearBoton()
const palancaAsociada

method chequearSuPalanca()
{
if(palancaAsociada.estaActiva()) self.cambiarEstado(true)
else self.cambiarEstado(false)
}

method agregarseAlMapa()
{
if(self.estaPresionado() || botonArriba.estaPresionado()) elevadorPorBoton.cambiarEstado(true)
else elevadorPorBoton.cambiarEstado(false)
game.addVisual(self)
if(!game.hasVisual(palancaAsociada))game.addVisual(palancaAsociada)
}
}
object botonArriba inherits Boton (position = game.at(10, 10))
class Boton inherits Elemento
{
}
method image() = "boton2.png"

object palanca inherits Elemento (position = game.at(3, 4))
method estaPresionado()
{
const posibles = game.getObjectsIn(self.position())
return posibles.any({objeto => objeto.puedePresionarBoton()})
}
}
class Palanca inherits Elemento
{
var property estaActiva = false
method image() = "palanca.png"

override method puedeSerPresionado() = true

method activar() {
if(elevadorPorPalanca.activado()) elevadorPorPalanca.cambiarEstado(false)
else elevadorPorPalanca.cambiarEstado(true)
estaActiva = !estaActiva
game.sound("activar.ogg").play()
}
}

const primerElevadorPorBoton = new ElevadorPorBoton (posicionInicial = game.at(14, 9),
botonAsociado1 = new Boton (position = game.at(5, 7)),
botonAsociado2 = new Boton (position = game.at(10, 10)),
offset = 1)
const segundoElevadorPorBoton = new ElevadorPorBoton(posicionInicial = game.at(8,14),
botonAsociado1 = new Boton (position = game.at(4, 14)),
botonAsociado2 = new Boton (position = game.at(12, 14)),
offset = -1)

const primerElevadorPorPalanca = new ElevadorPorPalanca (posicionInicial = game.at(0, 6),
palancaAsociada = new Palanca (position = game.at(3, 4)),
offset = 1)
const palancaMultiple = new Palanca(position = game.at(6,16))

const segundoElevadorPorPalanca = new ElevadorPorPalanca (posicionInicial = game.at(9, 17),
palancaAsociada = palancaMultiple,
offset = 1)
const terceroElevadorPorPalanca = new ElevadorPorPalanca (posicionInicial = game.at(7, 18),
palancaAsociada = palancaMultiple,
offset = 1)
const cuartoElevadorPorPalanca = new ElevadorPorPalanca (posicionInicial = game.at(5, 19),
palancaAsociada = palancaMultiple,
offset = 1)
object cubo inherits Elemento (position = game.at(6, 10))
{
method image() = "cubo.png"
Expand Down Expand Up @@ -119,11 +162,14 @@ class Puerta inherits Elemento

method chequearPuerta()
{
if(self.hayAlguienEnPuerta()) estaAbierta = true
else estaAbierta = false
if(self.hayAlguienEnPuerta() != estaAbierta)
{
estaAbierta = self.hayAlguienEnPuerta()
game.sound("puerta.ogg").play()
}
}
}

const puertaFuego = new Puerta(position = game.at(12, 14), imagenCerrada = "puertaFuego.png", condicion = {p => p.puedeAbrirPuertaFuego()})
const puertaFuego = new Puerta(position = game.at(3, 19), imagenCerrada = "puertaFuego.png", condicion = {p => p.puedeAbrirPuertaFuego()})

const puertaAgua = new Puerta (position = game.at(8, 14), imagenCerrada = "puertaAgua.png", condicion = {p => p.puedeAbrirPuertaAgua()})
const puertaAgua = new Puerta (position = game.at(1, 19), imagenCerrada = "puertaAgua.png", condicion = {p => p.puedeAbrirPuertaAgua()})
12 changes: 6 additions & 6 deletions main.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ program FireboyAndWatergirl {

game.whenCollideDo(fireboy, {elemento => elemento.tratarColision(fireboy)})
game.whenCollideDo(watergirl, {elemento => elemento.tratarColision(watergirl)})
game.onTick(1000, "Chequear boton", {botonAbajo.chequearBoton()})
game.onTick(1000, "Chequear puerta agua", {puertaAgua.chequearPuerta()})
game.onTick(1000, "Chequear puerta fuego", {puertaFuego.chequearPuerta()})
game.onTick(200, "Chequear elevadores por boton", {primerElevadorPorBoton.chequearSusBotones() segundoElevadorPorBoton.chequearSusBotones()})
game.onTick(1000, "Chequear elevadores por palanca", {primerElevadorPorPalanca.chequearSuPalanca()
segundoElevadorPorPalanca.chequearSuPalanca()
terceroElevadorPorPalanca.chequearSuPalanca()
cuartoElevadorPorPalanca.chequearSuPalanca()})
game.onTick(1000, "Chequear puertas", {puertaAgua.chequearPuerta() puertaFuego.chequearPuerta()})
game.onTick(1000, "Chequear victoria", {if(juego.condicionesGanadoras()) juego.ganaste()})
game.onTick(1000, "Chequear derrota", {if(juego.condicionesPerdedoras()) juego.perdiste()})



const soundtrack = game.sound("soundtrack.ogg")
soundtrack.shouldLoop(true)
game.schedule(500, { soundtrack.play()} )

Expand Down
34 changes: 24 additions & 10 deletions mapa.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ object mapa

method agregarElementos()
{
game.addVisual(botonAbajo)
game.addVisual(botonArriba)
game.addVisual(palanca)
game.addVisual(elevadorPorBoton)
game.addVisual(elevadorPorPalanca)
primerElevadorPorBoton.agregarseAlMapa()
segundoElevadorPorBoton.agregarseAlMapa()
primerElevadorPorPalanca.agregarseAlMapa()
segundoElevadorPorPalanca.agregarseAlMapa()
terceroElevadorPorPalanca.agregarseAlMapa()
cuartoElevadorPorPalanca.agregarseAlMapa()
game.addVisual(puertaAgua)
game.addVisual(puertaFuego)
game.addVisual(cubo)
Expand All @@ -35,6 +36,10 @@ object mapa
self.crearBloques(9, 0, 12, fabricaBloqueTierra)
self.crearBloques(12, 0, 1, fabricaBloqueTierra)
self.crearBloques(13, 3, 14, fabricaBloqueTierra)
self.crearBloques(15, 3, 7, fabricaBloqueTierra)
self.crearBloques(15, 9, 12, fabricaBloqueTierra)
self.crearBloques(14, 14, 14, fabricaBloqueTierra)
self.crearBloques(18, 0, 4, fabricaBloqueTierra)
}

method crearBloquesEspeciales()
Expand All @@ -43,13 +48,13 @@ object mapa
self.crearBloques(0, 9, 10, fabricaBloqueAgua)
self.crearBloques(3, 8, 9, fabricaBloqueAcido)
self.crearBloques(5, 7, 10, fabricaBloquePinchos)

self.crearBloques(15, 0, 2, fabricaBloquePinchos)
}

method inciar()
{
game.title("Fireboy and Watergirl")
game.height(16)
game.height(20)
game.width(15)
game.cellSize(50)
game.boardGround("bg.png")
Expand Down Expand Up @@ -139,18 +144,23 @@ object juego
{
var cartelActual = cartelGanador
var unCartelActivo = false
const elementos = [elevadorPorBoton, elevadorPorPalanca, fireboy, watergirl, cubo]
const elementos = [primerElevadorPorBoton, segundoElevadorPorBoton, primerElevadorPorPalanca,segundoElevadorPorPalanca,
terceroElevadorPorPalanca,cuartoElevadorPorPalanca, fireboy, watergirl, cubo]
method ganaste()
{
game.addVisual(cartelGanador)
cartelActual = cartelGanador
soundtrack.pause()
game.sound("ganar.ogg").play()
unCartelActivo = true
}

method perdiste()
{
game.addVisual(cartelPerdedor)
cartelActual = cartelPerdedor
soundtrack.pause()
game.sound("gameover.ogg").play()
unCartelActivo = true
}

Expand All @@ -161,6 +171,7 @@ object juego
elementos.forEach({e => e.reiniciar()})
unCartelActivo = false
game.removeVisual(cartelActual)
soundtrack.resume()
}
}

Expand All @@ -171,11 +182,14 @@ object juego
object cartelGanador
{
method image() = "ganaste2.jpg"
var property position = game.at(3,4)
var property position = game.at(3,7)
}

object cartelPerdedor
{
method image() = "perdiste3.jpg"
var property position = game.at(3,4)
var property position = game.at(3,7)
}

const soundtrack = game.sound("soundtrack.ogg")

2 changes: 1 addition & 1 deletion personajes.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class Personaje {
return posiblesObjetos.all({ objeto => objeto.puedeSerAtravesado() }) && self.dentroDeLosLimites(posicion)
}

method dentroDeLosLimites(posicion) = posicion.x().between(0, 14) && posicion.y().between(0, 15)
method dentroDeLosLimites(posicion) = posicion.x().between(0, 14) && posicion.y().between(0, 19)

method morir(){
if(!estaMuerto) game.sound("morir.ogg").play()
Expand Down

0 comments on commit d2aa954

Please sign in to comment.