Skip to content

Commit

Permalink
Subo avances colisiones con pelota, consumibles, prototipos arcos
Browse files Browse the repository at this point in the history
  • Loading branch information
IsiAliEmir committed Nov 6, 2024
1 parent fcf86d5 commit a9c21ba
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 12 deletions.
5 changes: 4 additions & 1 deletion ProximosPasos.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
- [X] Cambiar background por una mejor cancha.
- [X] Agregar más consumibles (objetos distintos).
- [X] Agregar la pelota.
- [X] MODELAR COLISION BASICA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- [ ] Modelar interacción con la pelota (que la patee en una direccion).
- [ ] Revisar colisión con consumibles (que el consumible desaparezca (y cómo vuelve a aparecer otro?)).
- [ ] Modelar colisión con jugador rival? (que lo empuje).
- [ ] Definir bordes de la cancha.
- [X] Agregar sonido de ambiente.
- [ ] Agregar sonidos de colisiones.
- [ ] Modelar mecánica de goles............y de fin de partida.
- [ ] Agregar menú?
- [ ] Agregar menú?
- [ ] Agregar ¿tarjetas? para afectar al otro jugador (tarjeta roja lo deja quieto por ej.).
Binary file added assets/rangoPelota.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
82 changes: 73 additions & 9 deletions main.wpgm
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ import objects.*
program FulbotGame {
game.title("Fulbot")
game.boardGround("pitch.jpg")
game.height(100)
game.width(100)
game.cellSize(10)
game.height(100) //tenemos un alto de 100 celdas (1000 pixeles).
game.width(100) //tenemos un ancho de 100 celdas (1000 pixeles).
game.cellSize(10) //tenemos celdas de 10x10 pixeles.

//SONIDOS

const sonidoAmbiente = game.sound("sonidoAmbiente.mp3")
sonidoAmbiente.shouldLoop(true)
game.schedule(500, {
sonidoAmbiente.play()
keyboard.m().onPressDo({sonidoAmbiente.volume(0)})
keyboard.m().onPressDo({sonidoAmbiente.volume(50)})
//keyboard.n().onPressDo({sonidoAmbiente.volume(50)}) Por alguna razon da EvaluationError al presionar 'n'...
})

Expand Down Expand Up @@ -43,15 +43,30 @@ program FulbotGame {
const agua1 = new Consumible( energia = 20, imagen = "agua.png")
const agua2 = new Consumible( energia = 20, imagen = "agua.png")

const arco1X = 0 // Coordenada x de la portería 1 (izquierda)
const arco1Y = 40 // Coordenada y de la portería 1
const arco1Ancho = 10 // Ancho de la portería 1
const arco1Alto = 20 // Alto de la portería 1

const arco2X = 40 - arco1Ancho // Coordenada x de la portería 2 (derecha)
const arco2Y = 40 // Coordenada y de la portería 2
const arco2Ancho = 10 // Ancho de la portería 2
const arco2Alto = 20 // Alto de la portería 2

// Marcadores de goles
var golesJugador1 = 0
var golesJugador2 = 0 // Comprobar si la pelota entra en el arco del jugador 1

// COLISIONES

//game.whenCollideDo(jugador1, { algo => game.say(jugador1,jugador1.decir("Epa!")) })
//game.whenCollideDo(jugador1, game.say(jugador1,jugador1.decir("Epa!")))

/*game.whenCollideDo(banana, { elemento =>
//game.whenCollideDo(rangoPelota, { algo => game.say(rangoPelota,"Epa!!!!!!!") })
/*
game.whenCollideDo(banana1, { elemento =>
game.say(elemento,elemento.hablar("Gracias"))
elemento.recuperarEnergia(banana.energia())
}) //AÑADIR UN REMOVE PARA EL VISUAL. */
elemento.recuperarEnergia(banana1.energia())
})
*/

// EVENTOS PROGRAMADOS

Expand Down Expand Up @@ -83,5 +98,54 @@ program FulbotGame {
game.onTick(10000, "se mueve", { agua1.moverse() })
game.onTick(10000, "se mueve", { agua2.moverse() })

game.onTick(100, "chequeo de colisiones", {
// Verificamos si el jugador1 está cerca de un consumible y lo recoge
if ((jugador1.position().x() - gaseosa1.position().x()).abs() < 5 and
(jugador1.position().y() - gaseosa1.position().y()).abs() < 5) {
jugador1.recuperarEnergia(gaseosa1.energia())
jugador1.decir("RICA GASEOSA")
game.removeVisual(gaseosa1) // El consumible desaparece visualmente
}
if ((jugador1.position().x() - gaseosa2.position().x()).abs() < 5 and
(jugador1.position().y() - gaseosa2.position().y()).abs() < 5) {
jugador1.recuperarEnergia(gaseosa2.energia())
jugador1.decir("RICA GASEOSA")
game.removeVisual(gaseosa2) // El consumible desaparece visualmente
}
if ((jugador1.position().x() - banana1.position().x()).abs() < 5 and
(jugador1.position().y() - banana1.position().y()).abs() < 5) {
jugador1.recuperarEnergia(banana1.energia())
game.removeVisual(banana1) // El consumible desaparece visualmente
}

if ((jugador1.position().x() - pelota.position().x()).abs() < 5 and
(jugador1.position().y() - pelota.position().y()) .abs() < 5) {
// Mover la pelota en la misma dirección que el jugador1
if (jugador1.position().x() < pelota.position().x()) {
pelota.moverse(pelota.position().x() - 5, pelota.position().y() - 5) // Mover a la izquierda
} else {
pelota.moverse(pelota.position().x() + 5, pelota.position().y() + 5) // Mover a la derecha
}
}

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)
pelota.moverse(50, 50) // Reiniciar la posición de la pelota
}

// Comprobar si la pelota entra en el arco del jugador 2
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)
pelota.moverse(50, 50) // Reiniciar la posición de la pelota
}

})

game.start()
}
9 changes: 8 additions & 1 deletion objects.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,22 @@ class Consumible {
}

object pelota {
method image() = "pelota.png"
var position = new MutablePosition(x=50, y=50)

method image() = "pelota.png"
method position() = position
method moverse(x, y) {
position = game.at(x, y)
}
}

object rangoPelota {
var position = game.at(20, 20)

method image() = "rangoPelota.png"
method position() = position
}




Expand Down
2 changes: 1 addition & 1 deletion pruebas.wtest
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import main.*

describe "group of tests for jugador" {

const jugador = new Jugador(cansancio = 0, imagen = "brasil2.png")
const jugador = new Jugador(cansancio = 0, imagen = "argentino.png")

test "el jugador arranca con cansancio 0" {
assert.equals(0, jugador.cansancio())
Expand Down

0 comments on commit a9c21ba

Please sign in to comment.