Skip to content

Commit

Permalink
Agrego avances goles, creo clase Pelota
Browse files Browse the repository at this point in the history
  • Loading branch information
IsiAliEmir committed Nov 13, 2024
1 parent dd4ba97 commit 006b588
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 46 deletions.
3 changes: 2 additions & 1 deletion ProximosPasos.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
A realizar
- [X] Arreglar mecánica para llevar la pelota.
- [X] Agregar mecánica para patear la pelota en una dirección.
- [ ] Agregar mecánica para colisiones con borde de la cancha.
- [ ] Agregar mecánica de goles: sonido, contador y reinicio posiciones.
- [casi] Agregar mecánica de goles: sonido, contador y reinicio posiciones.
- [ ] Agregar mecánica para fin de partida: que imprima un cartelito y envíe al menú principal.
- [ ] Agregar menú principal.
- [ ] Agregar sonidos colisiones.
Expand Down
66 changes: 35 additions & 31 deletions main.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -56,29 +56,30 @@ program FulbotGame {
const yInfAmbosArcos = 42
const ySupAmbosArcos = 56

// Coordenadas jugadores
// Coordenadas iniciales
const xiJugador1 = 97
const xiJugador2 = 120
const yiAmbosJugadores = 50
const yiTodos = 50
const xiPelota = 110

// Jugadores
const jugador1 = new Jugador (image = "argentino.png", position = new MutablePosition(x=xiJugador1, y=yiAmbosJugadores))
const jugador2 = new Jugador (image = "brasilero.png", position = new MutablePosition(x=xiJugador2, y=yiAmbosJugadores))
// Jugadores y Pelota
const jugador1 = new Jugador (image = "argentino.png", position = new MutablePosition(x=xiJugador1, y=yiTodos))
const jugador2 = new Jugador (image = "brasilero.png", position = new MutablePosition(x=xiJugador2, y=yiTodos))
const pelota = new Pelota (position = game.at(xiPelota, yiTodos))

// Consumibles y Tarjetas
const agua1 = new Agua() const agua2 = new Agua() const agua3 = new Agua() const agua4 = new Agua()
const gaseosa1 = new Gaseosa() const gaseosa2 = new Gaseosa()
const comida = new Comida()
const banana1 = new Banana() const banana2 = new Banana()
const bananaPeel1 = new BananaPeelDer() const bananaPeel2 = new BananaPeelIzq()
const bananaPeel1 = new BananaPeelDer() const bananaPeel2 = new BananaPeelIzq() const bananaPeel3 = new BananaPeelIzq()
const amarilla1 = new TarjetaAmarilla() const amarilla2 = new TarjetaAmarilla()
const roja = new TarjetaRoja()

const consumibles = [agua1, agua2, agua3, agua4, gaseosa1, gaseosa2, comida, banana1, banana2, bananaPeel1, bananaPeel2]
const consumibles = [agua1, agua2, agua3, agua4, gaseosa1, gaseosa2, comida, banana1, banana2, bananaPeel1, bananaPeel2, bananaPeel3]
const tarjetas = [amarilla1, amarilla2, roja]

// Otros
const pelota = new Item (image = "pelota.png", position = game.at(110, 50))
var golesJugador1 = 0
var golesJugador2 = 0

Expand All @@ -90,7 +91,7 @@ program FulbotGame {
game.addVisual(gaseosa1) game.addVisual(gaseosa2)
game.addVisual(comida)
game.addVisual(banana1) game.addVisual(banana2)
game.addVisual(bananaPeel1) game.addVisual(bananaPeel2)
game.addVisual(bananaPeel1) game.addVisual(bananaPeel2) game.addVisual(bananaPeel3)
game.addVisual(amarilla1) game.addVisual(amarilla2)
game.addVisual(roja)
game.say(jugador1, "Muchaaaaachoooooos")
Expand All @@ -99,7 +100,7 @@ program FulbotGame {
// EVENTOS DE INICIO
game.schedule (1000, { agua1.moverseAlAzar() agua2.moverseAlAzar() })
game.schedule (2000, { agua3.moverseAlAzar() agua4.moverseAlAzar() })
game.schedule (3000, { banana1.moverseAlAzar() bananaPeel1.moverseAlAzar() })
game.schedule (3000, { banana1.moverseAlAzar() bananaPeel1.moverseAlAzar() bananaPeel3.moverseAlAzar() })
game.schedule (4000, { gaseosa1.moverseAlAzar() gaseosa2.moverseAlAzar()})
game.schedule (6000, { banana2.moverseAlAzar() bananaPeel2.moverseAlAzar() })
game.schedule (8000, { comida.moverseAlAzar() })
Expand All @@ -112,30 +113,33 @@ program FulbotGame {
game.onTick (100, "chequeo de colisiones", {
[jugador1, jugador2].forEach({ jugador =>
jugador.agarrarConsumible (consumibles)
jugador.llevarPelota (pelota)
jugador.llevarPelota (pelota)
})
jugador1.agarrarTarjeta (tarjetas, jugador2)
jugador2.agarrarTarjeta (tarjetas, jugador1)
// Arco1
if (pelota.entraEnArcoIzq(xLineaArco1, yInfAmbosArcos, ySupAmbosArcos)) {
pelota.irseDePantalla()
golesJugador2 += 1
game.say(jugador2, "¡Gol para el Jugador 2! Total: " + golesJugador2)
//reproducir sonidito.
game.schedule(2000, {
pelota.moverse(xiPelota, yiTodos)
//reiniciar posición jugadores.
})
}
// Arco2
if (pelota.entraEnArcoDer(xLineaArco2, yInfAmbosArcos, ySupAmbosArcos)) {
pelota.irseDePantalla()
golesJugador1 += 1
game.say(jugador1, "¡Gol para el Jugador 1! Total: " + golesJugador1)
//reproducir sonidito.
game.schedule(2000, {
pelota.moverse(xiPelota, yiTodos)
//reiniciar posición jugadores.
})
}
})
/*
if (pelota.position().x() >= arco1X && pelota.position().x() <= (arco1X + arco1Ancho) &&
pelota.position().y() >= arco1Y && pelota.position().y() <= (arco1Y + arco1Alto)) {
golesJugador2 += 1
game.say(jugador2, "¡Gol para el Jugador 2! Total: " + golesJugador2)
// Reiniciamos posiciones
pelota.moverse(110, 50)
jugador1.moverse(xiJugador1, yiAmbosJugadores)
jugador2.moverse(xiJugador2, yiAmbosJugadores)
}
if (pelota.position().x() >= arco2X && pelota.position().x() <= (arco2X + arco2Ancho) &&
pelota.position().y() >= arco2Y && pelota.position().y() <= (arco2Y + arco2Alto)) {
golesJugador1 += 1
game.say(jugador1, "¡Gol para el Jugador 1! Total: " + golesJugador1)
// Reiniciamos posiciones
pelota.moverse(110, 50)
jugador1.moverse(xiJugador1, yiAmbosJugadores)
jugador2.moverse(xiJugador2, yiAmbosJugadores)
}
*/

game.start()
}
44 changes: 30 additions & 14 deletions objects.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,12 @@ class Jugador {
method seMueveIzquierda() = ultimaDireccion == "izquierda"
method seMueveArriba() = ultimaDireccion == "arriba"
method seMueveAbajo() = ultimaDireccion == "abajo"

method moverse(xNueva, yNueva) { // por ahora este método no lo usamos.
/*
method moverse(xNueva, yNueva) {
x = xNueva
y = yNueva
}
*/
method estaCercaDe(algo) =
(self.position().x() - algo.position().x()).abs() < rangoProximidad and
(self.position().y() - algo.position().y()).abs() < rangoProximidad
Expand Down Expand Up @@ -125,6 +126,9 @@ class Item {
method moverse(xf, yf) {
position = game.at(xf, yf)
}
method irseDePantalla() {
self.moverse(-100, -100)
}
method moverseAlAzar() {
position = game.at(12.randomUpTo(208).truncate(0), 2.randomUpTo(96).truncate(0))
}
Expand All @@ -143,7 +147,7 @@ class Agua inherits Consumible (energia = 20, potencia = 5, image = "agua.png")
game.say(jugador, jugador.decir("Rica agua"))
}
override method desaparecer() {
self.moverse(-100, -100)
self.irseDePantalla()
game.schedule(1000, {
self.moverseAlAzar() // reaparece luego de 1 seg.
game.onTick (8000, "el agua se empieza a mover", {self.moverseAlAzar()}) })
Expand All @@ -156,7 +160,7 @@ class Gaseosa inherits Consumible (energia = 30, potencia = 5, image = "coke2.pn
game.say(jugador, jugador.decir("Rica gaseosa"))
}
override method desaparecer() {
self.moverse(-100, -100)
self.irseDePantalla()
game.schedule(2000, {
self.moverseAlAzar() // reaparece luego de 2 seg.
game.onTick (8000, "la gaseosa se empieza a mover", {self.moverseAlAzar()}) })
Expand All @@ -169,7 +173,7 @@ class Banana inherits Consumible (energia = 40, potencia = 10, image = "bananas.
game.say(jugador, jugador.decir("Rica fruta"))
}
override method desaparecer() {
self.moverse(-100, -100)
self.irseDePantalla()
game.schedule(3000, {
self.moverseAlAzar() // reaparece luego de 3 seg.
game.onTick (6000, "la banana se empieza a mover", {self.moverseAlAzar()}) })
Expand All @@ -182,35 +186,35 @@ class Comida inherits Consumible (energia = 80, potencia = 20, image = "comida.p
game.say(jugador, jugador.decir("Rica comida"))
}
override method desaparecer() {
self.moverse(-100, -100)
self.irseDePantalla()
game.schedule(5000, {
self.moverseAlAzar() // reaparece luego de 5 seg.
game.onTick (5000, "la comida se empieza a mover", {self.moverseAlAzar()}) })
}
}
class BananaPeelDer inherits Consumible (energia = 20, image = "bananaPeel.png") {
class BananaPeelDer inherits Consumible (energia = 10, image = "bananaPeel.png") {
override method aplicarSobre(jugador) {
jugador.perderEnergia(energia) // permite 10 pasos menos.
jugador.perderEnergia(energia) // permite 5 pasos menos.
jugador.moverseArriba(5.randomUpTo(15).truncate(0))
jugador.moverseDerecha(5.randomUpTo(15).truncate(0))
game.say(jugador, jugador.decir("Noooooooo"))
}
override method desaparecer() {
self.moverse(-100, -100)
self.irseDePantalla()
game.schedule(100, {
self.moverseAlAzar() // reaparece casi instantáneamente.
game.onTick (2000, "la bananaPeelDer se empieza a mover", {self.moverseAlAzar()}) })
}
}
class BananaPeelIzq inherits Consumible (energia = 20, image = "bananaPeel.png") {
class BananaPeelIzq inherits Consumible (energia = 10, image = "bananaPeel.png") {
override method aplicarSobre(jugador) {
jugador.perderEnergia(energia) // permite 10 pasos menos.
jugador.perderEnergia(energia) // permite 5 pasos menos.
jugador.moverseAbajo(5.randomUpTo(15).truncate(0))
jugador.moverseIzquierda(5.randomUpTo(15).truncate(0))
game.say(jugador, jugador.decir("Noooooooo"))
}
override method desaparecer() {
self.moverse(-100, -100)
self.irseDePantalla()
game.schedule(100, {
self.moverseAlAzar() // reaparece casi instantáneamente.
game.onTick (4000, "la bananaPeelIzq se empieza a mover", {self.moverseAlAzar()}) })
Expand All @@ -230,7 +234,7 @@ class TarjetaAmarilla inherits Tarjeta (energia = 50, potencia = 10, image = "ye
game.say(jugador, jugador.decir("Toma amarilla"))
}
override method desaparecer() {
self.moverse(-100, -100)
self.irseDePantalla()
game.schedule(5000, {
self.moverseAlAzar() // reaparece luego de 5 seg.
game.onTick (4000, "la tarjAmarilla se empieza a mover", {self.moverseAlAzar()}) })
Expand All @@ -243,9 +247,21 @@ class TarjetaRoja inherits Tarjeta (energia = 100, potencia = 20, image = "redCa
game.say(jugador, jugador.decir("Toma roja!"))
}
override method desaparecer() {
self.moverse(-100, -100)
self.irseDePantalla()
game.schedule(10000, {
self.moverseAlAzar() // reaparece luego de 10 seg.
game.onTick (2000, "la tarjRoja se empieza a mover", {self.moverseAlAzar()}) })
}
}
// Pelota
class Pelota inherits Item (image = "pelota.png") {
method entraEnArcoIzq(xIzq, yInf, ySup) =
self.position().x() < xIzq and
self.position().y() > yInf and
self.position().y() < ySup

method entraEnArcoDer(xDer, yInf, ySup) =
self.position().x() > xDer and
self.position().y() > yInf and
self.position().y() < ySup
}

0 comments on commit 006b588

Please sign in to comment.