Skip to content

Commit

Permalink
Merge branch 'Niveles'
Browse files Browse the repository at this point in the history
  • Loading branch information
Miranda-03 committed Nov 13, 2024
2 parents 0392609 + 0f3e9aa commit 2191371
Show file tree
Hide file tree
Showing 11 changed files with 255 additions and 141 deletions.
66 changes: 22 additions & 44 deletions enemigos.wlk
Original file line number Diff line number Diff line change
@@ -1,68 +1,46 @@
import niveles.*
import miscelaneos.*
import muros.*
import wollok.game.*

class Enemigo1 inherits ObjetoVisible{
//var lado = 0
class Enemigo1 inherits MutablePosition{

var property vida
var property position = game.center()
var property velocidad = 300
var property apariencia = "piopio.png"
method image() = apariencia
override method esEnemigo() = true

// [left, down, right, up]
var property vector_movimiento = [0, 1, 0, 0]
var property velocidad = 200
var property position
method image() = aparienciaEnemigo.valor()
var property direccion = moverDerecha

method movimiento(){
game.onTick(velocidad, self, {self.moverse()})
}

method cambiar_vector_movimiento() {
const elemento = vector_movimiento.get(0)
vector_movimiento.remove(vector_movimiento.get(0))
vector_movimiento.addAll([elemento])
}

method detectar_colisiones() {
game.onCollideDo(self, {elemento =>
if(elemento.soyBloque()){
self.volver()
self.cambiar_vector_movimiento()
}
game.onTick(velocidad, self, {
self.position(self.direccion().mover(self.position()))
if(niveles.mismaPosicion(self.position())){
self.position(self.direccion().retroceder(self.position()))
self.direccion(cambiarDireccion.rotarDireccion(self.direccion()))
}
})
}

method volver() {
position = position.left(vector_movimiento.get(0) * -1)
.down(vector_movimiento.get(1) * -1)
.right(vector_movimiento.get(2) * -1)
.up(vector_movimiento.get(3) * -1)
}

method moverse(){
position = position.left(vector_movimiento.get(0))
.down(vector_movimiento.get(1))
.right(vector_movimiento.get(2))
.up(vector_movimiento.get(3))
}

method activar_enemigo() {
game.addVisual(self)
self.movimiento()
self.detectar_colisiones()
self.movimiento()
}

method limpiarEnemigos(){
game.removeVisual(self)
}
}

object aparienciaEnemigo {
var property valor = "b_fiesta_i.png"
}

object lineaEnemiga{
var property enemigo = new Enemigo1(vida = 100)
var property enemigo = new Enemigo1(vida = 100, position = game.at(1, 5))

method imagen(imagen){
/* method imagen(imagen){
enemigo.apariencia(imagen)
}
} */
method activar(){
enemigo.activar_enemigo()
}
Expand Down
14 changes: 9 additions & 5 deletions juego.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import muros.*
import enemigos.*
import puntos.*
import miscelaneos.*
import niveles.*

object juego{
//DIBUJO DE LOS ELEMENTOS DEL MUNDO
Expand All @@ -12,9 +13,9 @@ object juego{
//dibujar fondo
game.addVisual(fondoJuego)
//dibujar lateral superior
escenarioNivel.generarLateralSuperior()
niveles.generarLateralSuperior()
//dibujar muros
escenarioNivel.generarEscenario()
niveles.generarEscenario()
//dibujar enemigo
lineaEnemiga.activar()
//dibujar jugador
Expand All @@ -25,7 +26,9 @@ object juego{
//dibujar puntos
game.addVisual(points)
//dibujar superior
escenarioNivel.generarBloquesSuperiores()
niveles.generarBloquesSuperiores()
//Activar el movimiento del enemigo
niveles.activarEnemigos()
//reproducir la musica correspondiente
musicaDeFondo.play()
}
Expand All @@ -36,13 +39,14 @@ object juego{
lineaEnemiga.enemigo().limpiarEnemigos()
game.removeVisual(fondoJuego)
game.removeVisual(points)
escenarioNivel.limpiarEscenario()
niveles.limpiarEscenario()
musicaDeFondo.stop()
}

method cargarVisuales(posicion){
jugador.valor(coleccion.personaje(posicion))
lineaEnemiga.imagen(coleccion.enemigo(posicion))
// lineaEnemiga.imagen(coleccion.enemigo(posicion))
aparienciaEnemigo.valor(coleccion.enemigo(posicion))
fondoJuego.valor(coleccion.fondo(posicion))
visual.valor(coleccion.bloque_i(posicion))
visualSuperior.valor(coleccion.bloque_s(posicion))
Expand Down
88 changes: 38 additions & 50 deletions jugador.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ import muros.*
import menus.menuPerdiste
import movimiento.*
import miscelaneos.*
import niveles.*

object jugador inherits FiguraConMovimiento(position = game.at(1, 1)) {

override method jugador() = true
// override method jugador() = true

method posicionate(){
self.position(game.at(1, 1))
Expand Down Expand Up @@ -37,76 +38,63 @@ object points{
method image() = "barra.png"
}

object modificadorMapa{
object modificadorMapa inherits MutablePosition{

var property position = jugador.position()
var property estado_accion = ponerBloque

method modBloques(direccion) {
game.addVisual(self)
game.removeTickEvent("mover-puntero")
self.position(jugador.position())
self.detectarSiguientePosicionValida(direccion)
}

method detectarSiguientePosicionValida(direccion){
self.position(direccion.mover(self.position()))

if(niveles.mismaPosicion(self.position())) self.estado_accion(quitarBloque)
self.estado_accion().realizarAccion(self.position())

game.onTick(100, "mover-puntero", {
self.position(direccion.mover(self.position()))
self.estado_accion().realizarAccion(self.position())
})
}

method eventosDelTeclado() {
keyboard.d().onPressDo({ self.modBloques(moverDerecha) })
keyboard.s().onPressDo({ self.modBloques(moverAbajo) })
keyboard.a().onPressDo({ self.modBloques(moverIzquierda) })
keyboard.w().onPressDo({ self.modBloques(moverArriba) })
}

method realizarAccion(accion, direccion){
if(accion == 2){
self.ponerBloques()
game.onTick(20, "mover-puntero", {self.moverPuntero(direccion) self.ponerBloques()})
}
if(accion == 1){
self.quitarBloques()
game.onTick(20, "mover-puntero", {self.moverPuntero(direccion) self.quitarBloques()})
}
if(accion == -1){
self.removerPuntero()
}
}

method removerPuntero() {
game.removeTickEvent("mover-puntero")
game.removeVisual(self)
self.estado_accion(ponerBloque)
}
}

method detectarSiguientePosicionValida(direccion){
var respuesta = 2
self.moverPuntero(direccion)
if(game.getObjectsIn(self.position()).any({elemento => return elemento.soyBloque()})) {respuesta = 1}
else if(game.getObjectsIn(self.position()).any({elemento => return elemento.esEnemigo()})) {respuesta = -1}
self.realizarAccion(respuesta, direccion)
object ponerBloque{
method realizarAccion(posicion){
if(!niveles.mismaPosicion(posicion) && posicion.x() >= 1 && posicion.x() <= (game.width()-2) && posicion.y() >= 1 && posicion.y() <= (game.height()-2)){
b.decodificar(posicion.x(), posicion.y())
new BloqueSuperior().ubicarYDibujar(posicion.x(), posicion.y())
}

method quitarBloques(){
if(game.getObjectsIn(self.position()).any({elemento => return elemento.soyBloque()})){
game.removeVisual(game.getObjectsIn(self.position()).find({elemento => return elemento.soyBloque()}))
//self.position(game.at(self.position().x(), self.position().y() + 1))
//game.removeVisual(game.getObjectsIn(self.position()).find({elemento => return elemento.esBloqueSuperior()}))
//self.position(game.at(self.position().x(), self.position().y() - 1))
}
else{
self.removerPuntero()
}
else{
modificadorMapa.removerPuntero()
}
}
}

method ponerBloques(){
if(game.getObjectsIn(self.position()).any({elemento => return elemento.soyBloque()})){
self.removerPuntero()
}
else{
new Bloque().ubicarYDibujar(self.position().x(), self.position().y())
new BloqueSuperior().ubicarYDibujar(self.position().x(), self.position().y())
}
object quitarBloque {
method realizarAccion(posicion) {
if(niveles.mismaPosicion(posicion) && posicion.x() >= 1 && posicion.x() <= (game.width()-2) && posicion.y() >= 1 && posicion.y() <= (game.height()-2)){
niveles.quitarPosicion(posicion)
game.getObjectsIn(posicion).get(game.getObjectsIn(posicion).size() - 1).quitarBloque()
game.getObjectsIn(posicion).get(game.getObjectsIn(posicion).size() - 1).quitarBloque()
}

method moverPuntero(direccion){
position = position.left(direccion.vector().get(0))
.down(direccion.vector().get(1))
.right(direccion.vector().get(2))
.up(direccion.vector().get(3))
}
else{
modificadorMapa.removerPuntero()
}
}
}
2 changes: 1 addition & 1 deletion mainExample.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ program BadIceCreamGame {
sincronizadorDePantallas.cambiarPantalla("ganador")
menuGanaste.cargar()})

game.onCollideDo(lineaEnemiga.enemigo(), {elemento => if(elemento.jugador()){ elemento.eliminate() sincronizadorDePantallas.cambiarPantalla("perdedor") menuPerdiste.cargar()}})
//game.onCollideDo(lineaEnemiga.enemigo(), {elemento => if(elemento.jugador()){ elemento.eliminate() sincronizadorDePantallas.cambiarPantalla("perdedor") menuPerdiste.cargar()}})
}

object interactuador{
Expand Down
3 changes: 2 additions & 1 deletion menus.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import mainExample.*
import muros.*
import miscelaneos.*
import juego.*
import niveles.*

class Menus{
const add_1
Expand Down Expand Up @@ -55,7 +56,7 @@ object menuNivel inherits Menus(add_1 = menuNiveles, add_2 = seleccionNivel, can
if(sincronizadorDePantallas.pantallaActual() == tipoDeMenu){
sincronizadorDePantallas.cambiarPantalla("jugar")
const nivel = (add_2.position().x()-1)/2
escenarioNivel.nivel(nivel)
niveles.nivel(nivel)
self.limpiarPantalla()
juego.jugar()
}
Expand Down
33 changes: 18 additions & 15 deletions miscelaneos.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -20,31 +20,34 @@ object finDelJuego{
method image() = "PP_final.png"
}

mixin ObjetoVisible {
method soyBloque() = false
method esPunto() = false
method jugador() = false
method esEnemigo() = false
method esFondo() = false
method esBloqueSuperior() = false
}

object moverAbajo{
method vector() = [0, 1, 0, 0]
method mover(posicion) = posicion.down(1)
method retroceder(posicion) = posicion.down(-1)
}

object moverArriba{
method vector() = [0, 0, 0, 1]
method mover(posicion) = posicion.up(1)
method retroceder(posicion) = posicion.up(-1)
}

object moverDerecha{
method vector() = [0, 0, 1, 0]
method mover(posicion) = posicion.right(1)
method retroceder(posicion) = posicion.right(-1)
}

object moverIzquierda{
method vector() = [1, 0, 0, 0]
method mover(posicion) = posicion.left(1)
method retroceder(posicion) = posicion.left(-1)
}

object cambiarDireccion{
const property vectorDirecciones = [moverIzquierda, moverAbajo, moverDerecha, moverArriba]

method rotarDireccion(direccionActual) = self.vectorDirecciones().anyOne()

}


//IMAGENES DE SELECCION
object marcoDeSeleccion{
var property position = game.at(2,5)
Expand All @@ -64,11 +67,11 @@ object seleccionPerdiste{
}

//BACKGROUND
object fondoJuego inherits ObjetoVisible{
object fondoJuego{
var property position = game.origin()
var property valor = "f_slime.png"
method image() = valor
override method esFondo() = true
// override method esFondo() = true
}

//IMAGENES RELACIONADA A LOS PERSONAJES
Expand Down
5 changes: 3 additions & 2 deletions movimiento.wlk
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import muros.*
import miscelaneos.*
import niveles.*

class FiguraConMovimiento inherits ObjetoVisible{
class FiguraConMovimiento{
var position
method position() = position
method equisCorrecta(equis) = equis >= 1 && equis <= (game.width()-2)
method yeCorrecta(ye) = ye >= 1 && ye <= (game.height()-2)
method position(posicion){
if(self.equisCorrecta(posicion.x()) && self.yeCorrecta(posicion.y()) && !escenarioNivel.mismaPosicion(posicion)){
if(self.equisCorrecta(posicion.x()) && self.yeCorrecta(posicion.y()) && !niveles.mismaPosicion(posicion)){
position = game.at(posicion.x(), posicion.y())
}
}
Expand Down
Loading

0 comments on commit 2191371

Please sign in to comment.