diff --git a/comida.wlk b/comida.wlk index 53794d2..3a425c7 100644 --- a/comida.wlk +++ b/comida.wlk @@ -15,6 +15,14 @@ class Comida{ method bajar(){ if (position.y() >= -2){ position.goDown(2) + }else{ + game.removeVisual(self) + position.goUp(18) + position.goLeft((0..8).anyOne()*2) + position.goRight((0..8).anyOne()*2) + position.x().max(0) + position.x().min(16) + game.addVisual(self) } } @@ -43,12 +51,14 @@ class Comida{ } -const rosquilla = new Comida(nombre="rosquilla", puntos=10, velocidad=2, accion={homero.poneteGrasoso()}) -const banana = new Comida(nombre="banana", puntos=-5, velocidad=-2, accion={homero.convertiteEnMono()}) -const plutonio = new Comida(nombre="plutonio", puntos=20, velocidad=-2, accion={homero.poneteRadiactivo()}) -const choripan = new Comida(nombre="choripan", puntos=5, velocidad=2, accion={homero.cometeUnChoripan()}) -const mate = new Comida(nombre="mate", puntos=100, velocidad=4, accion={homero.tomateUnMate()}) -const cerveza = new Comida(nombre="cerveza", puntos=50, velocidad=-4, accion={homero.tomateUnaCerveza()}) -const te = new Comida(nombre="te", puntos=-100, velocidad=-2, accion={homero.tomateUnTe()}) -const ensalada = new Comida(nombre="ensalada", puntos=-20, velocidad=2, accion={homero.comeEnsalada()}) -const guiso = new Comida(nombre="guiso", puntos=80, velocidad=-6, accion={homero.poneteObeso()}) \ No newline at end of file +const rosquilla = new Comida(nombre="rosquilla", puntos=10, velocidad=1, accion={homero.poneteGrasoso()}) +const banana = new Comida(nombre="banana", puntos=-5, velocidad=-1, accion={homero.convertiteEnMono()}) +const plutonio = new Comida(nombre="plutonio", puntos=20, velocidad=1, accion={homero.poneteRadiactivo()}) +const choripan = new Comida(nombre="choripan", puntos=5, velocidad=-1, accion={homero.cometeUnChoripan()}) +const mate = new Comida(nombre="mate", puntos=100, velocidad=2, accion={homero.tomateUnMate()}) +const cerveza = new Comida(nombre="cerveza", puntos=50, velocidad=-2, accion={homero.tomateUnaCerveza()}) +const te = new Comida(nombre="te", puntos=-100, velocidad=-1, accion={homero.tomateUnTe()}) +const ensalada = new Comida(nombre="ensalada", puntos=-20, velocidad=1, accion={homero.comeEnsalada()}) +const guiso = new Comida(nombre="guiso", puntos=80, velocidad=-2, accion={homero.poneteObeso()}) + +const comidas = [rosquilla, banana, plutonio, choripan, mate, cerveza, te, ensalada, guiso] \ No newline at end of file diff --git a/homero.wlk b/homero.wlk index 5acc1b7..538649e 100644 --- a/homero.wlk +++ b/homero.wlk @@ -1,16 +1,6 @@ import wollok.game.* import comida.* -object puntosHomero { - const hom = homero - const position = new MutablePosition(x=9, y=10) - - method position() = position - - method text () = "Puntos: " + hom.puntos() + " Velocidad: " + hom.velocidad() - -} - object homero{ var puntos = 0 var velocidad = 2 diff --git a/main.wpgm b/main.wpgm index b9d04ca..4eb3123 100644 --- a/main.wpgm +++ b/main.wpgm @@ -1,47 +1,10 @@ import wollok.game.* import comida.* import homero.* +import niveles.* +import tableros.* program homeroGame{ - game.title("Homero en Springfield") - game.height(12) - game.width(18) - game.cellSize(100) - - game.boardGround("springfield.png") - game.addVisual(puntosHomero) - game.addVisual(homero) - game.addVisual(rosquilla) - game.addVisual(banana) - game.addVisual(plutonio) - game.addVisual(choripan) - game.addVisual(mate) - game.addVisual(te) - game.addVisual(ensalada) - game.addVisual(guiso) - - - game.onTick(500, "baja", {rosquilla.bajar()}) - game.onTick(500, "baja", {banana.bajar()}) - game.onTick(500, "baja", {plutonio.bajar()}) - game.onTick(500, "baja", {cerveza.bajar()}) - game.onTick(500, "baja", {choripan.bajar()}) - game.onTick(500, "baja", {mate.bajar()}) - game.onTick(500, "baja", {te.bajar()}) - game.onTick(500, "baja", {ensalada.bajar()}) - game.onTick(500, "baja", {guiso.bajar()}) - - - keyboard.a().onPressDo({homero.moverseIzquierda()}) - keyboard.d().onPressDo({homero.moverseDerecha()}) - - keyboard.space().onPressDo{ - const colliders = game.colliders(homero) - colliders.head().interactua(homero) - homero.alterarPuntos(colliders.head().puntos()) - homero.alterarVelocidad(colliders.head().velocidad()) - game.removeVisual(colliders.head()) - } - - game.start() + nivel1.inciarFondo() + keyboard.space().onPressDo{nivel1.iniciarNivel()} } \ No newline at end of file diff --git a/niveles.wlk b/niveles.wlk new file mode 100644 index 0000000..6f05a41 --- /dev/null +++ b/niveles.wlk @@ -0,0 +1,69 @@ +import homero.* +import comida.* +import tableros.* +import wollok.game.* + +object nivel1 { + method inciarFondo(){ + game.title("Homero en Springfield") + game.height(12) + game.width(18) + game.cellSize(100) + + game.boardGround("springfield.png") + game.addVisual(puntosHomero) + game.addVisual(mensajes) + game.addVisual(homero) + game.addVisual(tiempo) + + game.start() + + if(tiempo.timer() == 0 || homero.puntos() > 200){ + game.addVisual(mensajeVictoria) + game.stop() + }else if (tiempo.timer() == 0){ + game.addVisual(mensajeDerrota) + game.stop() + } + } + + method iniciarNivel(){ + game.removeVisual(mensajes) + game.onTick(1000, "descontar tiempo", {tiempo.restarSegundo()}) + game.onTick(1000, "tiempo en 0", {if(tiempo.timer() == 0) game.removeTickEvent("descontar tiempo")}) + game.onTick(1000, "tiempo en 0", {if(tiempo.timer() == 0) game.removeTickEvent("baja")}) + game.onTick(1000, "gano o no", {if(homero.puntos() > 200) game.addVisual(mensajeVictoria) else game.addVisual(mensajeDerrota)}) + + comidas.forEach({comida => game.addVisual(comida)}) + + game.onTick(500, "baja", {rosquilla.bajar()}) + game.onTick(1000, "baja", {banana.bajar()}) + game.onTick(750, "baja", {plutonio.bajar()}) + game.onTick(1250, "baja", {cerveza.bajar()}) + game.onTick(250, "baja", {choripan.bajar()}) + game.onTick(1500, "baja", {mate.bajar()}) + game.onTick(1750, "baja", {te.bajar()}) + game.onTick(2000, "baja", {ensalada.bajar()}) + game.onTick(2250, "baja", {guiso.bajar()}) + + + keyboard.a().onPressDo({homero.moverseIzquierda()}) + keyboard.d().onPressDo({homero.moverseDerecha()}) + + keyboard.space().onPressDo{ + const colliders = game.colliders(homero) + colliders.head().interactua(homero) + homero.alterarPuntos(colliders.head().puntos()) + homero.alterarVelocidad(colliders.head().velocidad()) + game.removeVisual(colliders.head()) + } + + if(tiempo.timer() == 0 || homero.puntos() > 200){ + game.removeTickEvent("descontar tiempo") + game.removeTickEvent("baja") + } + + } + +} + diff --git a/tableros.wlk b/tableros.wlk new file mode 100644 index 0000000..a64793b --- /dev/null +++ b/tableros.wlk @@ -0,0 +1,49 @@ +import homero.* +object puntosHomero { + const hom = homero + const position = new MutablePosition(x=9, y=10) + + method position() = position + + method text () = "Puntos: " + hom.puntos() + " Velocidad: " + hom.velocidad() + +} + +object mensajes { + const position = new MutablePosition(x=9, y=8) + + method position() = position + + method text() = "Bienvenido a Homero en Springfield, presione espacio para comenzar!" +} + +object tiempo { + var timer = 5 * 60 + const position = new MutablePosition(x=9, y=9) + + method position() = position + + method text() = "Tiempo: " + timer + + method timer() = timer + + method restarSegundo(){ + timer -= 1 + } +} + +object mensajeVictoria{ + const position = new MutablePosition(x=9, y=8) + + method position() = position + + method text() = "Ganaste!" +} + +object mensajeDerrota{ + const position = new MutablePosition(x=9, y=8) + + method position() = position + + method text() = "Perdiste!" +} \ No newline at end of file