diff --git a/README.md b/README.md index 411402f..23c4e83 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,14 @@ ## Equipo de desarrollo -- Cristian Fernandez +- Cristian Adrian Fernandez Requejo - Mateo Gabriel Giuffra Hernandez - Bianca Picchio - Malena Sciutto #Sinopsis -En “Harry Potter y el escape de Azkaban” Hermione comprendió que había un conflicto en la linea temporal del tiempo actual o algo asi, despues de revisarlo se descubrió que Sirius Black escapo de la prisión de azkaban con la ayuda de un misterioso mago que posee una capa de invisibilidad, debido a que los testigos lo vieron utilizar el espectro patronus para detener a los dementores cuando se estaban yendo de azkaban, los testigos mencionaron que poseía la forma de un cervatillo Hermione infiere que harry tendría algo que ver al respecto e inmediatamente lo envio al pasado para descubrir que estaba pasando y arreglar este desperfecto en la linea temporal antes de afrontar las consecuencias que podría traer a su mundo. +En “Harry Potter y el escape de Azkaban” Harry y sus amigos descubrieron que sirus black habia escapado de azkaban con la ayuda de su ahijado. Para mantener la linea temporal, Hermione mando a Harry al pasado a rescatar a su padrino. ## Capturas @@ -18,11 +18,15 @@ En “Harry Potter y el escape de Azkaban” Hermione comprendió que había un ## Reglas de Juego / Instrucciones -(Escribirlas) +utilizar W, A, S, D para mover a Sirius +Utilizar las flechas para mover a Harry + +Harry utilzia la O para abrir puertas, Enter para usar objetos, L para soltar objetos y P para lanzar hechizos +Sirius utiliza la E para abrir puertas, Space para usar objetos, Q para soltar objetos y Z para lanzar hechizos ## Otros -- Curso/Facultad -- Versión de wollok -- Una vez terminado, no tenemos problemas en que el repositorio sea público / queremos manternerlo privado +- Programacion orientada a objetos 1 de la Universidad Nacional de Quilmes en Bernal +- Ultima versión de Wollok +- Una vez terminado, no tenemos problemas en que el repositorio sea público diff --git a/assets/baldoza.png b/assets/baldoza.png index 3fc1dbc..075c0d6 100644 Binary files a/assets/baldoza.png and b/assets/baldoza.png differ diff --git a/assets/baldozaAzul.png b/assets/baldozaAzul.png index cdc1578..75174d9 100644 Binary files a/assets/baldozaAzul.png and b/assets/baldozaAzul.png differ diff --git a/assets/fondojuego.png b/assets/fondojuego.png index a94cf39..a7b1b71 100644 Binary files a/assets/fondojuego.png and b/assets/fondojuego.png differ diff --git a/assets/puerta.png b/assets/puerta.png new file mode 100644 index 0000000..6c556e3 Binary files /dev/null and b/assets/puerta.png differ diff --git a/src/enemigos.wlk b/src/enemigos.wlk index 99e4c69..73b5cde 100644 --- a/src/enemigos.wlk +++ b/src/enemigos.wlk @@ -184,13 +184,15 @@ class ListaGuardias { object guardiasNoPerseguidores inherits ListaGuardias {} +//object guardiasNoPerseguidores2 inherits ListaGuardias {} + object guardiasPerseguidores inherits ListaGuardias {} class CaminoInvalido { const property position - var property posicionEntrada = tunel.position() + method posicionEntrada() = tunel.position() method image(){ return "baldoza.png" @@ -202,7 +204,7 @@ class CaminoInvalido { } method arribaDeLaEntrada() { - return arriba.siguiente(posicionEntrada) + return arriba.siguiente(self.posicionEntrada()) } method esSolidoPara(personaje) { @@ -357,6 +359,10 @@ class PuertaNivel{ } +object puertaNivelVisible inherits PuertaNivel(estado = abierto){ + method image() = "puerta.png" +} + class ListaDePuas { const property puas = #{} diff --git a/src/juego.wpgm b/src/juego.wpgm index f2acc3b..4f82ddf 100644 --- a/src/juego.wpgm +++ b/src/juego.wpgm @@ -11,34 +11,7 @@ program juego { game.width(30) game.height(18) - nivelB.iniciar() - - game.onCollideDo(harry, {colisionado => colisionado.colisionarCon(harry)}) - game.onCollideDo(sirius, {colisionado => colisionado.colisionarCon(sirius)}) - - keyboard.up().onPressDo({ harry.mover(arriba) }) - keyboard.down().onPressDo({ harry.mover(abajo) }) - keyboard.left().onPressDo({ harry.mover(izquierda) }) - keyboard.right().onPressDo({ harry.mover(derecha) }) - - keyboard.w().onPressDo({ sirius.mover(arriba) }) - keyboard.s().onPressDo({ sirius.mover(abajo) }) - keyboard.a().onPressDo({ sirius.mover(izquierda) }) - keyboard.d().onPressDo({ sirius.mover(derecha) }) - keyboard.space().onPressDo({ sirius.usarObjeto() }) - keyboard.enter().onPressDo({ harry.usarObjeto() }) - - - keyboard.o().onPressDo({ harry.abrir() }) - keyboard.e().onPressDo({ sirius.abrir() }) - - keyboard.q().onPressDo({ sirius.soltar() }) - keyboard.l().onPressDo({ harry.soltar() }) - - keyboard.p().onPressDo({ harry.usarHechizo()}) - keyboard.z().onPressDo({ sirius.usarHechizo()}) + menu.iniciar() game.start() - - } diff --git a/src/nivelx.wlk b/src/nivelx.wlk index 32ff020..d97c777 100644 --- a/src/nivelx.wlk +++ b/src/nivelx.wlk @@ -9,14 +9,10 @@ object nivelActual{ // hago directamente un obj nivel que se acuerde en donde es var property nivelActual = menu method pasarDeNivel(){ - nivelActual.terminar() + nivelActual.terminar() nivelActual = nivelActual.siguiente() nivelActual.iniciar() } - - method reiniciar(){ - nivelActual.iniciar() - } } class Nivel{ @@ -66,8 +62,6 @@ class NivelDeJuego inherits Nivel{ const celda = self.celdas().get(y).get(x) celda.generar(game.at(x,y)) } - - method hechizoNivel(personaje){} @@ -122,7 +116,7 @@ object reglas inherits Nivel{ } } -object nivelM inherits NivelDeJuego { +object nivel1 inherits NivelDeJuego { override method image() = "nivelM.png" @@ -161,118 +155,108 @@ object nivelM inherits NivelDeJuego { } override method siguiente(){ - return nivelB - } // hay que agregarle que nivle le sigue + return nivel2 + } -} - - + override method configurar(){ + keyboard.up().onPressDo({ harry.mover(arriba) }) + keyboard.down().onPressDo({ harry.mover(abajo) }) + keyboard.left().onPressDo({ harry.mover(izquierda) }) + keyboard.right().onPressDo({ harry.mover(derecha) }) + keyboard.w().onPressDo({ sirius.mover(arriba) }) + keyboard.s().onPressDo({ sirius.mover(abajo) }) + keyboard.a().onPressDo({ sirius.mover(izquierda) }) + keyboard.d().onPressDo({ sirius.mover(derecha) }) + + game.onCollideDo(harry, {colisionado => colisionado.colisionarCon(harry)}) + game.onCollideDo(sirius, {colisionado => colisionado.colisionarCon(sirius)}) + keyboard.space().onPressDo({ sirius.usarObjeto() }) + keyboard.enter().onPressDo({ harry.usarObjeto() }) + + keyboard.o().onPressDo({ harry.abrir() }) + keyboard.e().onPressDo({ sirius.abrir() }) + keyboard.q().onPressDo({ sirius.soltar() }) + keyboard.l().onPressDo({ harry.soltar() }) + + keyboard.p().onPressDo({ harry.usarHechizo()}) + keyboard.z().onPressDo({ sirius.usarHechizo()}) + } + + -object nivel1 inherits NivelDeJuego { +} - override method image() = "background2.png" +object nivel2 inherits NivelDeJuego{ + override method image() = "fondoB.png" + override method celdas(){ - return - [[i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, m, _, _, _, _, _, _, _, _, _, _, _, _, _, f], - [i, i, i, i, i, i, i, i, i, i, i, i, i, i, c, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], - [i, i, i, i, i, i, i, i, i, c, c, c, i, i, c, m, a, a, a, a, a, ag, a, a, a, a, a, a, a, a], - [i, i, i, i, i, i, i, i, i, c, i, c, c, i, c, m, a, a, a, a, a, a, a, a, a, a, a, ag, a, a], - [i, i, i, i, i, i, i, i, i, c, c, i, c, c, c, m, a, a, a, ag, a, a, a, a, a, a, a, a, a, a], - [i, i, i, i, i, i, i, i, i, i, c, i, i, i, i, m, a, a, a, a, a, ag, a, a, a, a, a, a, a, a], - [i, i, i, i, i, i, i, i, i, i, c, c, i, i, i, m, a, a, a, a, a, a, a, ag, a, a, a, a, a, a], - [i, i, i, i, c, c, c, c, i, i, i, c, i, i, i, m, ao, a, a, a, a, a, a, a, a, a, a, a, a, a], - [i, i, c, c, c, i, i, c, c, c, i, c, i, i, i, m, a, a, ag, a, a, ag, a, a, a, a, ag, a, a, a], - [i, i, c, i, i, i, i, i, i, c, i, c, i, i, i, m, a, a, a, a, a, a, a, a, ag, a, a, a, a, a], - [i, i, c, i, i, i, i, i, i, c, c, c, i, i, i, m, a, a, a, a, a, a, a, a, a, a, a, a, a, a], - [i, i, c, i, i, i, i, i, i, i, i, i, i, i, i, m, a, a, a, a, a, a, a, a, a, a, ag, a, a, a], - [i, i, c, i, i, i, i, i, i, i, i, i, i, i, i, m, a, a, a, a, a, a, a, a, a, a, a, a, a, a], - [i, i, c, c, i, c, c, c, i, i, i, i, i, i, i, m, a, a, a, ag, a, a, a, a, ag, a, a, a, a, a], - [i, i, i, c, c, c, i, c, i, i, i, i, i, i, i, m, a, a, a, a, ag, a, a, a, a, a, a, a, a, a], - [m, m, m, m, m, m, m, tn, m, m, m, m, m, m, m, m, _, _, _, _, _, _, _, _, _, _, _, _, _, _], - [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, o, _, _, _, _, _, _, _, _, _, _, _, _, _, _], - [h, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] + return + [[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], + [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], + [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], + [_, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, _, _], + [_, p, _, _, _, _, _, _, _, _, p, _, _, _, _, _, _, _, _, _, _, gp, _, _, _, _, _, p, _, _], + [_, p, _, _, pu, pu, pu, _, _, _, p, _, _, _, _, _, _, _, _, _, _, _, _, _, gp, _, _, p, _, _], + [_, p, _, _, pu, ps, pu, _, _, _, p, _, zv, _, _, zv, _, _, _, _, _, _, _, _, _, _, _, p, _, _], + [_, p, _, _, pu, bs, pu, _, _, _, p, _, _, _, _, _, _, zv, _, _, _, _, _, _, _, _, _, p, p, p], + [p, p, _, _, pu, pu, pu, _, _, _, p, p, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, p, p, p], + [_, h, s, _, _, _, _, _, _, _, d1, _, zv, _, _, zv, _, _, _, _, _, _, _, p, _, _, _, _, _, f], + [p, p, _, _, _, _, _, _, _, _, p, _, zv, _, _, _, _, _, _, _, zv, _, _, _, _, p, p, p, p, p, p, p], + [_, p, _, _, _, _, _, _, _, _, p, p, _, _, _, _, _, _, _, _, _, _, _, _, p, p, p, p, p, _, _], + [_, p, _, _, _, _, _, _, _, _, p, _, _, _, _, _, pu, pu, pu, pu, pu, pu, pu, p, p, p, p, p, _, _], + [_, p, _, o, _, _, _, _, _, _, p, _, p, _, _, _, pu, _, pu, _, pu, _, pu, d2, _, pu, sb, p, _, _], + [_, p, _, _, _, _, _, _, _, _, p, ti, p, _, _, _, pu, pu, pu, pu, pu, pu, pu, p, pu, sb, pa, p, _, _], + [_, p, _, _, _, _, _, _, _, _, _, pu, p, _, _, _, _, _, _, _, _, _, _, p, _, _, sb, p, _, _], + [_, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, _, _], + [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] ].reverse() } override method accionDeNivel(){ - game.onTick(500, "caminataGuardias", {guardiasNoPerseguidores.perseguir()}) - } - -// override method configurar(){ -// keyboard.up().onPressDo({ harry.mover(arriba) }) -// keyboard.down().onPressDo({ harry.mover(abajo) }) -// keyboard.left().onPressDo({ harry.mover(izquierda) }) -// keyboard.right().onPressDo({ harry.mover(derecha) }) -// -// keyboard.w().onPressDo({ sirius.mover(arriba) }) -// keyboard.s().onPressDo({ sirius.mover(abajo) }) -// keyboard.a().onPressDo({ sirius.mover(izquierda) }) -// keyboard.d().onPressDo({ sirius.mover(derecha) }) -// -// game.onCollideDo(harry, {colisionado => colisionado.colisionarCon(harry)}) -// game.onCollideDo(sirius, {colisionado => colisionado.colisionarCon(sirius)}) -// keyboard.space().onPressDo({ sirius.usarObjeto() }) -// keyboard.enter().onPressDo({ harry.usarObjeto() }) -// -// -// -// keyboard.o().onPressDo({ harry.abrir() }) -// keyboard.e().onPressDo({ sirius.abrir() }) -// -// keyboard.q().onPressDo({ sirius.soltar() }) -// keyboard.l().onPressDo({ harry.soltar() }) -// -// keyboard.p().onPressDo({ harry.usarHechizo()}) -// keyboard.z().onPressDo({ sirius.usarHechizo()}) -// -// -// } - - - - override method generar(){ - super() - tunel.position(game.at(7, 2)) - game.addVisual(sirius) - sirius.position(game.at(1,0)) + game.onTick(800, "movimientoPuas", {caminoDePuas.activarMovimiento()}) + game.onTick(1000, "caminataGuardias", {guardiasPerseguidores.perseguir()}) } - override method siguiente(){ - return nivelM + return nivel3 } + override method terminarAccionNivel(){ + super() + game.removeTickEvent("movimientoPuas") + } } -object nivelC inherits NivelDeJuego{ + +object nivel3 inherits NivelDeJuego{ - override method image() = "background2.png" + override method image() = "fondojuego.png" override method celdas(){ return - [[m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m], - [m, _, _, _, _, _, _, _, _, _, _, f, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, m], - [m, _, _, _, _, _, _, _, _, _, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, _, _, m], - [m, _, _, m, m, m, m, m, m, m, m, _, _, _, _, _, _, m, _, m, _, m, _, _, m, _, _, _, _, _, _, m], - [m, _, _, _, _, _, _, _, m, _, _, _, _, _, _, _, _, m, _, m, _, m, _, _, m, _, _, _, _, _, _, m], - [m, _, _, _, _, _, o, _, _, _, _, _, _, _, _, _, _, m, _, _, _, m, _, _, m, _, _, _, _, _, _, m], - [m, a, a, a, ag, a, a, a, m, _, _, _, _, m, _, _, _, m, m, m, _, m, _, _, m, m, m, m, _, _, _, m], - [m, _, _, p, m, m, m, m, m, _, _, _, _, m, m, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, m], - [m, ag, a, a, a, a, a, a, m, _, _, m, m, m, m, _, _, m, m, m, m, m, m, m, m, _, _, m, m, _, _, m], - [m, a, a, a, a, a, a, ag, m, _, _, m, o, _, m, _, _, m, a, a, a, a, ag, a, a, a, a, a, m, _, _, m], - [m, m, m, m, m, m, _, _, m, _, _, m, _, _, m, _, _, m, _, _, _, _, _, _, _, _, _, _, m, _, _, m], - [m, g, _, _, _, m, _, _, m, _, _, m, _, _, m, _, _, m, _, _, _, _, _, _, _, _, _, _, m, _, _, m], - [m, _, m, m, _, m, _, _, _, _, _, m, _, _, m, _, _, m, _, _, _, _, _, _, _, _, _, _, m, _, _, m], - [m, _, _, _, _, m, a, a, a, a, a, a, a, a, m, _, _, m, _, _, _, _, _, _, _, _, _, _, m, _, _, m], - [m, m, m, m, _, m, m, m, m, m, m, m, m, m, m, _, _, m, m, m, m, m, m, m, m, m, m, m, m, _, _, m], - [m, _, _, _, _, _, _, _, _,_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, m], - [m, s, h, _, _, _, _, _, _,_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, m], - [m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m, m] + [[p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p], + [p, p, p, p, p, _, f, _, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p], + [p, _, _, _, _, _, _, a, a, a, a, a, a, a, a, ag, _, _, _, _, _, _, _, _, _, _, _, _, _, p, p], + [p, _, _, m, m, m, m, m, m, m, m, _, _, _, _, _, _, m, _, m, _, m, _, _, m, _, _, _, _, p, p], + [p, a, a, a, ag, a, a, a, m, _, _, _, _, _, _, _, _, m, _, m, _, m, o, _, m, _, _, _, _, p, p], + [p, _, _, _, _, _, o, _, _, _, _, _, _, _, _, _, _, m, _, _, _, m, _, _, m, _, _, _, _, p, p], + [p, a, a, a, ag, a, a, a, m, _, _, _, _, _, _, _, _, m, m, m, _, m, _, _, m, m, m, m, _, p, p], + [p, _, _, p, m, m, m, m, m, _, _, _, _, m, m, _, _, _, _, _, _, _, _, _, _, _, _, _, _, p, p], + [p, ag, a, a, a, a, a, a, m, _, _, m, m, m, m, _, _, m, m, m, m, m, m, m, m, _, _, m, _, p, p], + [p, a, a, a, a, a, a, ag, m, _, _, m, o, _, m, _, _, m, a, a, a, a, ag, a, a, a, a, a, _, p, p], + [p, m, m, m, m, m, _, _, m, _, _, m, _, _, m, _, _, m, _, _, m, _, _, m, m, m, m, m, m, _, p], + [p, g, _, _, _, m, _, _, m, _, _, m, _, _, m, _, _, m, _, _, m, o, _, m, _, _, v, _, m, _, p, p], + [p, _, m, m, _, m, _, _, _, _, _, m, _, _, m, _, _, m, _, _, m, m, m, m, _, _, _, _, m, _, p, p], + [p, _, _, _, _, m, a, a, a, ag, a, a, a, a, m, _, _, m, _, _, _, _, _, _, _, _, _, _, m, _, p, p], + [p, m, m, m, _, m, m, m, m, m, m, m, m, m, m, _, _, m, m, m, m, m, m, m, m, m, m, m, m, _, p, p], + [p, _, _, _, _, _, _, _, _,_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, p, p], + [p, s, h, _, _, _, _, _, _,_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, p, p], + [p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p] ].reverse() } @@ -280,64 +264,71 @@ object nivelC inherits NivelDeJuego{ game.onTick(1000, "caminataGuardias", {guardiasNoPerseguidores.perseguir()}) } - override method terminar(){ - game.removeTickEvent("caminataGuardias") - } - override method siguiente(){} - override method terminarAccionNivel(){ - game.removeTickEvent("caminataGuardias") + override method hechizoNivel(personaje){ + personaje.patronus() } - + override method generar(){ + super() + harry.objetoActual(nada) + sirius.objetoActual(nada) + } } -object nivelB inherits NivelDeJuego{ - - override method image() = "fondoB.png" +object nivel4 inherits NivelDeJuego { + + + override method image() = "background2.png" + override method celdas(){ - return - [[_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], - [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], - [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], - [_, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, _, _], - [_, p, _, _, _, _, _, _, _, _, p, _, _, _, _, _, _, _, _, _, _, gp, _, _, _, _, _, p, _, _], - [_, p, _, _, pu, pu, pu, _, _, _, p, _, _, _, _, _, _, _, _, _, _, _, _, _, gp, _, _, p, _, _], - [_, p, _, _, pu, ps, pu, _, _, _, p, _, zv, _, _, zv, _, _, _, _, _, _, _, _, _, _, _, p, _, _], - [_, p, _, _, pu, bs, pu, _, _, _, p, _, _, _, _, _, _, zv, _, _, _, _, _, _, _, _, _, p, p, p], - [p, p, _, _, pu, pu, pu, _, _, _, p, p, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, p, p, p], - [_, h, s, _, _, _, _, _, _, _, d1, _, zv, _, _, zv, _, _, _, _, _, _, _, p, _, _, _, _, _, f], - [p, p, _, _, _, _, _, _, _, _, p, _, zv, _, _, _, _, _, _, _, zv, _, _, _, _, p, p, p, p, p, p, p], - [_, p, _, _, _, _, _, _, _, _, p, p, _, _, _, _, _, _, _, _, _, _, _, _, p, p, p, p, p, _, _], - [_, p, _, _, _, _, _, _, _, _, p, _, _, _, _, _, pu, pu, pu, pu, pu, pu, pu, p, p, p, p, p, _, _], - [_, p, _, o, _, _, _, _, _, _, p, _, p, _, _, _, pu, _, pu, _, pu, _, pu, d2, _, pu, sb, p, _, _], - [_, p, _, _, _, _, _, _, _, _, p, ti, p, _, _, _, pu, pu, pu, pu, pu, pu, pu, p, pu, sb, pa, p, _, _], - [_, p, _, _, _, _, _, _, _, _, _, pu, p, _, _, _, _, _, _, _, _, _, _, p, _, _, sb, p, _, _], - [_, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, p, _, _], - [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] - ].reverse() + return + [[i, i, i, i, i, i, i, i, i, i, i, i, i, i, i, m, _, _, _, _, _, _, _, _, _, _, _, _, _, pv], + [i, i, i, i, i, i, i, i, i, i, i, i, i, i, c, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _], + [i, i, i, i, i, i, i, i, i, c, c, c, i, i, c, m, a, a, a, a, a, ag, a, m, a, a, a, a, a, a], + [i, i, i, i, i, i, i, i, i, c, i, c, c, i, c, m, a, a, a, a, a, m, a, a, a, a, a, ag, a, a], + [i, i, i, i, i, i, i, i, i, c, c, i, c, c, c, m, a, a, a, ag, a, a, a, a, m, m, a, a, a, a], + [i, i, i, i, i, i, i, i, i, i, c, i, i, i, i, m, m, m, a, a, a, ag, m, m, a, a, a, a, a, a], + [i, i, i, i, i, i, i, i, i, i, c, c, i, i, i, m, a, a, a, a, a, a, a, ag, a, a, a, a, a, a], + [i, i, i, i, c, c, c, c, i, i, i, c, i, i, i, m, o, m, a, a, a, a, a, a, ag, a, a, a, a, a], + [i, i, c, c, c, i, i, c, c, c, i, c, i, i, i, m, a, a, ag, a, a, ag, a, a, a, a, ag, a, a, a], + [i, i, c, i, i, i, i, i, i, c, i, c, i, i, i, m, a, a, a, ag, a, a, a, a, ag, a, a, m, o, a], + [i, i, c, i, i, i, i, i, i, c, c, c, i, i, i, m, a, ag, a, a, a, m, m, m, a, a, a, a, a, a], + [i, i, c, i, i, i, i, i, i, i, i, i, i, i, i, m, a, a, a, a, a, a, a, a, a, a, ag, a, a, a], + [i, i, c, i, i, i, i, i, i, i, i, i, i, i, i, m, m, a, ag, m, a, a, a, ag, a, a, a, m, a, a], + [i, i, c, c, i, c, c, c, i, i, i, i, i, i, i, m, a, a, a, ag, m, a, a, a, ag, a, a, a, a, a], + [i, i, i, c, c, c, i, c, i, i, i, i, i, i, i, m, m, a, a, a, ag, m, a, a, a, a, a, a, a, a], + [m, m, m, m, m, m, m, tn, m, m, m, m, m, m, m, m, _, _, _, _, _, _, _, _, _, _, _, _, _, _], + [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, o, _, _, _, _, _, _, _, _, _, _, _, _, _, _], + [h, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] + ].reverse() } override method accionDeNivel(){ - game.onTick(800, "movimientoPuas", {caminoDePuas.activarMovimiento()}) - game.onTick(1000, "caminataGuardias", {guardiasPerseguidores.perseguir()}) + game.onTick(200, "caminataGuardias", {guardiasNoPerseguidores.perseguir()}) + game.onTick(10000, "mostrarCaminos", {caminosValidos.iluminar()}) } + override method generar(){ + super() + game.addVisual(sirius) + sirius.position(game.at(1,0)) + } + override method siguiente(){ - return nivelC + return self } override method terminarAccionNivel(){ super() - game.removeTickEvent("movimientoPuas") + game.removeTickEvent("mostrarCaminos") } } - object _{ method generar(position){} } @@ -347,7 +338,6 @@ object i{ method generar(_position){ const camino = new CaminoInvalido(position = _position) game.addVisual(camino) -// caminosInvalidos.agregarCamino(self) } } @@ -417,6 +407,7 @@ object g{ } } + object gp{ method generar(position){ @@ -484,6 +475,7 @@ object ag{ } } + object ao{ method generar(position){ a.generar(position) @@ -492,9 +484,7 @@ object ao{ } object f{ - method generar(position){ - puertaNivel.position(position) - game.addVisual(puertaNivel) + game.addVisual(new PuertaNivel(estado = abierto, position = position)) } } @@ -558,4 +548,11 @@ object bs { game.addVisual(sensor) objetosUsables.agregarObjeto(sensor) } -} \ No newline at end of file +} + +object pv{ + method generar(position){ + game.addVisual(puertaNivelVisible) + puertaNivelVisible.position(position) + } +} diff --git a/src/personajes.wlk b/src/personajes.wlk index 2d52fc1..011ee92 100644 --- a/src/personajes.wlk +++ b/src/personajes.wlk @@ -11,11 +11,10 @@ class Personaje { var property posicionPrincipio = game.at(0, 0) const property llavesRotas = #{} var property tieneVarita = false - var property nivel = nivelM var property objetoActual = nada - + method transformacion() - + method estadoHabitual() method congelado() @@ -62,11 +61,6 @@ class Personaje { } } - method usarHechizo(){ - self.validarHechizo() - nivel.hechizoNivel(self) - } - method validarAbrir(objetos) { if (objetos.isEmpty()) { self.error("No tengo nada para abrir") @@ -79,8 +73,10 @@ class Personaje { } } - - + method usarHechizo(){ + self.validarHechizo() + nivelActual.nivelActual().hechizoNivel(self) + } method validarHechizo(){ if (not self.tieneVarita()){ @@ -126,7 +122,7 @@ class Personaje { } method volverAlPrincipio() { - self.position((posicionPrincipio)) + self.position(posicionPrincipio) } method esSolidoPara(personaje) { @@ -172,6 +168,13 @@ class Personaje { } method elGuardiaEsSolido() = false + + method patronus(){ + self.validarHechizo() + guardiasNoPerseguidores.estaticos() + guardiasPerseguidores.estaticos() + } + } @@ -200,9 +203,6 @@ object protagonistas { object harry inherits Personaje { - var property patronus = 1 - - override method transformacion() { return harryInvisible } @@ -221,11 +221,6 @@ object harry inherits Personaje { } object sirius inherits Personaje { - - - method tirar(){ - estado.objeto().position(position) - } override method transformacion() { return siriusPerro @@ -237,7 +232,6 @@ object sirius inherits Personaje { override method entrarEnZonaGuardias() { game.say(self, "Me pueden ver!") - // game.schedule(1500, { self.volverAlPrincipio()}) self.serAtrapado() } @@ -259,8 +253,6 @@ class Estado { method entrarEnZonaGuardias(personaje){} - -// } @@ -269,7 +261,7 @@ object harryHumano inherits Estado { override method entrarEnZonaGuardias(personaje) { game.say(personaje, "Me pueden ver!") - // game.schedule(1500, { personaje.volverAlPrincipio()}) + game.schedule(1500, { personaje.volverAlPrincipio()}) personaje.serAtrapado() } @@ -289,11 +281,8 @@ object siriusHumano inherits Estado {} object siriusPerro inherits Estado{ - override method puedePasar(puerta) = true override method esPerseguible() = false - - } object siriusCongelado inherits Estado{ diff --git a/src/tests.wtest b/src/tests.wtest index eaf3789..c0467ea 100644 --- a/src/tests.wtest +++ b/src/tests.wtest @@ -5,10 +5,50 @@ import enemigos.* import direcciones.* import objetosUtiles.* -describe "nivel1" { + + +//describe "nivelB" { +// +// method initialize(){ +// nivelB.iniciar() +// } +// +// test "harry se choca con una pua, vuelven el y sirius al lugar de inicio"{ +// harry.position(game.at(5,8)) +// caminoDePuas.activarMovimiento() +// harry.mover(arriba) +// caminoDePuas.activarMovimiento() +// assert.equals(game.at(1,8) , harry.position()) +// assert.equals(game.at(2,8) , sirius.position()) +// } +// +// test "harry mueve la palanca y abre la puerta correspondiente" { +// harry.position(game.at(5,10)) +// harry.usarObjeto() +// assert.equals(abierto, p1.estado()) +// } +//} + +describe "hechizos Harry" { + + method initialize(){ + nivel3.iniciar() + } + test "Comprobar el cambio de estado del guardia no perseguidor luego de usar patronus"{ + guardiasNoPerseguidores.estaticos() + assert.that(guardiasNoPerseguidores.guardias().all({guardia => guardia.estado() == guardiaEstatico})) + } + + test "Comprobar el cambio de estado del guardia perseguidor luego de usar patronus"{ + guardiasPerseguidores.estaticos() + assert.that(guardiasPerseguidores.guardias().all({guardia => guardia.estado() == guardiaEstatico})) + } +} + +describe "nivel4" { method initialize(){ - nivel1.iniciar() + nivel4.iniciar() } test "harry entra a la zona guardias y no pueden moverse ni el ni sirius"{ @@ -20,44 +60,24 @@ describe "nivel1" { } - test "harry entra a la zona invisible. Los dos pueden moverse"{ - harry.reiniciar() - sirius.reiniciar() + test "harry entra a la zona invisible. Sirius puede moverse"{ + harry.estado(harryHumano) + sirius.estado(siriusHumano) harry.transformarse() assert.equals(harryInvisible, harry.estado()) harry.entrarEnZonaGuardias() - assert.that(harry.sePuedeMover(arriba)) assert.that(sirius.sePuedeMover(arriba)) } - test "harry choca contra una pared"{ - harry.position(game.at(2, 1)) + test "sirius choca contra una pared y no puede moverse"{ sirius.position(game.at(2,1)) - harry.mover(arriba) - sirius.mover(arriba) - assert.notThat(harry.sePuedeMover(arriba)) assert.notThat(sirius.sePuedeMover(arriba)) } + + test "sirius pisa la zona invalida y vuelve al principio del camino"{ + const caminoInvalido = new CaminoInvalido(position = game.at(4, 13)) + caminoInvalido.colisionarCon(sirius) + assert.equals(caminoInvalido.arribaDeLaEntrada(), sirius.position()) + } } - -//describe "nivelB" { -// -// method initialize(){ -// nivelB.iniciar() -// } -// -// test "harry se choca con una pua, vuelven el y sirius al lugar de inicio"{ -// harry.position(game.at(5,8)) -// caminoDePuas.activarMovimiento() -// harry.mover(arriba) -// caminoDePuas.activarMovimiento() -// assert.equals(game.at(1,8) , harry.position()) -// assert.equals(game.at(2,8) , sirius.position()) -// } -// -// test "harry mueve la palanca y abre la puerta correspondiente" { -// harry.position(game.at(5,10)) -// harry.usarObjeto() -// assert.equals(abierto, p1.estado()) -// } -//} \ No newline at end of file + \ No newline at end of file