Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback #1

Open
wants to merge 32 commits into
base: feedback
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
d307f31
Setting up GitHub Classroom Feedback
github-classroom[bot] Sep 22, 2024
5dadcb9
creamos el juego homero para que se mueva de izq a derecha y agarre l…
acorromolas11 Oct 1, 2024
62c238e
Pequeños cambios
CeDimotta27 Oct 2, 2024
af5758e
Recomendaciones de la Clase para la 2da Entrega
AgostinoG Oct 3, 2024
bd82d2b
Limites del mapa (sujeto a modificaciones) ewe
CeDimotta27 Oct 10, 2024
829911f
ahora los objetos caen y cuando homero come un objeto cambia de forma.
acorromolas11 Oct 14, 2024
d876ba4
Achicamos el codigo
MatttiB Oct 15, 2024
ec6efec
intentando hacer niveles
acorromolas11 Oct 15, 2024
9ad18c7
avanzo con terminar el nivel1
acorromolas11 Oct 15, 2024
ece59d9
Modificaciones en algunos valores
CeDimotta27 Oct 16, 2024
f073dae
Imagenes
CeDimotta27 Oct 16, 2024
95b436b
avance de niveles (falta comunicacion entre si)
acorromolas11 Oct 16, 2024
5f911f6
Mini correciones
MatttiB Oct 17, 2024
d1221bd
Cambio Fondo nivel 2
MatttiB Oct 17, 2024
bbf9e53
Agrando nivel2
MatttiB Oct 17, 2024
7bb9b79
Create DiagramaDeClases.md
CeDimotta27 Oct 17, 2024
9b3a4f7
solución temporal del pasaje de nivel
acorromolas11 Oct 17, 2024
b66e7cc
agrego imagenes de ambos niveles
acorromolas11 Oct 17, 2024
6ddee20
Acomodo el readme
MatttiB Oct 17, 2024
b329b46
Arreglo final readmi
MatttiB Oct 17, 2024
920a97f
correciones de alf (no usar mas ifs)
acorromolas11 Oct 19, 2024
73d492c
cambio de direccion cuando homero toma una cerveza, modificamos la ve…
acorromolas11 Nov 6, 2024
7a34ca3
arreglamos el tema de finalizar el nivel e hicimos cambios en las vel…
acorromolas11 Nov 6, 2024
f3d1b12
cambio los puntos que da la rosquilla
acorromolas11 Nov 6, 2024
eb954be
modificaciones en tests, setters de posiciones en comidas
acorromolas11 Nov 6, 2024
999c60b
creamos la "comida" silla
acorromolas11 Nov 7, 2024
3347736
Update DiagramaDeClases.md
acorromolas11 Nov 7, 2024
56b679f
cambios a último minuto
acorromolas11 Nov 7, 2024
a7850d0
Merge branch 'main' of https://github.com/pdepjm/2024-o-tpjuego-la-gr…
acorromolas11 Nov 7, 2024
1346af8
correciones ivo
acorromolas11 Nov 7, 2024
0094811
Update DiagramaDeClases.md
acorromolas11 Nov 7, 2024
2114219
cambios en velocidad
acorromolas11 Nov 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions DiagramaDeClases.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# DIAGRAMA DE CLASES #

Homero interactúa con diferentes tipos de comida, modificando su imagen y puntuación en base a la comida que consume,
sea para ventaja o desventaja del jugador. Además, la misma comida que aumenta la puntuacion de homero hace que aumente o disminuya la velocidad del juego que en sí aumenta o disminuye la caida de todos los alimentos a medida que se desarrolla el nivel. Dependiendo del nivel en el que se encuentre se modificará la dificultad de jugabilidad.

Los objetos "Homero" y "Comida" encapsulan su estado interno (variables como puntos, velocidad, estado de Homero, y nombre, puntos, velocidad de Comida) y solo permiten modificarlo a través de métodos. Por ejemplo, el método “puntos(nuevosPuntos)” de Homero permite cambiar su puntuación asegurando que no sea negativa.

Homero se abstrae como una entidad que puede moverse y cambiar de estado, mientras que las comidas son abstraídas con comportamientos específicos que afectan solo a Homero. Los métodos como “moverseIzquierda” e “interactúa” esconden detalles de implementación.

El método “interactúa” de la clase Comida es un ejemplo de polimorfismo cuando interactúa con diferentes tipos de comidas, creando diferentes comportamientos en Homero. Dependiendo del tipo de comida (por ejemplo, rosquilla, banana, plutonio) homero cambia sus propiedades de maneras diferentes, cambia su imagen, sus puntos y en algunos casos (como en el de la cerveza) sus movimientos, es decir que si se intenta mover para la izquierda homero irá hacia la derecha.

Pueden existir objetos letales, como la silla, si homero interactúa con una silla de plastico, lo más probable es que esta lo traicione y termine con la partida inmediatamente.

