Skip to content

Commit

Permalink
Errores solucionados por completo (hay poco lag)
Browse files Browse the repository at this point in the history
  • Loading branch information
LautaroPingitore committed Oct 24, 2024
1 parent e6f8832 commit f3b099a
Show file tree
Hide file tree
Showing 3 changed files with 171 additions and 85 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ Por otro lado, en la función spawnEnemigo() también usamos polimorfismo para e
Finalmente, en el objeto spawnEnemigo usamos una lista de funciones, lo que hace mucho más fácil la creación de enemigos. Al poner algo como const pieza = [new Peon(), new Caballo()].anyOne(), logramos que la función sea más simple, corta y flexible. Si en el futuro queremos agregar una nueva pieza, solo tenemos que sumarla a la lista, sin cambiar casi nada del código.

## Diagrama de Clases
![Diagrama Clases Tp Juego](https://github.com/user-attachments/assets/0bd99893-63bb-4416-9bb6-6bb5a2641431)
![Diagrama Clases Tp Juego](assets/DiagramaClasesTpJuego.png)
Binary file added assets/DiagramaClasesTpJuego.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
254 changes: 170 additions & 84 deletions juegoAjedrez2.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import main.*

object juegoAjedrez2{

var nroJuego = 1
var juegoPausado = false
method estaPausado() = juegoPausado
var juegoTerminado = false
Expand All @@ -18,28 +19,32 @@ object juegoAjedrez2{

self.agregarPersonaje(reyNegro)
game.boardGround("fondo.png")
keyboard.w().onPressDo({reyNegro.moverArriba()})
keyboard.s().onPressDo({reyNegro.moverAbajo()})
keyboard.space().onPressDo({reyNegro.disparar()})
spawnEnemigo.comenzarSpawn()

keyboard.p().onPressDo({
if(!juegoPausado) {
self.pausarJuego()
pausa.agregarTextoDePausa()
}
self.inicarTeclasUnicaVez()
}

method inicarTeclasUnicaVez() {
if(nroJuego == 1) {
keyboard.w().onPressDo({reyNegro.moverArriba()})
keyboard.s().onPressDo({reyNegro.moverAbajo()})
keyboard.space().onPressDo({reyNegro.disparar()})
keyboard.p().onPressDo({
if(!juegoPausado) {
self.pausarJuego()
pausa.agregarTextoDePausa()
}
else self.reanudarJuego()
})
keyboard.r().onPressDo(
{ if(juegoTerminado) {
puntajeFinal.reiniciarPuntos()
self.removerVisual(puntajeFinal)
self.iniciar()
juegoPausado = false
}
})


keyboard.r().onPressDo(
{ if(juegoTerminado) {
reyNegro.reiniciarPersonaje()
self.removerVisual(puntajeFinal)
self.iniciar()
juegoPausado = false
}
})
nroJuego += 1
}
}

method agregarPersonaje(personaje) {
Expand Down Expand Up @@ -167,9 +172,6 @@ object puntajeFinal {
juegoAjedrez2.terminarJuego()
juegoAjedrez2.agregarVisual(self)
}
method reiniciarPuntos() {
puntaje = 0
}
}

object pausa{
Expand All @@ -193,7 +195,7 @@ class Bala {
method position() = position

method moverse() {
if(position.x() == 8) {
if(position.x() == game.width() - 1) {
juegoAjedrez2.removerVisual(self)
juegoAjedrez2.removerEvento(moverse)
} else {
Expand All @@ -206,37 +208,37 @@ class Bala {

}

class Peon {
const moverse = new Tick(interval = 1500, action = {self.moverse()})

class PiezaBlanca {
const moverse = new Tick(interval = 2000, action = {self.moverse()})
method empezarMoverse() {
juegoAjedrez2.agregarEvento(moverse)
}
var vida
const puntajeDado
var position = game.at(game.width() - 1, [0,1,2,3,4].anyOne())
const danioAEfectuar

var vida = 100
const property puntaje = 100
var position = game.at(8,0.randomUpTo(4).round())
const danioAEfectuar = 100000

method position() = position
method image() = "peon.png"
method position() = position
method puntaje() = puntajeDado

method moverse() {
if(!juegoAjedrez2.estaPausado()) {
if(position.x() == 1) {
reyNegro.recibirDanio(danioAEfectuar)
self.morir(true)
} else {
self.accionExtra()
position = position.left(1)
}
}
}

method accionExtra() {}

method recibirDanio(danio) {
vida = vida - danio
vida = 0.max(vida)
vida = 0.max(vida - danio)
self.morir(false)
position = position.right(1)
self.consecuenciaDisparo()
}

method morir(llegoFinal) {
Expand All @@ -250,42 +252,26 @@ class Peon {
}
}

method consecuenciaDisparo() {
position = position.right(1)
}

// FUNCIONES PARA TESTS
method vida() = vida
method cambiarPosicion(nueva) { position = nueva}
}

class Caballo {
const moverse = new Tick(interval = 2000, action = {self.moverse()})

method empezarMoverse() {
juegoAjedrez2.agregarEvento(moverse)
}
// FUNCIONES PARA TESTS
method vida() = vida
method cambiarPosicion(posicion) {position = posicion}

var vida = 75
const property puntaje = 150
var position = game.at(8,0.randomUpTo(4).round())
const danioAEfectuar = 20
}

method position() = position
class Peon inherits PiezaBlanca(vida = 100, puntajeDado = 50, danioAEfectuar = 100) {
method image() = "peon.png"
}

class Caballo inherits PiezaBlanca(vida = 75, puntajeDado = 100, danioAEfectuar = 15) {
var imagenActual = "caballo.png"
method image() = imagenActual

method moverse() {
if(!juegoAjedrez2.estaPausado()) {
if(position.x() == 1) {
reyNegro.recibirDanio(danioAEfectuar)
self.morir(true)
} else {
self.randomArribaOAbajo()
position = position.left(1)
}
}
}

method randomArribaOAbajo() {
override method accionExtra() {
if(position.y() == 0) {
position = position.up(1)
} else if(position.y() == 4) {
Expand All @@ -295,30 +281,130 @@ class Caballo {
}
}

method recibirDanio(danio) {
vida = vida - danio
vida = 0.max(vida)
self.cambiarImagenTemporal()
self.morir(false)
override method consecuenciaDisparo() {
imagenActual = "caballodañado.png"
game.schedule(1000, { imagenActual = "caballo.png" })
}

method cambiarImagenTemporal(){
imagenActual = "caballodañado.png" // Cambia la imagen a 'caballodañado.png'
game.schedule(1000, { imagenActual = "caballo.png" }) // Después de 1 segundo, restaura la imagen original
}

}

method morir(llegoFinal) {
if(vida == 0) {
reyNegro.sumarPuntos(self)
juegoAjedrez2.removerEvento(moverse)
juegoAjedrez2.removerVisual(self)
} else if(llegoFinal) {
juegoAjedrez2.removerEvento(moverse)
juegoAjedrez2.removerVisual(self)
}
}

}


// class Peon1 {
// const moverse = new Tick(interval = 1500, action = {self.moverse()})

// method empezarMoverse() {
// juegoAjedrez2.agregarEvento(moverse)
// }

// var vida = 100
// const property puntaje = 100
// var position = game.at(8,0.randomUpTo(4).round())
// const danioAEfectuar = 100000

// method position() = position
// method image() = "peon.png"

// method moverse() {
// if(!juegoAjedrez2.estaPausado()) {
// if(position.x() == 1) {
// reyNegro.recibirDanio(danioAEfectuar)
// self.morir(true)
// } else {
// position = position.left(1)
// }
// }
// }

// method recibirDanio(danio) {
// vida = vida - danio
// vida = 0.max(vida)
// self.morir(false)
// position = position.right(1)
// }

// method morir(llegoFinal) {
// if(vida == 0) {
// reyNegro.sumarPuntos(self)
// juegoAjedrez2.removerEvento(moverse)
// juegoAjedrez2.removerVisual(self)
// } else if(llegoFinal) {
// juegoAjedrez2.removerEvento(moverse)
// juegoAjedrez2.removerVisual(self)
// }
// }


// // FUNCIONES PARA TESTS
// method vida() = vida
// method cambiarPosicion(nueva) { position = nueva}
// }

// class Caballo1 {
// const moverse = new Tick(interval = 2000, action = {self.moverse()})

// method empezarMoverse() {
// juegoAjedrez2.agregarEvento(moverse)
// }

// var vida = 75
// const property puntaje = 150
// var position = game.at(8,0.randomUpTo(4).round())
// const danioAEfectuar = 20

// method position() = position

// var imagenActual = "caballo.png"
// method image() = imagenActual

// method moverse() {
// if(!juegoAjedrez2.estaPausado()) {
// if(position.x() == 1) {
// reyNegro.recibirDanio(danioAEfectuar)
// self.morir(true)
// } else {
// self.randomArribaOAbajo()
// position = position.left(1)
// }
// }
// }

// method randomArribaOAbajo() {
// if(position.y() == 0) {
// position = position.up(1)
// } else if(position.y() == 4) {
// position = position.down(1)
// } else {
// position = [position.up(1),position.down(1)].anyOne()
// }
// }

// method recibirDanio(danio) {
// vida = vida - danio
// vida = 0.max(vida)
// self.cambiarImagenTemporal()
// self.morir(false)
// }

// method cambiarImagenTemporal(){
// imagenActual = "caballodañado.png" // Cambia la imagen a 'caballodañado.png'
// game.schedule(1000, { imagenActual = "caballo.png" }) // Después de 1 segundo, restaura la imagen original
// }

// method morir(llegoFinal) {
// if(vida == 0) {
// reyNegro.sumarPuntos(self)
// juegoAjedrez2.removerEvento(moverse)
// juegoAjedrez2.removerVisual(self)
// } else if(llegoFinal) {
// juegoAjedrez2.removerEvento(moverse)
// juegoAjedrez2.removerVisual(self)
// }
// }

// }

object spawnEnemigo {
method comenzarSpawn() {
Expand Down

0 comments on commit f3b099a

Please sign in to comment.