Skip to content

Commit

Permalink
se refacoriza el codigo en masterBatalla
Browse files Browse the repository at this point in the history
  • Loading branch information
tobias-albornoz committed Nov 29, 2024
1 parent 30f1a6c commit 453ca65
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 113 deletions.
2 changes: 1 addition & 1 deletion src/ataques.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ object veneno inherits Ataque(nombre = "Veneno", danioBase = 12, nombreImagen =
object rayoSolar inherits Ataque(nombre = "Rayo Solar", danioBase = 25, nombreImagen = "RayoSolar.png") {}
object latigoCepa inherits Ataque(nombre = "Látigo Cepa", danioBase = 14, nombreImagen = "LatigoCepa.png") {}

object teclasAtaques {
object teclas {
const property position = game.at(54, 5)
method image() = "teclasAtaques.png"
}
218 changes: 106 additions & 112 deletions src/masterBatalla.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -9,115 +9,59 @@ class ControladorDeBatalla {
var indexPokemonJugador = 0
var indexPokemonComputadora = 0


// Define la música de fondo
const musicaFondo = game.sound("Pokemon_batalla_sound.mp3")

// Método para iniciar el juego y configurar todo
method iniciar() {

// Configurar la música de fondo
musicaFondo.shouldLoop(true)
musicaFondo.play()

equipoComputadora.forEach({ pokemon => pokemon.cambiarSide() })

game.addVisual(self.pokemonActivoJugador())
game.addVisual(vidaJugador)

game.addVisual(self.pokemonActivoComputadora())
self.actualizarImagenVidaJugador()
self.actualizarImagenVidaComputadora()
game.addVisual(vidaComputadora)

self.agregarTeclasAtaques()
game.addVisual(teclasAtaques)
self.configurarTeclasAtaque()
}


method finalizarBatalla() {

}

// Devuelve el Pokémon activo del equipo del jugador
method pokemonActivoJugador() = equipoJugador.get(indexPokemonJugador)

// Devuelve el Pokémon activo del equipo de la computadora
method pokemonActivoComputadora() = equipoComputadora.get(indexPokemonComputadora)

method configurarTeclasAtaque() {
keyboard.a().onPressDo({ self.ejecutarAtaqueJugador(0) })
keyboard.s().onPressDo({ self.ejecutarAtaqueJugador(1) })
keyboard.d().onPressDo({ self.ejecutarAtaqueJugador(2) })
keyboard.f().onPressDo({ self.ejecutarAtaqueJugador(3) })
}

method agregarTeclasAtaques() {
const ataques = self.pokemonActivoJugador().ataques()
ataques.forEach({ ataque => game.addVisual(ataque) })
ataques.forEach({ ataque => self.enviarPosicion(ataques, ataque) })
}

method enviarPosicion(ataques, ataque) {
const index = self.obtenerIndice(ataques, ataque)
if (index >= 0) {
ataque.cambiarPosicion(index)
}
}

method obtenerIndice(array, valor) {
var indice = -1
var i = 0
array.forEach({ elemento =>
if (elemento == valor) {
indice = i
} else{
i += 1
}
})
return indice
}


// Ejecuta el ataque elegido por el jugador
method ejecutarAtaqueJugador(indiceAtaque) {
const pokemonJugador = self.pokemonActivoJugador()
const pokemonComputadora = self.pokemonActivoComputadora()


if (pokemonJugador.vida() > 0 && indiceAtaque < pokemonJugador.ataques().size()) {
if (pokemonJugador.vida() > 0) {
const ataque = pokemonJugador.ataques().get(indiceAtaque)

ataque.ejecutar(pokemonJugador, pokemonComputadora)
const cuadroAtaque = object {
const property position = game.at(10, 35)
method image() = "cuadro" + ataque.nombreImagen()
}
game.addVisual(cuadroAtaque)
game.schedule(1500, { game.removeVisual(cuadroAtaque) })

cuadroJugador.setearNombre(ataque.nombreImagen())

self.verificarEstado()
self.actualizarImagenVidaJugador()
self.actualizarImagenVidaComputadora()
game.schedule(2000, { self.turnoComputadora() })
} else {
game.removeVisual(vidaJugador)
}

game.schedule(1200, { self.turnoComputadora() })
}
}

method turnoComputadora() {
const pokemonComputadora = self.pokemonActivoComputadora()
const pokemonJugador = self.pokemonActivoJugador()


if (pokemonComputadora.vida() > 0) {
const ataque = pokemonComputadora.elegirAtaque(pokemonJugador)
const cuadroAtaque = object {
const property position = game.at(25, 35)
method image() = "cuadro" + ataque.nombreImagen()
}
game.addVisual(cuadroAtaque)
game.schedule(1500, { game.removeVisual(cuadroAtaque) })

cuadroComputadora.setearNombre(ataque.nombreImagen())

self.verificarEstado()
self.actualizarImagenVidaJugador()
self.actualizarImagenVidaComputadora()
}
}

Expand All @@ -126,51 +70,51 @@ class ControladorDeBatalla {
const pokemonJugador = self.pokemonActivoJugador()
const pokemonComputadora = self.pokemonActivoComputadora()

// Verifica si el Pokémon del jugador ha sido derrotado
if (pokemonJugador.vida() <= 0) {
game.removeVisual(pokemonJugador)
game.removeVisual(vidaJugador)
pokemonJugador.ataques().forEach({ ataque => game.removeVisual(ataque) })

indexPokemonJugador += 1
if (indexPokemonJugador < equipoJugador.size()) {

if(indexPokemonJugador < equipoJugador.size()) {
self.agregarBotonesAtaques()
game.addVisual(self.pokemonActivoJugador())
self.agregarTeclasAtaques()
}else{
self.terminarBatalla("lose")
}
}

// Verifica si el Pokémon de la computadora ha sido derrotado
if (pokemonComputadora.vida() <= 0) {
game.removeVisual(pokemonComputadora)
game.removeVisual(vidaComputadora)

indexPokemonComputadora += 1
if (indexPokemonComputadora < equipoComputadora.size()) game.addVisual(
self.pokemonActivoComputadora()
)

if (indexPokemonComputadora < equipoComputadora.size()) {
game.addVisual(self.pokemonActivoComputadora())
} else{
pokemonJugador.ataques().forEach({ ataque => game.removeVisual(ataque) })
self.terminarBatalla("win")
}
}

if (self.equipoDerrotado()) {
// Desactivar teclas al finalizar la batalla
self.actualizarImagenJugador()
self.actualizarImagenComputadora()

}

method terminarBatalla(resultado) {
musicaFondo.stop()
self.desactivarTeclas()
pokemonJugador.ataques().forEach({ ataque => game.removeVisual(ataque) })
game.removeVisual(teclasAtaques)
game.removeVisual(teclas)

visualFinal.setter(resultado)

const winloseSound = game.sound("Win_sound.mp3")

if (self.determinarGanador() == "Equipo Computadora") game.addVisual(lose)
if (self.determinarGanador() == "Equipo Jugador") game.addVisual(win)

winloseSound.play()

// Detener la música de fondo
musicaFondo.stop()

game.schedule(1500, { game.stop() })
}
}

method desactivarTeclas() {
keyboard.a().onPressDo({ })
keyboard.s().onPressDo({ })
keyboard.d().onPressDo({ })
keyboard.f().onPressDo({ })
}

// Verifica si alguno de los equipos ha sido derrotado
Expand All @@ -179,29 +123,46 @@ class ControladorDeBatalla {
// Determina el equipo ganador
method determinarGanador() = if (indexPokemonJugador >= equipoJugador.size()) "Equipo Computadora" else "Equipo Jugador"

method actualizarImagenVidaJugador(){
method actualizarImagenJugador(){
vidaJugador.actualizarImagen(self.pokemonActivoJugador().vida())
}

method actualizarImagenVidaComputadora() {
method actualizarImagenComputadora() {
vidaComputadora.actualizarImagen(self.pokemonActivoComputadora().vida())
}
}

object win {
const position = game.at(35, 20)

method position() = position
method agregarBotonesAtaques() {
const ataques = self.pokemonActivoJugador().ataques()
ataques.forEach({ ataque => game.addVisual(ataque) })
ataques.forEach({ ataque => self.enviarPosicion(ataques, ataque) })
}

method image() = "win.png"
}
method enviarPosicion(ataques, ataque) {
const index = self.obtenerIndice(ataques, ataque)
if (index >= 0) {
ataque.cambiarPosicion(index)
}
}

object lose {
const position = game.at(35, 20)

method position() = position

method image() = "lose.png"
const listTeclas = [keyboard.a(), keyboard.s(), keyboard.d(), keyboard.f()]
method desactivarTeclas() = listTeclas.forEach{ tecla => tecla.onPressDo{} }
method configurarTeclasAtaque() {
listTeclas.forEach{ tecla => tecla.onPressDo{ self.ejecutarAtaqueJugador(self.obtenerIndice(listTeclas, tecla)) } }
game.addVisual(teclas)
self.agregarBotonesAtaques()
}

method obtenerIndice(array, valor) {
var indice = -1
var i = 0
array.forEach({ elemento =>
if (elemento == valor)
indice = i
else
i += 1
})
return indice
}
}

class Vida{
Expand All @@ -217,9 +178,7 @@ class Vida{

method actualizarImagen(vidaPokemon) {
const nuevaImagenVida = self.obtenerImagenVida(vidaPokemon)
game.removeVisual(self)
self.setImage(nuevaImagenVida)
game.addVisual(self)
}

method obtenerImagenVida(vida) {
Expand All @@ -235,3 +194,38 @@ object vidaJugador inherits Vida {
object vidaComputadora inherits Vida{
override method position() = game.at(31, 21)
}

class Cuadro{
var image = ""

method position()

method image() = image

method setearNombre(nuevoNombre){
image = "cuadro" + nuevoNombre
game.addVisual(self)
game.schedule(500, { game.removeVisual(self) })
}
}

object cuadroJugador inherits Cuadro {
override method position() = game.at(10, 35)
}

object cuadroComputadora inherits Cuadro {
override method position() = game.at(25, 35)
}


object visualFinal {
var image = ""
method position() = game.at(35, 20)

method image() = image

method setter(resultado) {
image = resultado + ".png"
game.addVisual(self)
}
}

0 comments on commit 453ca65

Please sign in to comment.