diff --git a/main.wpgm b/main.wpgm index e9c241a..197c050 100644 --- a/main.wpgm +++ b/main.wpgm @@ -23,6 +23,7 @@ program FireboyAndWatergirl { keyboard.d().onPressDo({watergirl.movDerecha()}) game.whenCollideDo(fireboy, {elemento => + elemento.tratarColision(fireboy) }) diff --git a/mapa.wlk b/mapa.wlk index e57825a..0f1307d 100644 --- a/mapa.wlk +++ b/mapa.wlk @@ -2,12 +2,11 @@ import elementos.* object mapa { - method crearBloques(y, xi, xf, tipo) + method crearBloques(y, xi, xf, fabrica) { (xi..xf).forEach({ x => - const nuevoBloque = new Bloque() + const nuevoBloque = fabrica.crearBloque() nuevoBloque.position(game.at(x, y)) - nuevoBloque.image(tipo) game.addVisual(nuevoBloque) }) } @@ -25,21 +24,21 @@ object mapa method crearBloquesDeTierra() { - self.crearBloques(1, 0, 2, "bloqueTierra2.png") - self.crearBloques(1, 13, 15, "bloqueTierra2.png") - self.crearBloques(2, 6, 11, "bloqueTierra2.png") - self.crearBloques(3, 0, 4, "bloqueTierra2.png") - self.crearBloques(6, 2, 15, "bloqueTierra2.png") - self.crearBloques(9, 0, 12, "bloqueTierra2.png") - self.crearBloques(12, 0, 1, "bloqueTierra2.png") - self.crearBloques(13, 3, 15, "bloqueTierra2.png") + self.crearBloques(1, 0, 2, fabricaBloqueTierra) + self.crearBloques(1, 13, 15, fabricaBloqueTierra) + self.crearBloques(2, 6, 11, fabricaBloqueTierra) + self.crearBloques(3, 0, 4, fabricaBloqueTierra) + self.crearBloques(6, 2, 15, fabricaBloqueTierra) + self.crearBloques(9, 0, 12, fabricaBloqueTierra) + self.crearBloques(12, 0, 1, fabricaBloqueTierra) + self.crearBloques(13, 3, 15, fabricaBloqueTierra) } method crearBloquesEspeciales() { - self.crearBloques(0, 5, 6, "bloqueDeFuego.png") - self.crearBloques(0, 9, 10, "bloqueDeAgua.png") - self.crearBloques(3, 8, 9, "acido46.png") + self.crearBloques(0, 5, 6, fabricaBloqueFuego) + self.crearBloques(0, 9, 10, fabricaBloqueAgua) + self.crearBloques(3, 8, 9, fabricaBloqueAcido) } method inciar() @@ -49,13 +48,65 @@ object mapa self.agregarElementos() } } +object fabricaBloqueTierra { + method crearBloque() = new BloqueTierra() +} + +object fabricaBloqueAgua { + method crearBloque() = new BloqueAgua() +} + +object fabricaBloqueFuego { + method crearBloque() = new BloqueFuego() +} + +object fabricaBloqueAcido { + method crearBloque() = new BloqueAcido() +} class Bloque { var property position = game.at(0,0) - var property image = "" +} + +class BloqueTierra +{ + var property position = game.at(0,0) + method image() = "bloqueTierra2.png" + + method tratarColision(personaje) + { + if(personaje.posicionAnt().y() < position.y()) personaje.retroceder() + else if(personaje.posicionAnt().y() > position.y()) personaje.quedarse(position.y()) + } +} + +class BloqueFuego +{ + var property position = game.at(0,0) + method image() = "bloqueDeFuego.png" + + method tratarColision(personaje) + { + } +} + +class BloqueAgua +{ + var property position = game.at(0,0) + method image() = "bloqueDeAgua.png" method tratarColision(personaje) { } } + +class BloqueAcido +{ + var property position = game.at(0,0) + method image() = "acido46.png" + + method tratarColision(personaje) + { + } +} \ No newline at end of file diff --git a/pepita.wlk b/pepita.wlk deleted file mode 100644 index 8763973..0000000 --- a/pepita.wlk +++ /dev/null @@ -1,16 +0,0 @@ -object pepita { - var energy = 100 - const position = new MutablePosition(x=0, y=0) - - method image() = "golondrina.png" - method position() = position - - method energy() = energy - - method fly(minutes) { - energy = energy - minutes * 3 - position.goRight(minutes) - position.goUp(minutes) - } - -} \ No newline at end of file diff --git a/personajes.wlk b/personajes.wlk index f57d62d..81b72fa 100644 --- a/personajes.wlk +++ b/personajes.wlk @@ -1,7 +1,7 @@ object fireboy { var property position = game.at(0,0) - var posicionAnt = null + var property posicionAnt = null var cantSaltos = 0 method image() = "fireboy6.png" method movIzquierda() @@ -28,7 +28,11 @@ object fireboy } } method retroceder() { - position = posicionAnt + position = game.at(position.x(), 0.max(position.y()-1)) + } + method quedarse(nuevaY) + { + position = game.at(position.x(), nuevaY+1) } } diff --git a/pruebas.wtest b/pruebas.wtest index 7342cd1..e69de29 100644 --- a/pruebas.wtest +++ b/pruebas.wtest @@ -1,9 +0,0 @@ -import pepita.* - -describe "group of tests for pepita" { - - test "pepita has initial energy" { - assert.equals(100, pepita.energy()) - } - -} \ No newline at end of file