Skip to content

Commit

Permalink
agregue colisiones
Browse files Browse the repository at this point in the history
  • Loading branch information
franco-lapalma committed Oct 23, 2024
1 parent 5e751ed commit c30b4b8
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 5 deletions.
20 changes: 18 additions & 2 deletions example.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,22 @@ object nave {
method position(newPos) {
position = newPos
}

method colisionaCon(meteorito) {
const rango = 2 // Ajusta este valor según el tamaño deseado de la hitbox
return (meteorito.position().x() >= position.x() - rango && meteorito.position().x() <= position.x() + rango) &&
(meteorito.position().y() >= position.y() - rango && meteorito.position().y() <= position.y() + rango)
}
method disparar() = new Bala()

method image() = "nave.png"
method perderVida() {
vida = vida - 1
if (vida <= 0) {
game.stop()


}
}
}

class Bala{
Expand All @@ -37,7 +49,11 @@ class Meteorito {
method position(newPos) {
position = newPos
}

method colisionaCon(bala) {
const rango = 2 //uso esto para añadirle "hitbox" a los meteoritos y que no se limite solo a la celda base
return (bala.position().x() >= position.x() - rango && bala.position().x() <= position.x() + rango) &&
(bala.position().y() >= position.y() - rango && bala.position().y() <= position.y() + rango)
}
}

//La idea es que ESTE sea el fondo del juego.
Expand Down
46 changes: 43 additions & 3 deletions mainExample.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,14 @@ program meteoricSpace {
})

keyboard.up().onPressDo({
game.removeTickEvent("Movimiento izquierda")
game.removeTickEvent("Movimiento derecha")
nave.position(nave.position().up(5))
})

keyboard.down().onPressDo({
game.removeTickEvent("Movimiento izquierda")
game.removeTickEvent("Movimiento derecha")
nave.position(nave.position().down(5))
})

Expand All @@ -51,11 +55,12 @@ program meteoricSpace {
game.onTick(100, "Movimiento Balas",{
// Lista temporal para las balas que deben ser eliminadas
var balasABorrar = []
var meteoritosABorrar = []

balas.forEach({ bala =>
bala.position(bala.position().up(5))

if (bala.position().y() < 0) {
if (bala.position().y() > game.height()) {
balasABorrar.add(bala)
}
})
Expand All @@ -68,7 +73,7 @@ program meteoricSpace {
})

// Generar meteoritos
game.onTick(2000, "Aparece Meteorito",{
game.onTick(1000, "Aparece Meteorito",{
const x = fondo.limite_izquierdo().randomUpTo(fondo.limite_derecho()).truncate(0)
const y = 75

Expand All @@ -86,7 +91,7 @@ program meteoricSpace {
meteoritos.forEach({ meteorito =>
meteorito.position(meteorito.position().down(1))

if (meteorito.position().y() > game.height()) {
if (meteorito.position().y() < 0) {
meteoritosABorrar.add(meteorito) // Marcar para borrar
}
})
Expand All @@ -98,5 +103,40 @@ program meteoricSpace {
})
})

game.onTick(50, "Verificar Colisiones", {
// Listas temporales para las balas y meteoritos que deben ser eliminados
var balasABorrar = []
var meteoritosABorrar = []

balas.forEach({ bala =>
meteoritos.forEach({ meteorito =>
if (meteorito.colisionaCon(bala)) {
balasABorrar.add(bala)
meteoritosABorrar.add(meteorito)
}
})
})

// Verificar colisiones entre meteoritos y la nave
meteoritos.forEach({ meteorito =>
if (nave.colisionaCon(meteorito)) {
meteoritosABorrar.add(meteorito)
nave.perderVida()

}
})
// Borrar las balas que colisionaron
balasABorrar.forEach({ bala =>
balas.remove(bala)
game.removeVisual(bala)
})

// Borrar los meteoritos que colisionaron
meteoritosABorrar.forEach({ meteorito =>
meteoritos.remove(meteorito)
game.removeVisual(meteorito)
})
})

game.start()
}

0 comments on commit c30b4b8

Please sign in to comment.