Skip to content

Commit

Permalink
se puede volver al menu principal con x y
Browse files Browse the repository at this point in the history
funciona el reincio
  • Loading branch information
NahuelMarek committed Nov 19, 2024
1 parent 412f2c6 commit 0b0099d
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 84 deletions.
80 changes: 51 additions & 29 deletions administradorDeJuego.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,17 @@ object administradorDeJuego {
administradorDeEnemigos.reset()
administradorDeMagos.reset()
administradorDeProyectiles.reset()
administradorUtilizado.reset()
casa.reset()
puntaje.reset()
administradorUtilizado.reset()
configuracion.quitarVisuals()
//pantalla.reproducirSonido()
// configuracion.iniciarMusica() // Iniciar música (opcional)
}

method pausar(){
if (usuarioEnMenu==false){
if (pausado==false){
if (!usuarioEnMenu){
if (!pausado){
configuracion.frenarTicks()
pausado = true
pantalla.estado(pausa)
Expand All @@ -64,7 +65,17 @@ object administradorDeJuego {
}
}
}

method mostrarMenuInicial(){
try {self.resetGame() game.removeVisual(administradorUtilizado) game.schedule(10, {configuracion.frenarTicks()
game.removeVisual(pantalla)})}
catch e "no hay ticks"
game.schedule(1000, {usuarioEnMenu=true})
menuInicial.quitarBotones()
menuInicial.imagen("MenuInicial.png")
menuInicial.botones(menuInicial.botonesIniciales())
try game.addVisual(menuInicial) catch e "ya se esta mostrando el menu"
menuInicial.iniciarMenu()
}
}

// =======================================
Expand Down Expand Up @@ -166,45 +177,51 @@ object configuracion {
method detenerMusica() {
sonidoPartida.detenerMusica()
}
// Método para agregar elementos visuales y configurar teclas de control
method agregarVisuals() {

game.addVisual(cursor)
game.addVisual(menu)
game.addVisual(puntaje)

game.addVisual(casa)
menu.accion()
method iniciarConfig(){
menu.accion()
cursor.accion()

/* menu.accion()
cursor.accion() */
menu.iniciarTienda()
//administradorDeJuego.pausar()



// Tecla "P" para reiniciar el juego
keyboard.p().onPressDo({
/* try self.iniciarMusica()
catch e: MyException {"YA ESTA INICIADA LA MUSICA"}
then always{ */
administradorDeJuego.resetGame()
if(!administradorDeJuego.usuarioEnMenu()){administradorDeJuego.resetGame()
administradorDeJuego.usuarioEnMenu(false)
administradorDeJuego.pausado(false)
//administradorDeJuego.pausado(false)
game.removeVisual(pantalla)
self.frenarTicks()
self.crearTicks()
puntaje.reset()
// }
})
administradorDeJuego.administradorUtilizado().oleadaInicial().start()
self.agregarVisuals()}})

// Tecla "I" para detener el juego
keyboard.i().onPressDo({ game.stop() })

keyboard.o().onPressDo({administradorDeJuego.pausar()})
}
// Método para agregar elementos visuales y configurar teclas de control
method quitarVisuals(){
game.removeVisual(cursor)
cursor.position(new MutablePosition(x = 7, y = 3))
game.removeVisual(menu)
game.removeVisual(puntaje)
game.removeVisual(casa)
menu.finalizarTienda()
}
method agregarVisuals() {

game.addVisual(cursor)
game.addVisual(menu)
game.addVisual(puntaje)

game.addVisual(casa)
menu.iniciarTienda()
/* menu.accion()
cursor.accion() */

//administradorDeJuego.pausar()
}

// Método para programar eventos de actualización periódicos (ticks)
Expand Down Expand Up @@ -249,18 +266,21 @@ object menuInicial{
method position()=new MutablePosition(x=0,y=0)
method image() = imagen
var botonSeleccionado = 0
var property botones=[botonDeInicio,botonNiveles,botonMutearMusica]
var property botones= botonesIniciales
const property botonesIniciales = [botonDeInicio,botonNiveles,botonMutearMusica]
method iniciarMenu(){
botonSeleccionado=0
self.seleccionarBoton()
botones.forEach({boton=>game.addVisual(boton)})

}
method finalizarMenu(){
self.quitarBotones()
administradorDeJuego.usuarioEnMenu(false)
game.schedule(100, {administradorDeJuego.usuarioEnMenu(false)})
game.removeVisual(self)
}
method quitarBotones(){botones.forEach({boton=>game.removeVisual(boton)})}
method quitarBotones(){botones.forEach({boton=>game.removeVisual(boton)
boton.cambiarEstadoDeSeleccion(false)})}
method moverseEntreBotones(){
keyboard.right().onPressDo({ if(administradorDeJuego.usuarioEnMenu() && botonSeleccionado<botones.size()-1)
{ self.deseleccionarBoton()
Expand All @@ -269,7 +289,8 @@ object menuInicial{
keyboard.left().onPressDo({ if(administradorDeJuego.usuarioEnMenu() && botonSeleccionado>0 )
{ self.deseleccionarBoton()
botonSeleccionado-=1
self.seleccionarBoton()}})
self.seleccionarBoton()}})


}

Expand Down Expand Up @@ -393,9 +414,10 @@ class BotonDeNivel{
configuracion.agregarVisuals()
configuracion.crearTicks()
administradorDeNiveles.numNivel(numNivel)
administradorDeNiveles.enemigosRestantes(nivel.cantidadEnemigos())
administradorDeEnemigos.administradorUtilizado(administradorDeNiveles)
administradorDeJuego.administradorUtilizado(administradorDeNiveles)
game.schedule(4000, { administradorDeNiveles.iniciarOleada() })
administradorDeJuego.administradorUtilizado().oleadaInicial().start()
game.addVisual(administradorDeNiveles)
menuInicial.finalizarMenu()
}
Expand Down
55 changes: 31 additions & 24 deletions administradorDeNiveles.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -11,33 +11,30 @@ object administradorDeNiveles {
const niveles = botonNiveles.niveles()
var property numNivel = 1
method nivel() = niveles.get(numNivel-1).nivel()
var property enemigosRestantes = niveles.get(numNivel-1).nivel().cantidadEnemigos()

// Métodos de visualización y sonido
method position() = new MutablePosition(x = 9, y = 5)
method text() = "Nivel: " + numNivel.toString() + " " + "Slimes Restantes: " + self.nivel().enemigosRestantes().toString()
method text() = "Nivel: " + numNivel.toString() + " " + "Slimes Restantes: " + enemigosRestantes.toString()
method textColor() = "#FA0770"
method enemigosVivos() = self.nivel().enemigosVivos()

const property oleadaInicial = game.tick(4000, {self.iniciarOleada() self.frenarTickInicial()},false)
method frenarTickInicial() { oleadaInicial.stop()}
// Inicia la oleada y gestiona enemigos
const tickParaGenerarEnemigos= game.tick(self.nivel().tiempoSpawn(),
{self.spawnearOleada()}
,false)
method iniciarOleada() {
self.nivel().iniciarOleada()
game.onTick(
self.nivel().tiempoSpawn(),
"gestionar oleada",
{
if (not administradorDeJuego.pausado()){
tickParaGenerarEnemigos.start()
}
method spawnearOleada(){ if (not administradorDeJuego.pausado()){
if (self.nivel().ejecutando()) {
administradorDeEnemigos.generarEnemigo(self.nivel().enemigos().anyOne())
} else if(self.nivel().finalizo()){
self.siguienteOleada()
game.removeTickEvent("gestionar oleada")

}
}
}
)
}

tickParaGenerarEnemigos.stop()
}}}
// Pasa a la siguiente oleada
method siguienteOleada() {
// por ahora funciona , si intento mejorar la logica se rompe
Expand All @@ -46,30 +43,40 @@ object administradorDeNiveles {
if (numNivel == niveles.size()){
pantalla.estado(victoria) game.addVisual(pantalla)
return}
else {numNivel += 1 game.schedule(10000, { self.iniciarOleada() })}
else {numNivel += 1
enemigosRestantes = niveles.get(numNivel-1).nivel().cantidadEnemigos()
tickParaGenerarEnemigos.interval(self.nivel().tiempoSpawn())
oleadaInicial.interval(10000)
oleadaInicial.start()
/* game.schedule(10000, { self.iniciarOleada()} )*/}
}

// Gestión de contadores de enemigos
method reducirEnemigo() { self.nivel().seMurioEnemigo()}
method reducirEnemigo() { self.nivel().seMurioEnemigo()
enemigosRestantes-=1}
method sumarEnemigo() { self.nivel().seGeneroEnemigo()}


// Resetea el administrador de oleadas
method reset() {
game.removeTickEvent("gestionar oleada")

niveles.forEach({nivelAResetear=>nivelAResetear.nivel().reset()})
numNivel = 1
game.schedule(4000, { self.iniciarOleada() })
tickParaGenerarEnemigos.stop()
oleadaInicial.interval(4000)
enemigosRestantes = niveles.get(numNivel-1).nivel().cantidadEnemigos()
//game.schedule(4000, { self.iniciarOleada() })
self.frenarTickInicial()
}
method recibeDanioMago(danio){}
method frenarEnemigo()= true
}

class Nivel {
const property enemigos
var property cantidadEnemigos
const property cantidadEnemigos
const property tiempoSpawn
var property enemigosRestantes = cantidadEnemigos
var enemigosRestantes = cantidadEnemigos
var property enemigosGenerados = 0

method inicioOleada() = game.sound("m.iOleada.mp3")
Expand Down Expand Up @@ -106,5 +113,5 @@ class Nivel {
}
}

const nivel1= new Nivel(enemigos=[slimeBasico],cantidadEnemigos=5,tiempoSpawn=4000)
const nivel2= new Nivel(enemigos=[slimeGuerrero,slimeGuerrero,slimeBasico],cantidadEnemigos=10,tiempoSpawn=4000)
const nivel1= new Nivel(enemigos=[slimeBasico],cantidadEnemigos=2,tiempoSpawn=4000)
const nivel2= new Nivel(enemigos=[slimeGuerrero,slimeGuerrero,slimeBasico],cantidadEnemigos=4,tiempoSpawn=4000)
36 changes: 18 additions & 18 deletions administradorDeOleadas.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -13,32 +13,27 @@ object administradorDeOleadas {

var oleadaActual = oleadaNormal
var numeroOleada = 1


const property oleadaInicial = game.tick(4000, {self.iniciarOleada() self.frenarTickInicial()},false)
method frenarTickInicial()=oleadaInicial.stop()
// Métodos de visualización y sonido
method position() = new MutablePosition(x = 9, y = 5)
method text() = "Oleada: " + numeroOleada.toString() + " " + "Slimes Restantes: " + oleadaActual.enemigosRestantes().toString()
method textColor() = "#FA0770"
method enemigosVivos() = oleadaActual.enemigosVivos()

// Inicia la oleada y gestiona enemigos
method iniciarOleada() {
oleadaActual.iniciarOleada()
game.onTick(
oleadaActual.tiempoSpawn(),
"gestionar oleada",
{
if (not administradorDeJuego.pausado()){
const tickParaGenerarEnemigos=game.tick(oleadaActual.tiempoSpawn(),{self.spawnearOleada()},false)
method spawnearOleada(){
if (not administradorDeJuego.pausado()){
if (oleadaActual.ejecutando()) {
administradorDeEnemigos.generarEnemigo(oleadaActual.enemigos().anyOne())
} else if(oleadaActual.finalizo()){
self.siguienteOleada()
game.removeTickEvent("gestionar oleada")

tickParaGenerarEnemigos.stop()
}
}
}
)
} }
// Inicia la oleada y gestiona enemigos
method iniciarOleada() {
oleadaActual.iniciarOleada()
tickParaGenerarEnemigos.start()
}

// Pasa a la siguiente oleada
Expand All @@ -50,7 +45,9 @@ object administradorDeOleadas {
} else {
oleadaActual.terminarOleada()
if (numeroOleada == numOleadaFinal){ oleadaActual = oleadaFinal }
game.schedule(10000, { self.iniciarOleada() })
oleadaInicial.interval(10000)
oleadaInicial.start()
/* game.schedule(10000, { self.iniciarOleada() }) */
}

}
Expand All @@ -69,7 +66,10 @@ object administradorDeOleadas {
oleadaFinal.reset()
numeroOleada = 1
oleadaActual = oleadaNormal
game.schedule(4000, { self.iniciarOleada() })
self.frenarTickInicial()
oleadaInicial.interval(4000)
tickParaGenerarEnemigos.stop()
//game.schedule(4000, { self.iniciarOleada() })
}
method recibeDanioMago(danio){}
method frenarEnemigo()= true
Expand Down
8 changes: 4 additions & 4 deletions cursor.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ object cursor {

// Acciones del teclado
method accion() {
keyboard.right().onPressDo({ if(!administradorDeJuego.pausado()){self.moverseDerecha()} })
keyboard.left().onPressDo({ if(!administradorDeJuego.pausado()){self.moverseIzquierda()} })
keyboard.up().onPressDo({ if(!administradorDeJuego.pausado()){self.moverseArriba() }})
keyboard.down().onPressDo({ if(!administradorDeJuego.pausado()){self.moverseAbajo()} })
keyboard.right().onPressDo({ if(!administradorDeJuego.pausado()&& !administradorDeJuego.usuarioEnMenu()){self.moverseDerecha()} })
keyboard.left().onPressDo({ if(!administradorDeJuego.pausado()&& !administradorDeJuego.usuarioEnMenu()){self.moverseIzquierda()} })
keyboard.up().onPressDo({ if(!administradorDeJuego.pausado()&& !administradorDeJuego.usuarioEnMenu()){self.moverseArriba() }})
keyboard.down().onPressDo({ if(!administradorDeJuego.pausado()&& !administradorDeJuego.usuarioEnMenu()){self.moverseAbajo()} })
}

// Métodos de movimiento
Expand Down
2 changes: 2 additions & 0 deletions main.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ program juego {
menuInicial.iniciarMenu()
menuInicial.moverseEntreBotones()
menuInicial.activarBoton()
configuracion.iniciarConfig()
keyboard.x().onPressDo({administradorDeJuego.mostrarMenuInicial()})
//game.removeVisual(pantalla)

/* configuracion.agregarVisuals()
Expand Down
20 changes: 16 additions & 4 deletions menu.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import administradorDeJuego.administradorDeJuego
// ===============================
object menu {
// Propiedades y posición
const position = new MutablePosition(x = 0, y = 5)
var position = new MutablePosition(x = -1, y = 5)

// Métodos públicos
method position() = position
Expand All @@ -26,9 +26,9 @@ object menu {

// Acción del menú: Configura las teclas
method accion() {
keyboard.d().onPressDo({ if(!administradorDeJuego.pausado()){self.moverseDerecha() }})
keyboard.a().onPressDo({ if(!administradorDeJuego.pausado()){self.moverseIzquierda()} })
keyboard.enter().onPressDo({ if(!administradorDeJuego.pausado()){self.seleccionarMenu()}})
keyboard.d().onPressDo({ if(!administradorDeJuego.pausado() && !administradorDeJuego.usuarioEnMenu()){self.moverseDerecha() }})
keyboard.a().onPressDo({ if(!administradorDeJuego.pausado()&& !administradorDeJuego.usuarioEnMenu()){self.moverseIzquierda()} })
keyboard.enter().onPressDo({ if(!administradorDeJuego.pausado()&& !administradorDeJuego.usuarioEnMenu()){self.seleccionarMenu()}})
// cambiar aca para cambiar forma de generar enemigos
}

Expand Down Expand Up @@ -68,6 +68,7 @@ object menu {

// Tienda: Inicialización de los magos
method iniciarTienda() {
position= new MutablePosition(x = 0, y = 5)
// Añadiendo los magos disponibles en la tienda
game.addVisual(magoPiedraTienda)
game.addVisual(magoFuegoTienda)
Expand All @@ -78,4 +79,15 @@ object menu {
// Añadiendo la pala a la tienda
game.addVisual(pala)
}
method finalizarTienda(){
game.removeVisual(magoPiedraTienda)
game.removeVisual(magoFuegoTienda)
game.removeVisual(magoIrlandesTienda)
game.removeVisual(magoHieloTienda)
game.removeVisual(magoExplosivoTienda)
game.removeVisual(magoStopTienda)
// Añadiendo la pala a la tienda
game.removeVisual(pala)
position= new MutablePosition(x = -1, y = 5)
}
}
Loading

0 comments on commit 0b0099d

Please sign in to comment.