Skip to content

Commit

Permalink
ahora los objetos caen y cuando homero come un objeto cambia de forma.
Browse files Browse the repository at this point in the history
Co-authored-by: MatttiB <[email protected]>
  • Loading branch information
acorromolas11 and MatttiB committed Oct 14, 2024
1 parent bd82d2b commit 829911f
Show file tree
Hide file tree
Showing 22 changed files with 274 additions and 39 deletions.
32 changes: 30 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,45 @@ UTN - Facultad Regional Buenos Aires - Materia Paradigmas de Programación
- Dimotta, Cecilia.
- Giangrandi, Agostino.


## Capturas

![homeroGame](image.png)

## Reglas de Juego / Instrucciones

(completar...)
Descripción del Juego:
Homero, el "levantapalas 3000", decidió ceder su puesto en la central nuclear a pasantes de la UTN. Ahora trabaja desde casa, ¡pero hay un problema! Nunca usó una computadora y se quedó dormido intentando encontrar la "tecla cualquiera". En su sueño, Homero debe atrapar comida que cae del cielo, pero cuidado: no toda la comida es buena, y las cosas se complican con cada nivel. ¡Ayuda a Homero a comer bien y ganar!

Objetivo del Juego:
Atrapa comida para sumar puntos y alcanza el puntaje necesario antes de que el tiempo se agote.
Si consigues el puntaje requerido, pasas al siguiente nivel. Si no lo logras, "Over Game".

Cómo Jugar:
Movimiento:
Homero solo se puede mover de izquierda a derecha.
Desplázalo para atrapar la comida que cae del cielo con Space.
Tipos de Comida:
Buffea (suma puntos): Ejemplos como choripanes, donas, plutonio, cerveza, mate.
Nerfea (resta puntos): Ejemplos como banana, ensalada, te, polenta.

Mecánica del Juego:
1. Puntos y Niveles:
Cada comida atrapada puede sumar o restar puntos.
Debes alcanzar el puntaje objetivo antes de que el tiempo termine para avanzar al siguiente nivel.
2. Dificultad Progresiva:
Más puntos necesarios en cada nivel.
Más comidas nerfeadoras que restan puntos.
Mayor velocidad de aparición de la comida.
Mayor velocidad de caída de los objetos.

Consejos para Ganar:
Evita las comidas nerfeadoras y enfócate en atrapar los buffeos.
Administra el tiempo y prioriza las comidas con más puntos.
Ten cuidado: ¡A mayor nivel, más rápido todo se pone!

## Controles:

- `A` para moverse a la izquierda.
- `D` para moverse a la derecha.
- `Space` para agarrar objeto.

Binary file added assets/cerveza.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/choripan.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/ensalada.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/golondrina.png
Binary file not shown.
Binary file added assets/guiso.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/homero-banana.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/homero-cerveza.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/homero-choripan.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/homero-ensalada.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/homero-guiso.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/homero-mate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/homero-plutonio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
Binary file added assets/homero-te.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/mate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/obelisco.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/plutonio.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/plutonio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/te.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
233 changes: 207 additions & 26 deletions homero.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import wollok.game.*