![image](https://github.com/user-attachments/assets/683e082c-a13f-4682-9e7c-4cc8666be9ef)
53 changes: 44 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,57 @@
# (reemplazar nombre de juego acá)
# El Sueño del Levantapalas: La Carrera por el Morfi

UTN - Facultad Regional Buenos Aires - Materia Paradigmas de Programación

## Equipo de desarrollo:

- completar...
- completar...
- Bermejo Fernández, Matías.
- Corro Molas, Agustin.
- Britos, Aylen.
- Dimotta, Cecilia.
- Giangrandi, Agostino.


## Capturas

![pepita](assets/golondrina.png)
### Nivel1:
![HomeroGameNivel1Jugando](https://github.com/user-attachments/assets/53372ced-c392-4790-a0ed-aa08f2deba2e)
### Nivel2:
![HomeroGameNivel2Jugando](https://github.com/user-attachments/assets/3f143865-fa52-435a-b6e9-78a8fea186db)

## 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. Cuidado, porque la comida que más suma tambien es la que aumenta la velocidad de caida de los alimentos, lo que conlleva una mayor dificultad.
Si consigues el puntaje requerido, pasas al siguiente nivel. Si no lo logras, "Over Game".

### Cómo Jugar:
1. Movimiento:
Homero solo se puede mover de izquierda a derecha.
Desplázalo para atrapar la comida que cae del cielo.
2. Tipos de Comida:
Aumenta puntos : Ejemplos como choripanes, donas, plutonio, cerveza, mate, etc.
Disminuye puntos: Ejemplos como banana, ensalada, te, polenta, etc.
Aumenta velocidad caida comida: Ejemplos como rosquilla, plutonio, choripan, etc.
Disminuye velocidad caida comida: Ejemplos como ensalada, banana, etc.
Pierde juego: Silla.

### Mecánica del Juego:
1. Puntos, Velocidad y Niveles:
Cada comida atrapada puede sumar o restar puntos.
Además, cada comida atrapada aumenta o disminuye la velocidad de caida de los mismos.
Debes alcanzar el puntaje objetivo antes de que el tiempo termine para avanzar al siguiente nivel.
2. Dificultad Progresiva:
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:

- `W` para...

- `A` para moverse a la izquierda.
- `D` para moverse a la derecha.
Binary file added assets/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/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.
Binary file added assets/homero-rosquilla.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-silla.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-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/obelisco2.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.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/rosquilla.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/silla.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/springfield.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.
105 changes: 105 additions & 0 deletions comida.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import homero.*
import wollok.game.*
import tableros.*
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"
method position() = position

method positionX(nueva_pos_x){
position = new MutablePosition(x=nueva_pos_x, y=game.height())
}

method bajar(){
if (position.y() >= -2){
position.goDown(1)
}else{
game.removeVisual(self)
position.goUp(game.height())
self.positionX((0..(game.width()-2)).anyOne())
game.addVisual(self)
}
}

method interactua(homero){
fulminante.pierdeONo()
homero.come(self)
game.removeVisual(self)
}

method moverseAdelante(posicion){
tipoAvance.moverseAdelante(posicion)
}

method moverseAtras(posicion){
tipoAvance.moverseAtras(posicion)
}

}


object aLaDerecha{
method moverseAdelante(posicion){
if(posicion.x() <= game.width() - 3 && posicion.x() + 1 <= game.width() - 2)
posicion.goRight(1)
}

method moverseAtras(posicion){
if(posicion.x() >= 1 && posicion.x() - 1 >= 0)
posicion.goLeft(1)
}

}

object aLaIzquierda{
method moverseAtras(posicion){
if(posicion.x() <= game.width() - 3)
posicion.goRight(1)
}

method moverseAdelante(posicion){
if(posicion.x() >= 1)
posicion.goLeft(1)
}
}

object pierde{
method pierdeONo(){
tiempo.timer(0)
}
}

object noPierde{
method pierdeONo(){

}
}
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]
12 changes: 12 additions & 0 deletions fondos.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
class Fondo {
const position = new MutablePosition(x=0, y=0)
var property nombreFondo


method position() = position

method image() = nombreFondo + ".png"

}

const obelisco = new Fondo(nombreFondo="obelisco2")
50 changes: 50 additions & 0 deletions homero.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import wollok.game.*
import comida.*
import niveles.*

object homero{
var puntos = 0
var position = new MutablePosition(x=(game.width()/2).roundUp(), y=0)
var ultimaComida = rosquilla

method ultimaComida(comida){
ultimaComida = comida
}

method positionX(nueva_pos_x){
position = new MutablePosition(x=nueva_pos_x, y=0)
}

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

method position() = position

method moverseIzquierda(){
ultimaComida.moverseAtras(position)
}

method moverseDerecha(){
ultimaComida.moverseAdelante(position)
}

method puntos(nuevosPuntos){
puntos = nuevosPuntos
puntos = puntos.max(0)
juego.verificarFinDeNivel()
}

method sumarPuntos(nuevosPuntos){
puntos += nuevosPuntos
puntos = puntos.max(0)
juego.verificarFinDeNivel()
}

method puntos() = puntos

method image() = "homero-"+ ultimaComida.image()
}
Binary file added image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 8 additions & 12 deletions main.wpgm
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
import wollok.game.*
import comida.*
import homero.*
import niveles.*
import tableros.*

import pepita.*
program homeroGame{

program PepitaGame {
game.title("Pepita")
game.height(10)
game.width(10)
game.cellSize(100)
juego.nivelActual().iniciarFondo()
keyboard.num1().onPressDo({juego.nivelActual().iniciarNivel()})

game.addVisual(pepita)

keyboard.w().onPressDo({ pepita.fly(1) })

game.start()
}
}
Loading