Skip to content

Commit

Permalink
Movimientos modificados
Browse files Browse the repository at this point in the history
  • Loading branch information
AscarlatoUTN committed Nov 6, 2024
1 parent a0605ab commit d6f5200
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 66 deletions.
148 changes: 90 additions & 58 deletions characters.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ class Character {
var property position
var property oldPosition

const unidadMovimiento = 1

const nivelActual
const property nivelActual
var property murioPersonaje = false

var plataformaAdherida = null

var jumping = false
var property jumping = false

const unidadMovimiento = 1

// -------------------- Métodos

Expand All @@ -37,64 +37,27 @@ class Character {

// Movimientos

method moveLeft() {
method move (direction){

self.plataformaDesadherida()

const nuevaPosicion = position.left(unidadMovimiento)

if(!nivelActual.estaFueraDelMarco(nuevaPosicion) && self.puedeDesplazarse(nuevaPosicion))
position.goLeft(unidadMovimiento)
oldPosition = new MutablePosition(x = self.position().x() + 1, y = self.position().y())
}

method moveRight() {

self.plataformaDesadherida()

const nuevaPosicion = position.right(unidadMovimiento)

if (!nivelActual.estaFueraDelMarco(nuevaPosicion) && self.puedeDesplazarse(nuevaPosicion))
position.goRight(unidadMovimiento)
oldPosition = new MutablePosition(x = self.position().x() - unidadMovimiento, y = self.position().y())
}

method moveUp() {

const nuevaPosicion = position.up(unidadMovimiento)

if(!nivelActual.estaFueraDelMarco(nuevaPosicion) && self.puedeDesplazarse(nuevaPosicion))
position.goUp(unidadMovimiento)
oldPosition = new MutablePosition(x = self.position().x(), y = self.position().y() - unidadMovimiento)
}

method moveDown() {

const nuevaPosicion = position.down(unidadMovimiento)

const nuevaPosicion = direction.calcularNuevaPosicion(self)

if (nivelActual.esZonaProhibida(self, nuevaPosicion) && nivelActual.todosVivos()) {
self.die()
}

if(direction.puedeMoverse(self, nuevaPosicion))
direction.actualizarPosicion(self, nuevaPosicion)

else if(!nivelActual.estaFueraDelMarco(nuevaPosicion) && self.puedeAtravesar(nuevaPosicion)){
position.goDown(unidadMovimiento)
oldPosition = new MutablePosition(x = self.position().x(), y = self.position().y() + unidadMovimiento)
}
else {
// SETEAMOS FLAG SALTANDO = FALSE (para evitar doble salto)
jumping = false
}
}

method jump() {

self.plataformaDesadherida()
const nuevaPosicion = position.down(unidadMovimiento)

if (!jumping && (nivelActual.estaFueraDelMarco(nuevaPosicion) || !self.puedeAtravesar(nuevaPosicion))){
if (!jumping && (self.nivelActual().estaFueraDelMarco(nuevaPosicion) || !self.puedeAtravesar(nuevaPosicion))){
self.desactivarGravedad()
jumping = true
[150, 300, 450, 600].forEach { num => game.schedule(num, { self.moveUp() }) }
[150, 300, 450, 600].forEach { num => game.schedule(num, { self.move(up) }) }
game.schedule(800, {self.gravedad()})
}
}
Expand All @@ -104,7 +67,7 @@ class Character {
method eventoGravedad ()

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

method desactivarGravedad (){
Expand All @@ -117,11 +80,15 @@ class Character {
game.onCollideDo(self, {element => element.colision(self)})
}

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

method puedeDesplazarse(nuevaPosicion) = self.puedeAtravesar(nuevaPosicion) || self.puedeColisionar(nuevaPosicion)

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

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

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

// Puntos y Mecanica del Juego

Expand All @@ -138,6 +105,7 @@ class Character {
game.schedule(3000, {self.murioPersonaje(false)}) // Reiniciamos el flag de muerte
}


// Con Elementos

method moverALaPar(plataforma) {
Expand Down Expand Up @@ -166,8 +134,8 @@ class Fireboy inherits Character {
override method eventoGravedad () = "F_Gravedad"

override method setupControls(){
keyboard.left().onPressDo ({ self.moveLeft() })
keyboard.right().onPressDo ({ self.moveRight() })
keyboard.left().onPressDo ({ self.move(left) })
keyboard.right().onPressDo ({ self.move(right) })
keyboard.up().onPressDo ({ self.jump() })
}
}
Expand All @@ -179,8 +147,8 @@ class Watergirl inherits Character {
override method image() = "P_Watergirl.png"

override method setupControls(){
keyboard.a().onPressDo ({ self.moveLeft() })
keyboard.d().onPressDo ({ self.moveRight() })
keyboard.a().onPressDo ({ self.move(left) })
keyboard.d().onPressDo ({ self.move(right) })
keyboard.w().onPressDo ({ self.jump() })
}

Expand All @@ -191,4 +159,68 @@ object fuego {}

object agua {}

object acido {}
object acido {}

object left {

method calcularNuevaPosicion(character) = character.position().left(1)

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

method actualizarPosicion(character, nuevaPosicion){
character.position().goLeft(1)
character.oldPosition(new MutablePosition(x = character.position().x() + 1, y = character.position().y()))
}
}

object right {

method calcularNuevaPosicion(character) = character.position().right(1)

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

method actualizarPosicion(character, nuevaPosicion){
character.position().goRight(1)
character.oldPosition(new MutablePosition(x = character.position().x() - 1, y = character.position().y()))
}
}

object up {

method calcularNuevaPosicion(character) = character.position().up(1)

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

method actualizarPosicion(character, nuevaPosicion){
character.position().goUp(1)
character.oldPosition(new MutablePosition(x = character.position().x(), y = character.position().y() - 1))
}
}

object down {

method puedeMoverse(character, nuevaPosicion) = true

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

method actualizarPosicion(character, nuevaPosicion) {

if (character.nivelActual().esZonaProhibida(self, nuevaPosicion) && character.nivelActual().todosVivos()) {

character.die()
}
else if(character.estaDentroDelMarco(nuevaPosicion) && character.puedeAtravesar(nuevaPosicion)){

character.position().goDown(1)
character.oldPosition(new MutablePosition(x = character.position().x(), y = character.position().y() + 1))
}
else{

// SETEAMOS FLAG SALTANDO = FALSE (para evitar doble salto)
character.jumping(false)
}


}

}
10 changes: 6 additions & 4 deletions config.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ object settings {

// ---------------------- Métodos

const cantNiveles = 2
const niveles = [level1, level2]
const cantNiveles = niveles.size()

const property bordeJuego = [] // Guardamos todos los bordes
const property bordeJuego = [] //Guardamos todos los bordes

var nivelActual = 0

Expand Down Expand Up @@ -56,7 +56,7 @@ object settings {
game.addVisual(finJuegoCartel)
game.removeVisual(niveles.get(nivelActual - 1))
game.schedule(4000, {game.removeVisual(finJuegoCartel)})
nivelActual = 0 // empezamos los niveles de 0
nivelActual = 0 //empezamos los niveles de 0
}

method startGame(){
Expand Down Expand Up @@ -122,6 +122,8 @@ class Level {

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

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

// Mecanica de los Personajes

method setupCharacters() {
Expand All @@ -146,7 +148,7 @@ class Level {
elementosNivel.forEach({x=> game.removeVisual(x)})
}

// Para que no se pueda morir el otro personaje cuando ya se murio uno
//Para que no se pueda morir el otro personaje cuando ya se murio uno
method todosVivos() = !fireboy.murioPersonaje() && !watergirl.murioPersonaje()

// Métodos Sobrescritos en los Niveles
Expand Down
2 changes: 0 additions & 2 deletions elements.wlk
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import characters.*
import config.*
import level_1.*
import level_2.*
import visualCarteles.*


Expand Down
4 changes: 2 additions & 2 deletions pruebas.wtest
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ describe "Zonas Prohibidas" {
nivelActual = level1)

fireboy.setPosition(2, 1)
fireboy.moveDown()
fireboy.move(down)
assert.that(fireboy.murioPersonaje())}

test "Fireboy no muere al moverse a posiciones no peligrosas" {
Expand All @@ -81,7 +81,7 @@ describe "Zonas Prohibidas" {
nivelActual = 0)

fireboy.setPosition(1, 1)
fireboy.moveRight()
fireboy.move(right)
assert.notThat(fireboy.murioPersonaje())
}
}
Expand Down

0 comments on commit d6f5200

Please sign in to comment.