From 9985bd246daa7d843b65549ddc3cb0d31a710c42 Mon Sep 17 00:00:00 2001 From: FrancoGegon Date: Mon, 11 Nov 2024 12:19:48 -0300 Subject: [PATCH] =?UTF-8?q?Delegu=C3=A9=20algo=20de=20logica=20pero=20no?= =?UTF-8?q?=20me=20andan=20las=20colisiones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.wpgm | 47 +++++++++++---------------- objects.wlk | 92 ++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 95 insertions(+), 44 deletions(-) diff --git a/main.wpgm b/main.wpgm index 72025bb..23769d9 100644 --- a/main.wpgm +++ b/main.wpgm @@ -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) @@ -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")) }) @@ -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) @@ -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 @@ -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 @@ -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() } diff --git a/objects.wlk b/objects.wlk index aee3f94..4a0d8e8 100644 --- a/objects.wlk +++ b/objects.wlk @@ -1,4 +1,5 @@ class Jugador { + var goles = 0 const imagen const position = game.center() var cansancio = 0 @@ -6,20 +7,11 @@ class Jugador { 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) { @@ -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) @@ -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) + + +}