Skip to content

Commit

Permalink
cambios en velocidad
Browse files Browse the repository at this point in the history
Co-authored-by: MatttiB <[email protected]>
  • Loading branch information
acorromolas11 and MatttiB committed Nov 7, 2024
1 parent 0094811 commit 2114219
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 61 deletions.
37 changes: 20 additions & 17 deletions comida.wlk
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
import homero.*
import wollok.game.*
import tableros.*

// TODO: La velocidad no debe ser la de homero, sino el coeficiente general de tick de caída
// TODO: Deben existir cosas que no conviene agarrar (silla de plástico) porque pierden de una
// TODO: Cuando agarra la cerveza se invierten los movimientos -> NO VALE USAR IF EN NINGUN LADO
// POLEMORFESMOOOOOOOOO
import niveles.*

class Comida{
var property nombre
var property puntos
var property velocidad
var property velocidadCaida
const tipoAvance = aLaDerecha
const fulminante = noPierde

method velocidadCaida() = velocidadCaida

method velocidadCaida(nuevaVelocidad){
velocidadCaida = nuevaVelocidad
}

var position = new MutablePosition(x=(0..game.width()).anyOne()*2, y=game.height())

method image() = nombre + ".png"
Expand All @@ -25,10 +28,10 @@ class Comida{

method bajar(){
if (position.y() >= -2){
position.goDown(2)
position.goDown(1)
}else{
game.removeVisual(self)
position.goUp(18)
position.goUp(game.height())
self.positionX((0..(game.width()-2)).anyOne())
game.addVisual(self)
}
Expand Down Expand Up @@ -87,16 +90,16 @@ object noPierde{

}
}
const rosquilla = new Comida(nombre="rosquilla", puntos=5, velocidad=0)
const banana = new Comida(nombre="banana", puntos=-3, velocidad=1.2)
const plutonio = new Comida(nombre="plutonio", puntos=15, velocidad=0.25)
const cerveza = new Comida(nombre="cerveza", puntos=15, velocidad=0.25,tipoAvance=aLaIzquierda)
const choripan = new Comida(nombre="choripan", puntos=7, velocidad=0.5)
const mate = new Comida(nombre="mate", puntos=20, velocidad=0.1)
const te = new Comida(nombre="te", puntos=-50, velocidad=2)
const ensalada = new Comida(nombre="ensalada", puntos=-15, velocidad=1.75)
const guiso = new Comida(nombre="guiso", puntos=15, velocidad=0.75)
const silla = new Comida(nombre="silla", puntos=-100, velocidad=1, fulminante=pierde)
const rosquilla = new Comida(nombre="rosquilla", puntos=5, velocidad=0, velocidadCaida=1500)
const banana = new Comida(nombre="banana", puntos=-3, velocidad=1.2, velocidadCaida=1400)
const plutonio = new Comida(nombre="plutonio", puntos=15, velocidad=0.25, velocidadCaida=1300)
const cerveza = new Comida(nombre="cerveza", puntos=15, velocidad=0.25, velocidadCaida=1200, tipoAvance=aLaIzquierda)
const choripan = new Comida(nombre="choripan", puntos=7, velocidad=0.5, velocidadCaida=1100)
const mate = new Comida(nombre="mate", puntos=20, velocidad=0.1, velocidadCaida=1000)
const te = new Comida(nombre="te", puntos=-50, velocidad=2, velocidadCaida=900)
const ensalada = new Comida(nombre="ensalada", puntos=-15, velocidad=1.75, velocidadCaida=800)
const guiso = new Comida(nombre="guiso", puntos=15, velocidad=0.75, velocidadCaida=700)
const silla = new Comida(nombre="silla", puntos=-100, velocidad=1, velocidadCaida=600, fulminante=pierde)

const comidasNivel1 = [rosquilla, banana, plutonio, choripan, cerveza,silla]
const comidasNivel2 = comidasNivel1 + [mate,ensalada,guiso,te]
10 changes: 2 additions & 8 deletions homero.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ object homero{

method come(comida) {
ultimaComida = comida
self.sumarPuntos(comida.puntos())
juego.velocidad(comida.velocidad())
juego.actualizarCaida()
self.sumarPuntos(comida.puntos())
}

method position() = position
Expand Down Expand Up @@ -47,10 +48,3 @@ object homero{

method image() = "homero-"+ ultimaComida.image()
}

// Usar bastante polimorfismo. Podemos usarlo con los objetos que caen (las caracteristicas de los objetos, comportamientios, efectos sobre Homero, puntos,
// si tiene un efecto de mejora o peora sobre Homero que le cambie la imagen de él), la imagen de fondo por cada nivel, (efectos de sonido, musica para mas adelante)
// Ivo da permiso para repetir el permiso "bajá" -> Importante
// Dos niveles con fondos distintos (idealmente)
// Para pasar de nivel tenemos que matar el código del 1er nivel para se que incorpore el siguiente y asi sucesivamente
// No poner en Tests colisiones o ticks
72 changes: 46 additions & 26 deletions niveles.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@ import tableros.*
import wollok.game.*
import fondos.*

//Estados : inicio, jugando, finalizado
// TODO: pensar la estructura general de cada nivel, y lo que difiere.
// No repetir lo general. -> Pista, seguro usarán clases.
// Pista: quizás la herencia pueda ayudar también.
// No repetir nada de lógica.

object juego {
var nivelActual = nivel1
var velocidad = 1
var contador = 0

method contador () = contador

method sumarContador(){
contador = contador + 100
}

method verificarFinDeNivel(){
nivelActual.verificarFinDeNivel()
Expand All @@ -21,6 +23,11 @@ object juego {
}
}

method actualizarCaida(){
game.removeTickEvent("baja")
self.nivelActual().bajarComidas()
}

method nivelActual() = nivelActual

method velocidad(x){
Expand All @@ -41,6 +48,15 @@ class Nivel{
estado = x
}

method bajarComidas(){
//lvl1
game.onTick(rosquilla.velocidadCaida()* juego.velocidad(), "baja", {rosquilla.bajar()})
game.onTick(cerveza.velocidadCaida()* juego.velocidad(), "baja", {cerveza.bajar()})
game.onTick(banana.velocidadCaida()* juego.velocidad(), "baja", {banana.bajar()})
game.onTick(plutonio.velocidadCaida()* juego.velocidad(), "baja", {plutonio.bajar()})
game.onTick(silla.velocidadCaida()* juego.velocidad(), "baja", {silla.bajar()})
}

method inicializarValores(){
homero.puntos(0)
juego.velocidad(1)
Expand Down Expand Up @@ -73,22 +89,22 @@ class Nivel{
//Que el ontick sea global y que el juego.velocidad() sea como un contador de ticks, en el que si pasa cierto tiempo
//baja la comida (para que se actualice en el juego)

//ACA: Un solo onTick que haga bajar todas las comidas, que tendrías un IF que cada cierta cantidad de onTicks. El onTick tiene que ser global del juego.
//Contador de tick, un valor que se calcula de la propia velocidad y de la velocidad de la comida, y eso que sea divisor del contador que tengo.
//hacer que los asserts sean mas lindos, corregir la velocidad

method iniciarNivel(){
self.estado("jugando")
game.removeVisual(mensajes)
comidasNivel1.forEach({comida => game.addVisual(comida)})

game.onTick(1000 * juego.velocidad(), "baja", {rosquilla.bajar()})
game.onTick(800 * juego.velocidad() , "baja", {banana.bajar()})
game.onTick(400 * juego.velocidad() , "baja", {choripan.bajar()})
game.onTick(900 * juego.velocidad() , "baja", {cerveza.bajar()})
game.onTick(500 * juego.velocidad() , "baja", {plutonio.bajar()})
game.onTick(200 * juego.velocidad() , "baja", {silla.bajar()})

keyboard.a().onPressDo({homero.moverseIzquierda()})
keyboard.d().onPressDo({homero.moverseDerecha()})

game.onCollideDo(homero, {cosa => cosa.interactua(homero) })

self.bajarComidas()

game.onCollideDo(homero, {cosa => cosa.interactua(homero)})

game.onTick(1000, "restarSegundo", {tiempo.restarSegundo()})
}
Expand Down Expand Up @@ -125,6 +141,21 @@ class Nivel{

object nivel2 inherits Nivel(estado = "espera"){

override method bajarComidas(){
//lvl1
game.onTick(rosquilla.velocidadCaida() * juego.velocidad() * 2, "baja", {rosquilla.bajar()})
game.onTick(cerveza.velocidadCaida()* juego.velocidad() * 2, "baja", {cerveza.bajar()})
game.onTick(banana.velocidadCaida()* juego.velocidad() * 2, "baja", {banana.bajar()})
game.onTick(plutonio.velocidadCaida()* juego.velocidad() * 2, "baja", {plutonio.bajar()})
game.onTick(silla.velocidadCaida()* juego.velocidad() * 2, "baja", {silla.bajar()})

//lvl2
game.onTick(mate.velocidadCaida() * juego.velocidad(), "baja", {mate.bajar()})
game.onTick(te.velocidadCaida() * juego.velocidad() , "baja", {te.bajar()})
game.onTick(ensalada.velocidadCaida() * juego.velocidad(), "baja", {ensalada.bajar()})
game.onTick(guiso.velocidadCaida() * juego.velocidad() , "baja", {guiso.bajar()})
}

override method iniciarFondo(){
game.title("Homero en El Obelisco")

Expand All @@ -143,18 +174,8 @@ object nivel2 inherits Nivel(estado = "espera"){
self.estado("jugando")
game.removeVisual(mensajeParaNivel2)
comidasNivel2.forEach({comida => game.addVisual(comida)})
//lvl2
game.onTick(1200 * juego.velocidad(), "baja", {mate.bajar()})
game.onTick(500 * juego.velocidad() , "baja", {te.bajar()})
game.onTick(600 * juego.velocidad(), "baja", {ensalada.bajar()})
game.onTick(1500 * juego.velocidad() , "baja", {guiso.bajar()})
//lvl1
game.onTick(1200 * juego.velocidad(), "baja", {rosquilla.bajar()})
game.onTick(1300 * juego.velocidad() , "baja", {banana.bajar()})
game.onTick(1400 * juego.velocidad() , "baja", {choripan.bajar()})
game.onTick(800 * juego.velocidad() , "baja", {cerveza.bajar()})
game.onTick(1000 * juego.velocidad() , "baja", {plutonio.bajar()})
game.onTick(200 * juego.velocidad() , "baja", {silla.bajar()})

self.bajarComidas()

game.onTick(1000, "restarSegundo", {tiempo.restarSegundo()})
}
Expand All @@ -174,6 +195,5 @@ object nivel2 inherits Nivel(estado = "espera"){

}

//Estados nivel2 : espera,inicio, jugando, finalizado


10 changes: 0 additions & 10 deletions pruebas.wtest
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,10 @@ import comida.*
import tableros.*

describe "homero" {
// TODO: Hay que testear funcionalidad interesante, lógica del juego.
test "Homero inicia con 0 puntos" {
assert.equals(homero.puntos(), 0)
}

// TODO: Si quieren chequear igualdad, deben usar .equals

test "Homero inicia en la posicion x=mitad de la pantalla, y=0" {
assert.equals(homero.position().x(), (game.width()/2).roundUp())
assert.equals(homero.position().y(), 0)
Expand Down Expand Up @@ -84,11 +81,4 @@ describe "homero" {
assert.equals(nivel1.estado(),"ganado")
}


// TODO: tests de los distintos comportamientos de las comidas
// (o sea que la velocidad y los puntos se aumenten correctamente)
// TODO: test que se mueve correctamente de acuerdo a la velocidad (la cantidad de casillas)
// TODO: tests de distintos casos de movimientos (por ejemplo que no salga de la pantalla)
// Pensar los casos de tests que yo quiero probar. (escribir con texto)
// Elijan algún conjunto lindo y cerrado para testear.
}

0 comments on commit 2114219

Please sign in to comment.