Skip to content

Commit

Permalink
ahora el sonido de las pantallas funciona sin
Browse files Browse the repository at this point in the history
problemas. ademas los magos chekean solo cuando reciben daño si estan muertos,
y los slimes solo checkean si estan muertos cuando se mueven
  • Loading branch information
NahuelMarek committed Nov 14, 2024
1 parent 85d35a6 commit 31bf2d1
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 32 deletions.
62 changes: 42 additions & 20 deletions administradorDeJuego.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import proyectil.*
// =======================================
// Administrador de Juego: Control central del juego, reseteo y fin del juego
// =======================================

class MyException inherits wollok.lang.Exception {}
object administradorDeJuego {
var property pausado = false
var property usuarioEnMenu = false
Expand All @@ -36,7 +38,7 @@ object administradorDeJuego {
administradorDeOleadas.reset()
casa.reset()
puntaje.reset()
pantalla.reproducirSonido()
//pantalla.reproducirSonido()
// configuracion.iniciarMusica() // Iniciar música (opcional)
}

Expand Down Expand Up @@ -82,21 +84,40 @@ object pantalla {
method position() = new MutablePosition(x = 0, y = 0)
method image() = estado.imagen()

var estado = portada
var property estado = portada
var sonido = estado.sonido()
method estado()=estado

method reproducirSonido(){
sonido.play()
estado.sonido().volume(0.1)
estado.sonido().play()
}

method estado(estadoNuevo) {
estado = estadoNuevo
method detenerSonido(){
estado.sonido().stop()
}
method nuevoEstado(estadoNuevo) {
estado=estadoNuevo

self.reproducirSonido()
}
}

// =======================================
// Configuración del Juego: Música, Visuales y Eventos
// =======================================

object sonidoPartida{
var property sonido = "pvz8bit.mp3"
const musica = game.sound(sonido)
method iniciarMusica() {
musica.shouldLoop(true)
game.schedule(1500, { musica.play() })
musica.volume(0.5)
}
method detenerMusica(){
musica.stop()
}
}
object configuracion {
const tiemposProyectiles = 600
const tiempoDisparo = 3000
Expand All @@ -107,7 +128,11 @@ object configuracion {

var property sonido = "pvz8bit.mp3"
const musica = game.sound(self.sonido()) // El reproductor de música es constante; solo cambia el archivo de sonido

method iniciarMusica() {sonidoPartida.iniciarMusica()}
// Método para detener la música de fondo
method detenerMusica() {
musica.stop()
}
// Método para agregar elementos visuales y configurar teclas de control
method agregarVisuals() {

Expand All @@ -127,14 +152,18 @@ object configuracion {


// Tecla "P" para reiniciar el juego
keyboard.p().onPressDo({
keyboard.p().onPressDo({
try sonidoPartida.detenerMusica()
catch e : MyException {}
then always {
self.iniciarMusica()
administradorDeJuego.resetGame()
administradorDeJuego.usuarioEnMenu(false)
administradorDeJuego.pausado(false)
game.removeVisual(pantalla)
self.crearTicks()
puntaje.reset()

}
})

// Tecla "I" para detener el juego
Expand All @@ -151,8 +180,8 @@ object configuracion {

method iniciarTicks() {
game.onTick(tiempoMoverEnemigo, "mover enemigo", { administradorDeEnemigos.moverEnemigos() })
game.onTick(tiempoMuerte, "matar enemigos", { administradorDeEnemigos.estanMuertos() })
game.onTick(tiempoMuerte, "matar magos", { administradorDeMagos.matarMagos() })
//game.onTick(tiempoMuerte, "matar enemigos", { administradorDeEnemigos.estanMuertos() })
//game.onTick(tiempoMuerte, "matar magos", { administradorDeMagos.matarMagos() })
game.onTick(tiempoDinero, "aumentar dinero", { puntaje.sumarPuntos() })
game.onTick(tiempoDisparo, "disparar", { administradorDeMagos.disparar() })
game.onTick(tiemposProyectiles, "moverDisparos", { administradorDeProyectiles.moverProyectiles() })
Expand All @@ -164,16 +193,9 @@ object configuracion {
}

// Método para iniciar la música de fondo en bucle
method iniciarMusica() {
musica.shouldLoop(true)
game.schedule(1500, { musica.play() })
musica.volume(1)
}


// Método para detener la música de fondo
method detenerMusica() {
musica.stop()
}


// Método para eliminar todos los eventos programados de actualización (ticks)
method eliminarTicks() {
Expand Down
10 changes: 5 additions & 5 deletions administradorDeOleadas.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ object oleadaNormal {
}

method iniciarOleada(){
self.inicioOleada().volume(0.0001)
self.inicioOleada().play()
self.inicioOleada().volume(0)
//self.inicioOleada().play()
enemigosRestantes = cantidadEnemigos
}

Expand Down Expand Up @@ -159,14 +159,14 @@ object oleadaFinal {

// Termina la oleada final y concluye el juego
method terminarOleada() {
pantalla.estado(victoria)
pantalla.nuevoEstado(victoria)
administradorDeJuego.terminarJuego()

}

method iniciarOleada(){
self.inicioOleada().volume(0.0001)
self.inicioOleada().play()
self.inicioOleada().volume(0)
//self.inicioOleada().play()
enemigosRestantes = cantidadEnemigos
}

Expand Down
4 changes: 3 additions & 1 deletion casa.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ object casa {
self.sonidoDanio().volume(0.3)
//self.explosion().play()
if(vida <= 0) {
pantalla.estado(derrota)
administradorDeJuego.terminarJuego()
sonidoPartida.detenerMusica()
pantalla.nuevoEstado(derrota)

}
}
method reset() {
Expand Down
1 change: 1 addition & 0 deletions magos.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ class Mago {

method recibeDanioMago(_danio) {
self.vida(self.vida() - _danio)
self.matar()
}

method sePuedeSuperponer() = false
Expand Down
3 changes: 1 addition & 2 deletions main.wpgm
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import wollok.game.*
import administradorDeJuego.*


program juego {

game.boardGround("fondo2.jpg")
Expand All @@ -12,8 +13,6 @@ program juego {

game.addVisual(pantalla)
game.schedule(100, {pantalla.reproducirSonido()})


game.schedule(8000, {
game.removeVisual(pantalla)
configuracion.agregarVisuals()
Expand Down
6 changes: 3 additions & 3 deletions pruebas.wtest
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,17 @@ describe "Test de magos" {

test "Mago Fuego tiene vida" {
const mago = new MagoFuego(position = game.at(0,0))
assert.equals(100, mago.vida())
assert.that(0<mago.vida())
}

test "Mago Healer tiene vida" {
const mago = new MagoIrlandes(position = game.at(0,0))
assert.equals(100, mago.vida())
assert.that(0<mago.vida())
}

test "Mago Piedra tiene vida" {
const mago = new MagoPiedra(position = game.at(0,0))
assert.equals(300, mago.vida())
assert.that(0<mago.vida())
}

test "Mago Fuego Recibe Daño" {
Expand Down
2 changes: 1 addition & 1 deletion puntaje.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import administradorDeMagos.*
// Puntaje: Manejo de puntos
// ===============================
object puntaje {
const puntajeInicial = 50
const puntajeInicial = 5000

var property puntos = puntajeInicial

Expand Down
1 change: 1 addition & 0 deletions slime.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class Slime {

// Movimiento del Slime
method movete() {
self.estaMuerto()
self.meFreno()
if (self.enMovimiento())
return position.goLeft(tipo.desplazamiento())
Expand Down

0 comments on commit 31bf2d1

Please sign in to comment.