diff --git a/comida.wlk b/comida.wlk index 3fa4b99..be146a9 100644 --- a/comida.wlk +++ b/comida.wlk @@ -39,6 +39,10 @@ class Comida{ tipoAvance.moverseAdelante(posicion) } + method moverseAtras(posicion){ + tipoAvance.moverseAtras(posicion) + } + } @@ -47,13 +51,31 @@ object aLaDerecha{ if(posicion.x() <= game.width() - 2 && posicion.x() + 1 <= game.width()) posicion.goRight(1) } + + method moverseAtras(posicion){ + if(posicion.x() >= 2 && posicion.x() - 1 >= 0) + posicion.goLeft(1) + } + } +object aLaIzquierda{ + method moverseAtras(posicion){ + if(posicion.x() <= game.width() - 2 && posicion.x() + 1 <= game.width()) + posicion.goRight(1) + } + + method moverseAdelante(posicion){ + if(posicion.x() >= 2 && posicion.x() - 1 >= 0) + posicion.goLeft(1) + } +} -const rosquilla = new Comida(nombre="rosquilla", puntos=5, velocidad=1) +//Rosquilla puntos = 5 +const rosquilla = new Comida(nombre="rosquilla", puntos=100, velocidad=1) const banana = new Comida(nombre="banana", puntos=-3, velocidad=-1) const plutonio = new Comida(nombre="plutonio", puntos=15, velocidad=1) -const cerveza = new Comida(nombre="cerveza", puntos=15, velocidad=-2) +const cerveza = new Comida(nombre="cerveza", puntos=15, velocidad=-2,tipoAvance=aLaIzquierda) const choripan = new Comida(nombre="choripan", puntos=7, velocidad=-1) const mate = new Comida(nombre="mate", puntos=20, velocidad=2) const te = new Comida(nombre="te", puntos=-50, velocidad=-1) diff --git a/homero.wlk b/homero.wlk index 8f62913..9f3995b 100644 --- a/homero.wlk +++ b/homero.wlk @@ -4,10 +4,12 @@ import niveles.* object homero{ var puntos = 0 - var velocidad = 2 + var velocidad = 1 const position = new MutablePosition(x=8, y=0) var ultimaComida = rosquilla + method velocidad() = velocidad + method ultimaComida(comida){ ultimaComida = comida } @@ -30,9 +32,7 @@ object homero{ } method moverseIzquierda(){ - - if(position.x() >= 0 && position.x() - velocidad >= 0) - position.goLeft(velocidad) + ultimaComida.moverseAtras(position) } method moverseDerecha(){ @@ -47,12 +47,9 @@ object homero{ method alterarVelocidad(nuevaVelocidad){ velocidad += nuevaVelocidad - velocidad = velocidad.max(2) } method puntos() = puntos - - method velocidad() = velocidad method image() = "homero-"+ ultimaComida.image() } diff --git a/niveles.wlk b/niveles.wlk index ff62d4d..93d543a 100644 --- a/niveles.wlk +++ b/niveles.wlk @@ -11,14 +11,16 @@ import fondos.* // No repetir nada de lógica. object juego { - var nivelActual = nivel1 + const nivelActual = nivel1 method verificarFinDeNivel(){ nivelActual.verificarFinDeNivel() } } -object nivel1 { +const nivel1 = new Nivel() + +class Nivel{ var estado = "inicio" method estado() = estado @@ -29,7 +31,7 @@ object nivel1 { method inicializarValores(){ homero.setPuntos(0) - homero.setVelocidad(2) + homero.setVelocidad(1) homero.ultimaComida(rosquilla) tiempo.setTimer(5*60) if(homero.position().x()>8){ @@ -54,19 +56,19 @@ object nivel1 { self.inicializarValores() game.start() + } - } - + method iniciarNivel(){ self.setEstado("jugando") game.removeVisual(mensajes) comidasNivel1.forEach({comida => game.addVisual(comida)}) - game.onTick(1700, "baja", {rosquilla.bajar()}) - game.onTick(1200, "baja", {banana.bajar()}) - game.onTick(700, "baja", {choripan.bajar()}) - game.onTick(1450, "baja", {cerveza.bajar()}) - game.onTick(950, "baja", {plutonio.bajar()}) + game.onTick(1700 + homero.velocidad(), "baja", {rosquilla.bajar()}) + game.onTick(1200 + homero.velocidad() , "baja", {banana.bajar()}) + game.onTick(700 + homero.velocidad() , "baja", {choripan.bajar()}) + game.onTick(1450 + homero.velocidad() , "baja", {cerveza.bajar()}) + game.onTick(950 + homero.velocidad() , "baja", {plutonio.bajar()}) keyboard.a().onPressDo({homero.moverseIzquierda()}) keyboard.d().onPressDo({homero.moverseDerecha()}) @@ -107,20 +109,11 @@ object nivel1 { } -//Estados nivel2 : espera,inicio, jugando, finalizado - -object nivel2{ - var estado = "espera" - - method setEstado(x){ - estado = x - } - - method estado() = estado +object nivel2 inherits Nivel(estado = "espera"){ - method inicializarValores(){ + override method inicializarValores(){ homero.setPuntos(0) - homero.setVelocidad(2) + homero.setVelocidad(1) tiempo.setTimer(5*60) if(homero.position().x()>8){ homero.position().goLeft(homero.position().x()-8) @@ -130,7 +123,7 @@ object nivel2{ comidasNivel1.forEach({comida => comida.position().goUp(18)}) } - method iniciarFondo(){ + override method iniciarFondo(){ game.title("Homero en El Obelisco") game.removeVisual(mensajeParaNivel2) @@ -144,25 +137,24 @@ object nivel2{ game.addVisual(tiempo) } - method iniciarNivel(){ + override method iniciarNivel(){ self.setEstado("jugando") game.onTick(1000, "restarSegundo", {tiempo.restarSegundo()}) game.onTick(1000, "finalizarNivel", {if((tiempo.timer() <= 0 || homero.puntos() >= 100) && self.estado()!="finalizado") self.finalizarNivel()}) game.removeVisual(mensajeParaNivel2) comidasNivel2.forEach({comida => game.addVisual(comida)}) - game.onTick(450, "baja", {mate.bajar()}) - game.onTick(700, "baja", {choripan.bajar()}) - game.onTick(1200, "baja", {banana.bajar()}) - game.onTick(950, "baja", {plutonio.bajar()}) - game.onTick(1450, "baja", {cerveza.bajar()}) - game.onTick(1700, "baja", {rosquilla.bajar()}) - game.onTick(1950, "baja", {te.bajar()}) - game.onTick(2200, "baja", {ensalada.bajar()}) - game.onTick(2450, "baja", {guiso.bajar()}) + game.onTick(450 + homero.velocidad(), "baja", {mate.bajar()}) + game.onTick(700 + homero.velocidad(), "baja", {choripan.bajar()}) + game.onTick(1200 + homero.velocidad(), "baja", {banana.bajar()}) + game.onTick(950 + homero.velocidad(), "baja", {plutonio.bajar()}) + game.onTick(1450 + homero.velocidad(), "baja", {cerveza.bajar()}) + game.onTick(1700 + homero.velocidad(), "baja", {rosquilla.bajar()}) + game.onTick(1950 + homero.velocidad() , "baja", {te.bajar()}) + game.onTick(2200 + homero.velocidad(), "baja", {ensalada.bajar()}) + game.onTick(2450 + homero.velocidad() , "baja", {guiso.bajar()}) + - keyboard.a().onPressDo({homero.moverseIzquierda()}) - keyboard.d().onPressDo({homero.moverseDerecha()}) keyboard.space().onPressDo{ const colliders = game.colliders(homero) @@ -175,26 +167,8 @@ object nivel2{ } } - - method finalizarNivel(){ - self.limpiarJuego() - game.removeTickEvent("baja") - game.removeTickEvent("restarSegundo") - game.removeTickEvent("finalizarNivel") - if(homero.puntos() < 100){ - game.addVisual(mensajeDerrota) - self.setEstado("finalizado") - }else{ - game.addVisual(mensajeVictoria) - self.setEstado("finalizado") - } - } - - method limpiarJuego(){ - game.allVisuals().forEach({visual=>game.removeVisual(visual)}) - } - - } +//Estados nivel2 : espera,inicio, jugando, finalizado +