Skip to content

Commit

Permalink
Delegué algo de logica pero no me andan las colisiones
Browse files Browse the repository at this point in the history
  • Loading branch information
FrancoGegon committed Nov 11, 2024
1 parent 20843c9 commit 9985bd2
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 44 deletions.
47 changes: 18 additions & 29 deletions main.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -45,24 +45,23 @@ program FulbotGame {
const jugador2 = new Jugador( cansancio = 0, imagen = "brasilero.png", position = new MutablePosition(x=95, y=50))

// Items
const pelota = new Item( imagen = "pelota.png", position = game.at(110, 50))
const bananaPeel1 = new Item( imagen = "bananaPeel.png")
const bananaPeel2 = new Item( imagen = "bananaPeel.png")
const bananaPeel3 = new Item( imagen = "bananaPeel.png")
const pelota = new Item( imagen = "pelota.png", position = game.at(110, 50), frase = "")
const bananaPeel1 = new CascaraBanana( imagen = "bananaPeel.png", frase = "Noooooooo")
const bananaPeel2 = new CascaraBanana( imagen = "bananaPeel.png", frase = "Noooooooo")
const bananaPeel3 = new CascaraBanana( imagen = "bananaPeel.png", frase = "Noooooooo")

// Tarjetas
const tarjetaAmarilla = new TarjetaAmarilla( imagen = "yellowCard.png")
const tarjetaRoja = new TarjetaRoja( imagen = "redCard.png")
const tarjetaAmarilla = new Tarjetas( imagen = "yellowCard.png", frase = "Toma amarilla", cantidad = 20)
const tarjetaRoja = new Tarjetas( imagen = "redCard.png", frase = "Toma roja", cantidad = 100)

// Consumibles
const gaseosa1 = new Consumible( energia = 30, imagen = "coke2.png")
const gaseosa2 = new Consumible( energia = 30, imagen = "coke2.png")
const comida = new Consumible( energia = 80, imagen = "food.png")
const banana1 = new Consumible( energia = 40, imagen = "bananas.png")
const banana2 = new Consumible( energia = 40, imagen = "bananas.png")
const agua1 = new Consumible( energia = 20, imagen = "agua.png")
const agua2 = new Consumible( energia = 20, imagen = "agua.png")
const cerveza = new Consumible(energia = -20, imagen = "cerveza.png")
const gaseosa1 = new Consumible( energia = 30, imagen = "coke2.png", frase = "rica gaseosa")
const gaseosa2 = new Consumible( energia = 30, imagen = "coke2.png", frase = "rica gaseosa")
const comida = new Consumible( energia = 80, imagen = "food.png", frase = "Gracias por la comida")
const banana1 = new Consumible( energia = 40, imagen = "bananas.png", frase = "Gracias por la fruta")
const banana2 = new Consumible( energia = 40, imagen = "bananas.png", frase = "Gracias por la fruta")
const agua1 = new Consumible( energia = 20, imagen = "agua.png", frase = "Rica agua!")
const agua2 = new Consumible( energia = 20, imagen = "agua.png", frase = "Rica agua!")

// Arcos
const arco1X = game.width() / 2 - 5 // Coordenada x de la portería 1 (izquierda)
Expand Down Expand Up @@ -98,7 +97,6 @@ program FulbotGame {
game.addVisual(banana2)
game.addVisual(agua1)
game.addVisual(agua2)
game.addVisual(cerveza)
game.say(jugador1, jugador1.decir("Muchaaaaachoooooos"))
game.say(jugador2, jugador2.decir("Eu nao falo portugues"))
})
Expand All @@ -121,9 +119,10 @@ program FulbotGame {
game.onTick(10000, "se mueve", { agua2.moverseAlAzar() })

// COLISIONES

/*
game.onTick(100, "chequeo de colisiones", {
// CON CONSUMIBLES
/*
if ((jugador1.position().x() - gaseosa1.position().x()).abs() < 5 and
(jugador1.position().y() - gaseosa1.position().y()).abs() < 5) {
jugador1.consumir(gaseosa1)
Expand Down Expand Up @@ -187,17 +186,6 @@ program FulbotGame {
game.say(jugador1, jugador1.decir("Noooooooo"))
game.removeVisual(bananaPeel3)
}
if ((jugador1.position().x() - cerveza.position().x()).abs() < 5 and
(jugador1.position().y() - cerveza.position().y()).abs() < 5) {
jugador1.decir("ESTOY MAREADO")
game.schedule(10000, jugador1.efectoAlReves(jugador1))
game.removeVisual(cerveza)
jugador1.decir("NO TOMO MAS")
keyboard.w().onPressDo({ jugador1.moverseArriba(5) })
keyboard.a().onPressDo({ jugador1.moverseIzquierda(5) })
keyboard.s().onPressDo({ jugador1.moverseAbajo(5) })
keyboard.d().onPressDo({ jugador1.moverseDerecha(5) })
}

// CON TARJETAS
if ((jugador1.position().x() - tarjetaAmarilla.position().x()).abs() < 5 and
Expand Down Expand Up @@ -253,7 +241,8 @@ program FulbotGame {
} else if (jugador2.position().y() > pelota.position().y()) {
pelota.moverse(pelota.position().x(), pelota.position().y() - 5)
}
}
}*/
/*
if (pelota.position().x() >= arco1X && pelota.position().x() <= (arco1X + arco1Ancho) &&
pelota.position().y() >= arco1Y && pelota.position().y() <= (arco1Y + arco1Alto)) {
golesJugador2 += 1
Expand All @@ -266,7 +255,7 @@ program FulbotGame {
game.say(jugador1, "¡Gol para el Jugador 1! Total: " + golesJugador1)
pelota.moverse(110, 50) // Reiniciar la posición de la pelota
}
})
})*/

game.start()
}
92 changes: 77 additions & 15 deletions objects.wlk
Original file line number Diff line number Diff line change
@@ -1,25 +1,17 @@
class Jugador {
var goles = 0
const imagen
const position = game.center()
var cansancio = 0

method image() = imagen
method position() = position
method cansancio() = cansancio
method goles() = goles

method consumir(consumible) {
cansancio = 0.max(cansancio - consumible.energia())
}

method efectoAlReves(jugador) {
keyboard.s().onPressDo({ jugador.moverseArriba(5) })
keyboard.d().onPressDo({ jugador.moverseIzquierda(5) })
keyboard.w().onPressDo({ jugador.moverseAbajo(5) })
keyboard.a().onPressDo({ jugador.moverseDerecha(5) })
}

method recuperarEnergia(energia) {
if(cansancio - energia < 0){cansancio = 0}else{cansancio -= energia}
cansancio = 0.max(cansancio - energia)cansancio = 0.max(cansancio - energia)
}

method cansarse(pos) {
Expand Down Expand Up @@ -59,10 +51,34 @@ class Jugador {
}

method decir(texto) = texto

method colision(item,jugador, numero) =
(jugador.position().x() - item.position().x()).abs() < numero and
(jugador.position().y() - item.position().y()).abs() < numero

method efectoColision(jugador,item) {
if (jugador.colision(item,jugador,5)) {
jugador.aplicar(item)
game.say(jugador, jugador.decir(item.frase()))
game.removeVisual(item)
}

}


method hacerGol(pelota,jugador){
if(pelota.estaEnAreaDeGol(pelota)){
goles += 1
game.say(jugador, "¡Gol para el Jugador 1! Total: " + goles)
pelota.moverse(110, 50)
}
}

}

class Item {
const imagen
var frase
const x = 0.randomUpTo(game.width()).truncate(0)
const y = 0.randomUpTo(game.height()).truncate(0)
var position = game.at(x, y)
Expand All @@ -77,22 +93,68 @@ class Item {
const y_random = 0.randomUpTo(game.height()).truncate(0)
position = game.at(x_random,y_random)
}

method frase() = frase
}

class Consumible inherits Item {
const energia
method energia() = energia
method aplicar(jugador,consumible) {
jugador.recuperarEnergia(energia)
}
}

class TarjetaRoja inherits Item {
class Tarjetas inherits Item {
var cantidad
method aplicar(jugador) {
jugador.cansarse(100) // cuál es la diferencia entre esto y hardcodearle el efecto desde main?
jugador.cansarse(cantidad) // cuál es la diferencia entre esto y hardcodearle el efecto desde main?
}
}

class TarjetaAmarilla inherits Item {
class CascaraBanana inherits Item {
method aplicar(jugador) {
jugador.cansarse(20)
jugador.moverseArriba(5)
jugador.moverseDerecha(10)
}
}

class Pelota inherits Item{
const arco1X = game.width() / 2 - 5 // Coordenada x de la portería 1 (izquierda)
const arco1Y = 0 // Coordenada y de la portería 1
const arco1Ancho = 10 // Ancho de la portería 1
const arco1Alto = 5 // Alto de la portería 1

const arco2X = game.width() / 2 - 5 // Coordenada x de la portería 2 (derecha)
const arco2Y = game.height() - 10 // Coordenada y de la portería 2
const arco2Ancho = 10 // Ancho de la portería 2
const arco2Alto = 5 // Alto de la portería 2

// Marcadores de goles
const proximidad = 4

method golpearPelota(jugador, pelota){
if (jugador.colision(pelota,jugador,4)){
pelota.direccionarPelota(jugador,pelota)
}
}

method direccionarPelota(jugador,pelota){
if (jugador.position().x() < pelota.position().x()) {
pelota.moverse(pelota.position().x() + 3, pelota.position().y())
} else if (jugador.position().x() > pelota.position().x()) {
pelota.moverse(pelota.position().x() - 3, pelota.position().y())
}
if (jugador.position().y() < pelota.position().y()) {
pelota.moverse(pelota.position().x(), pelota.position().y() + 3)
} else if (jugador.position().y() > pelota.position().y()) {
pelota.moverse(pelota.position().x(), pelota.position().y() - 3)
}
}

method estaEnAreaDeGol(pelota) = pelota.position().x() >= arco1X && pelota.position().x() <= (arco1X + arco1Ancho) &&
pelota.position().y() >= arco1Y && pelota.position().y() <= (arco1Y + arco1Alto)


}

0 comments on commit 9985bd2

Please sign in to comment.