Skip to content

Commit

Permalink
cambios en las plataformas
Browse files Browse the repository at this point in the history
  • Loading branch information
elin-winter committed Nov 12, 2024
1 parent 1f6d96f commit 22b7282
Show file tree
Hide file tree
Showing 7 changed files with 165 additions and 172 deletions.
96 changes: 21 additions & 75 deletions characters.wlk
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import config.*
import visualCarteles.*
import directions.*

// -------------------------------- Personajes
// ------------------ Superclase
Expand Down Expand Up @@ -27,18 +28,19 @@ class Character {
method setupControls()

method eventoGravedad()

// Generales

method esColisionable() = false // Generales
method esColisionable() = false

method esAtravesable() = true

method setPosition(charPos) {
position = charPos
}

method colision(personaje) {}
method colision(personaje) {} // Para que no genere error si colisionan entre personajes

// Para que no genere error si colisionan entre personajes
// Movimientos
method move(direction) {
self.plataformaDesadherida()
Expand All @@ -64,15 +66,15 @@ class Character {
}
}

method puedeSaltar(
nuevaPosicion
) = (!jumping) && (settings.objNivelActual().estaFueraDelMarco(
nuevaPosicion
) || (!self.puedeAtravesar(nuevaPosicion)))
method puedeSaltar(nuevaPosicion) =
(!jumping) &&
(settings.objNivelActual().estaFueraDelMarco(nuevaPosicion) ||
(!self.puedeAtravesar(nuevaPosicion)))

// Gravedad

method gravedad() {
game.onTick(250, self.eventoGravedad(), { self.move(down) })
game.onTick(250, self.eventoGravedad(), { self.move(downCharacter) })
}

method desactivarGravedad() {
Expand All @@ -85,21 +87,19 @@ class Character {
}

// Control movimiento
method puedeDesplazarse(nuevaPosicion) = self.puedeAtravesar(
nuevaPosicion
) || self.puedeColisionar(nuevaPosicion)
method puedeDesplazarse(nuevaPosicion) =
self.puedeAtravesar(nuevaPosicion) || self.puedeColisionar(nuevaPosicion)

method puedeAtravesar(nuevaPosicion) = game.getObjectsIn(nuevaPosicion).all(
{ obj => obj.esAtravesable() }
method puedeAtravesar(nuevaPosicion) =
game.getObjectsIn(nuevaPosicion).all({ obj => obj.esAtravesable() }
)

method puedeColisionar(nuevaPosicion) = game.getObjectsIn(nuevaPosicion).all(
{ obj => obj.esColisionable() }
method puedeColisionar(nuevaPosicion) =
game.getObjectsIn(nuevaPosicion).all({ obj => obj.esColisionable() }
)

method estaDentroDelMarco(
nuevaPosicion
) = !settings.objNivelActual().estaFueraDelMarco(nuevaPosicion)
method estaDentroDelMarco(nuevaPosicion) = !settings.objNivelActual().estaFueraDelMarco(nuevaPosicion)

// Muerte de personaje

method die() {
Expand All @@ -116,6 +116,7 @@ class Character {
}

// Mecanica con Plataforma

method moverALaPar(plataforma) {
plataformaAdherida = plataforma
}
Expand All @@ -129,7 +130,6 @@ class Character {
}

method colisionEspecial(objeto) {
// SI HAY ALGO MEJOR, CAMBIAR
objeto.colisionEspecial(self)
}
} // ------------------ Subclases
Expand Down Expand Up @@ -160,62 +160,8 @@ class Watergirl inherits Character {
}

override method eventoGravedad() = "W_Gravedad"
} // -------------------------------- Direcciones

class Direction {
const unidadMovimiento = 1

method puedeMoverse(character, nuevaPosicion) = character.estaDentroDelMarco(nuevaPosicion) && character.puedeDesplazarse(nuevaPosicion)

method calcularNuevaPosicion(personaje)

method actualizarPosicion(personaje, nuevaPosicion)
}

object left inherits Direction {
override method calcularNuevaPosicion(character) = character.position().left(unidadMovimiento)

override method actualizarPosicion(character, nuevaPosicion) {
character.position().goLeft(1)
}
}

object right inherits Direction {
override method calcularNuevaPosicion(character) = character.position().right(1)

override method actualizarPosicion(character, nuevaPosicion) {
character.position().goRight(1)
}
}

object up inherits Direction {
override method calcularNuevaPosicion(character) = character.position().up(1)

override method actualizarPosicion(character, nuevaPosicion) {
character.position().goUp(1)
}
}

object down inherits Direction {
override method puedeMoverse(character, nuevaPosicion) = true

override method calcularNuevaPosicion(character) = character.position().down(1)

override method actualizarPosicion(character, nuevaPosicion) {

self.listaCharcos().anyOne().puedeMorirPersonaje(character, nuevaPosicion) //obtenemos un charco random ya que el control de si puede morir o no esta en el charco

if (self.posicionValida(character, nuevaPosicion)) {
character.position().goDown(1)
} else {
character.jumping(false) // evitar doble salto
}
}

method posicionValida(character, nuevaPosicion) = character.estaDentroDelMarco(nuevaPosicion) && character.puedeAtravesar(nuevaPosicion)

method listaCharcos() = settings.objNivelActual().charcos()
}

// -------------------------------- Tipos

object fuego {}
Expand Down
24 changes: 12 additions & 12 deletions config.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import elements.*
import level_1.*
import level_2.*
import visualCarteles.*
import directions.*


////////////////////////////////// CONFIGURACION GENERAL
Expand Down Expand Up @@ -33,15 +34,6 @@ object settings {
game.start()
}

// method newLevel(){
// nivelActual1 =new Nivel(
//
//
//
//
// )
// }

method initLimitesJuego (){
bordeJuego.add(new Zona (xMin = 0, xMax = 38, yMin = 0, yMax = 0 ))
bordeJuego.add(new Zona (xMin = 0, xMax = 0, yMin = 1, yMax = 27 ))
Expand All @@ -62,7 +54,6 @@ object settings {

method pasarSgteNivel(){


niveles.get(nivelActual).cleanVisuals()
game.sound("S_nivel_pasado.mp3").play()
nivelActual += 1
Expand All @@ -79,7 +70,7 @@ object settings {
}

method finDeJuego () {
nivelesInicializados = true //Una vez que finalizamos el juego, ya no hay que volver a crear todos los elementos, solo hacemos addVisual y removeVisual
nivelesInicializados = true // Con juego finalizado, no se vuelven a crear todos los elems
game.addVisual(finJuegoCartel)
game.removeVisual(niveles.get(nivelActual - 1))
game.schedule(4000, {game.removeVisual(finJuegoCartel)})
Expand All @@ -100,6 +91,14 @@ class Level {
const elementosNivel = [] // Lista de elementos de cada nivel
const bordeJuego = [] // Bordes del juego

const movePlatMoviVertical = up
const moveBackPlatMoviVertical = down
const movePlatMoviHorizontal = left
const moveBackPlatMoviHorizontal = right
const imagePlatVertical = "E_vertical_gate2.png"
const imagePlatHorizontal = "E_horizontal_gate.png"
const imagePlatHorizontalLong = "E_horizontal_gate_long.png"

// Personajes
const fireboy = new Fireboy(
position = self.positionF(),
Expand Down Expand Up @@ -141,7 +140,8 @@ class Level {

method estaDentroDelMarco (nuevaPosicion) = !self.estaFueraDelMarco(nuevaPosicion)

method esZonaProhibida(personaje, nuevaPosicion) = charcos.any({charco => charco.posicionProhibida(nuevaPosicion) && !charco.mismoTipo(personaje)})
method esZonaProhibida(personaje, nuevaPosicion) =
charcos.any({charco => charco.posicionProhibida(nuevaPosicion) && !charco.mismoTipo(personaje)})

// --- Mecanica de los Personajes

Expand Down
83 changes: 83 additions & 0 deletions directions.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import characters.*
import config.*
import visualCarteles.*


// -------------------------------- Direcciones

class Direction {
const unidadMovimiento = 1

method puedeMoverse(character, nuevaPosicion) =
character.estaDentroDelMarco(nuevaPosicion) && character.puedeDesplazarse(nuevaPosicion)

method calcularNuevaPosicion(personaje)

method actualizarPosicion(personaje, nuevaPosicion)
}

object left inherits Direction {
override method calcularNuevaPosicion(character) =
character.position().left(unidadMovimiento)

override method actualizarPosicion(character, _) {
character.position().goLeft(unidadMovimiento)
}
}

object right inherits Direction {
override method calcularNuevaPosicion(character) =
character.position().right(unidadMovimiento)

override method actualizarPosicion(character, _) {
character.position().goRight(unidadMovimiento)
}
}

object up inherits Direction {
override method calcularNuevaPosicion(character) =
character.position().up(unidadMovimiento)

override method actualizarPosicion(character, _) {
character.position().goUp(unidadMovimiento)
}
}

object downCharacter inherits Direction {
override method puedeMoverse(character, nuevaPosicion) = true

override method calcularNuevaPosicion(character) =
character.position().down(unidadMovimiento)

override method actualizarPosicion(character, nuevaPosicion) {

self.listaCharcos().anyOne().puedeMorirPersonaje(character, nuevaPosicion) //obtenemos un charco random ya que el control de si puede morir o no esta en el charco

if (self.posicionValida(character, nuevaPosicion)) {
character.position().goDown(unidadMovimiento)
} else {
character.jumping(false) // evitar doble salto
}

return
}

method posicionValida(character, nuevaPosicion) =
character.estaDentroDelMarco(nuevaPosicion) && character.puedeAtravesar(nuevaPosicion)

method listaCharcos() = settings.objNivelActual().charcos()
}

object down inherits Direction {
override method puedeMoverse(character, nuevaPosicion) = true

override method calcularNuevaPosicion(character) =
character.position().down(unidadMovimiento)

override method actualizarPosicion(character, _) {
character.position().goDown(unidadMovimiento)
}

}


Loading

0 comments on commit 22b7282

Please sign in to comment.