object puntosHomero {
const hom = homero
const position = new MutablePosition(x=7, y=9)
const position = new MutablePosition(x=9, y=10)

method position() = position

Expand All @@ -29,73 +29,254 @@ method movimiento(){

object homero{
var puntos = 0
var velocidad = 1
const position = new MutablePosition(x=7, y=0)
const limitRightPosition = new MutablePosition (x=14, y=0)
const limitLeftPosition = new MutablePosition (x=0, y=0)
var velocidad = 2
const position = new MutablePosition(x=8, y=0)
var estado = new Rosquilla()

method image() = "homero.png"
method position() = position

//
method moverseIzquierda(){
if(position != limitLeftPosition)
position.goLeft(velocidad)
if(position.x() >= 0 && position.x() - velocidad >= 0)
position.goLeft(velocidad)
}

method moverseDerecha(){
if(position != limitRightPosition){
position.goRight(velocidad)
}
if(position.x() <= 16 && position.x() + velocidad <= 16)
position.goRight(velocidad)
}
//

/*
method moverseIzquierda(){
position.goLeft(velocidad)
}
method moverseDerecha(){
position.goRight(velocidad)
}
*/
method alterarPuntos(nuevosPuntos){
puntos += nuevosPuntos
puntos = puntos.max(0)
}

method alterarVelocidad(nuevaVelocidad){
velocidad += nuevaVelocidad
velocidad = velocidad.max(1)
velocidad = velocidad.max(2)
}

method puntos() = puntos

method velocidad() = velocidad

method poneteGrasoso() { estado = new Rosquilla() }
method poneteRadiactivo() { estado = new Plutonio() }
method convertiteEnMono() { estado = new Banana() }
method cometeUnChoripan() { estado = new Choripan() }
method tomateUnMate() { estado = new Mate() }
method tomateUnaCerveza() { estado = new Cerveza() }
method tomateUnTe() { estado = new Te() }
method comeEnsalada() { estado = new Ensalada() }
method poneteObeso() { estado = new Guiso() }

method estaGrasoso() = estado.nombre() == "rosquilla"
method estaRadiactivo() = estado.nombre() == "plutonio"
method estaMono() = estado.nombre() == "banana"
method estaEnAsado() = estado.nombre() == "choripan"
method estaTomandoMate() = estado.nombre() == "mate"
method estaTomandoCerveza() = estado.nombre() == "cerveza"
method estaTomandoTe() = estado.nombre() == "te"
method estaComiendoEnsalada() = estado.nombre() == "ensalada"
method estaObeso() = estado.nombre() == "guiso"



method image() = "homero-" + estado.nombre() + ".png"

}

// Averiguar cómo poder configurar el tamaño de pixeles que abarca un objeto (en este caso, la Rosquilla y la Banana)
class Rosquilla {
const position = new MutablePosition(x=0, y=0)
var property nombre = "rosquilla"
const position = new MutablePosition(x= (0..8).anyOne()*2, y=16)
const puntos = 10
const velocidad = 1
const velocidad = 2

method position() = position
method image() = "rosquilla.png"
method puntos () = puntos
method velocidad () = velocidad

method bajar (){
if (position.y() >= -2){
position.goDown(2)
}
}

method interactua(homero) { homero.poneteGrasoso()}

}

class Banana {
const position = new MutablePosition(x=game.width()-3, y=0)
var property nombre = "banana"
const position = new MutablePosition(x=(0..8).anyOne()*2, y=16)
const puntos = -5
const velocidad = -1
const velocidad = -2

method position() = position
method image() = "banana.png"
method puntos () = puntos
method velocidad () = velocidad

method interactua(homero) { homero.convertiteEnMono()}

method bajar (){
if (position.y() >= -2){
position.goDown(2)
}
}

}

class Plutonio{
var property nombre = "plutonio"
const position = new MutablePosition(x=(0..8).anyOne()*2, y=16)
const puntos = 20
const velocidad = -2

method position() = position
method image() = "plutonio.png"
method puntos () = puntos
method velocidad () = velocidad

method interactua(homero) { homero.poneteRadiactivo() }

method bajar (){
if (position.y() >= -2){
position.goDown(2)
}
}

}

class Choripan {
var property nombre = "choripan"
const position = new MutablePosition(x=(0..8).anyOne()*2, y=16)
const puntos = 5
const velocidad = 2

method position() = position
method image() = "choripan.png"
method puntos () = puntos
method velocidad () = velocidad

method interactua(homero) { homero.cometeUnChoripan() }

method bajar (){
if (position.y() >= -2){
position.goDown(2)
}
}

}

class Mate {
var property nombre = "mate"
const position = new MutablePosition(x=(0..8).anyOne()*2, y=16)
const puntos = 100
const velocidad = 4

method position() = position
method image() = "mate.png"
method puntos () = puntos
method velocidad () = velocidad

method interactua(homero) { homero.tomateUnMate() }

method bajar (){
if (position.y() >= -2){
position.goDown(2)
}
}

}

class Cerveza {
var property nombre = "cerveza"
const position = new MutablePosition(x=(0..8).anyOne()*2, y=16)
const puntos = 50
const velocidad = -4

method position() = position
method image() = "cerveza.png"
method puntos () = puntos
method velocidad () = velocidad

method interactua(homero) { homero.tomateUnaCerveza() }

method bajar (){
if (position.y() >= -2){
position.goDown(2)
}
}

}

class Te{
var property nombre = "te"
const position = new MutablePosition(x=(0..8).anyOne()*2, y=16)
const puntos = -100
const velocidad = -2

method position() = position
method image() = "te.png"
method puntos () = puntos
method velocidad () = velocidad

method interactua(homero) { homero.tomateUnTe() }

method bajar (){
if (position.y() >= -2){
position.goDown(2)
}
}

}

class Ensalada {
var property nombre = "ensalada"
const position = new MutablePosition(x=(0..8).anyOne()*2, y=16)
const puntos = -20
const velocidad = 2

method position() = position
method image() = "ensalada.png"
method puntos () = puntos
method velocidad () = velocidad

method interactua(homero) { homero.comeEnsalada() }

method bajar (){
if (position.y() >= -2){
position.goDown(2)
}
}

}

class Guiso {
var property nombre = "guiso"
const position = new MutablePosition(x=(0..8).anyOne()*2, y=16)
const puntos = 80
const velocidad = -6

method position() = position
method image() = "guiso.png"
method puntos () = puntos
method velocidad () = velocidad

method interactua(homero) { homero.poneteObeso() }

method bajar (){
if (position.y() >= -2){
position.goDown(2)
}
}

}



// 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
Expand Down
Loading

0 comments on commit 829911f

Please sign in to comment.