Skip to content

Commit

Permalink
correciones de alf (no usar mas ifs)
Browse files Browse the repository at this point in the history
Co-authored-by: asanzo <[email protected]>
Co-authored-by: Agostino Dante Giangrandi <[email protected]>
  • Loading branch information
3 people committed Oct 19, 2024
1 parent b329b46 commit 920a97f
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 265 deletions.
25 changes: 25 additions & 0 deletions DiagramaDeClases.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,28 @@ compartan el mismo método de interacción, pero con efectos distintos.

![image](https://github.com/user-attachments/assets/3fa26ba5-d166-4a50-9f13-15494f9e98f0)



Del diagrama de la clase pasada:

object laPorota {
var stock
var precio

method vender(cant,comp){
....... ?????
comp.pagar(????)
}

??????
}

class Comprador {
var medio = new Debito()

method pagar(monto){
medio.pagar(asdfasdf)
}

??????
}
63 changes: 32 additions & 31 deletions comida.wlk
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
import homero.*
import wollok.game.*

// 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

class Comida{
var property nombre
var property puntos
var property velocidad
var property accion
const tipoAvance = aLaDerecha

const position = new MutablePosition(x=(0..8).anyOne()*2, y=16)

Expand All @@ -27,41 +32,37 @@ class Comida{
}

method interactua(homero){
if (nombre == "rosquilla"){
homero.poneteGrasoso()
} else if (nombre == "banana"){
homero.convertiteEnMono()
} else if (nombre == "plutonio"){
homero.poneteRadiactivo()
} else if (nombre == "choripan"){
homero.cometeUnChoripan()
} else if (nombre == "mate"){
homero.tomateUnMate()
} else if (nombre == "cerveza"){
homero.tomateUnaCerveza()
} else if (nombre == "te"){
homero.tomateUnTe()
} else if (nombre == "ensalada"){
homero.comeEnsalada()
} else if (nombre == "guiso"){
homero.poneteObeso()
}
homero.come(self)
}

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

}

// 7
const rosquilla = new Comida(nombre="rosquilla", puntos=5, velocidad=1, accion={homero.poneteGrasoso()})
const banana = new Comida(nombre="banana", puntos=-3, velocidad=-1, accion={homero.convertiteEnMono()})
const plutonio = new Comida(nombre="plutonio", puntos=15, velocidad=1, accion={homero.poneteRadiactivo()})
const choripan = new Comida(nombre="choripan", puntos=100, velocidad=-1, accion={homero.cometeUnChoripan()})
const mate = new Comida(nombre="mate", puntos=20, velocidad=2, accion={homero.tomateUnMate()})
const cerveza = new Comida(nombre="cerveza", puntos=15, velocidad=-2, accion={homero.tomateUnaCerveza()})
const te = new Comida(nombre="te", puntos=-50, velocidad=-1, accion={homero.tomateUnTe()})
const ensalada = new Comida(nombre="ensalada", puntos=-15, velocidad=1, accion={homero.comeEnsalada()})
const guiso = new Comida(nombre="guiso", puntos=15, velocidad=-2, accion={homero.poneteObeso()})

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


const rosquilla = new Comida(nombre="rosquilla", puntos=5, velocidad=1)
const banana = new Comida(nombre="banana", puntos=-3, velocidad=-1)
const plutonio = new Comida(nombre="plutonio", puntos=15, velocidad=1)
const cerveza = new Comida(nombre="cerveza", puntos=15, velocidad=-2)
const choripan = new Comida(nombre="choripan", puntos=7, velocidad=-1)
const mate = new Comida(nombre="mate", puntos=20, velocidad=2)
const te = new Comida(nombre="te", puntos=-50, velocidad=-1)
const ensalada = new Comida(nombre="ensalada", puntos=-15, velocidad=1)
const guiso = new Comida(nombre="guiso", puntos=15, velocidad=-2)

const comidasNivel1 = [rosquilla, banana, plutonio, choripan, cerveza]
const comidasNivel2 = comidasNivel1 + [mate,ensalada,guiso,te]
const comidasNivel2 = comidasNivel1 + [mate,ensalada,guiso,te]

object grasiento {
method imagen() = "rosquilla"
}
61 changes: 13 additions & 48 deletions homero.wlk
Original file line number Diff line number Diff line change
@@ -1,36 +1,42 @@
import wollok.game.*
import comida.*
import niveles.*

object homero{
var puntos = 0
var velocidad = 2
const position = new MutablePosition(x=8, y=0)
var estado = "rosquilla"
var ultimaComida = rosquilla

method setEstado(nuevoEstado){
estado = nuevoEstado
method ultimaComida(comida){
ultimaComida = comida
}

method estado() = estado
method come(comida) {
ultimaComida = comida
self.alterarPuntos(comida.puntos())
self.alterarVelocidad(comida.velocidad())
}

method position() = position

method setPuntos(nuevosPuntos){
puntos = nuevosPuntos
juego.verificarFinDeNivel()
}

method setVelocidad(x){
velocidad = x
}

method moverseIzquierda(){

if(position.x() >= 0 && position.x() - velocidad >= 0)
position.goLeft(velocidad)
}

method moverseDerecha(){
if(position.x() <= 16 && position.x() + velocidad <= 16)
position.goRight(velocidad)
ultimaComida.moverseAdelante(position)
}


Expand All @@ -47,49 +53,8 @@ object homero{
method puntos() = puntos

method velocidad() = velocidad

method cambiarEstado(nuevoEstado) {
estado = nuevoEstado
}

method poneteGrasoso() {
self.cambiarEstado("rosquilla")
}

method convertiteEnMono() {
self.cambiarEstado("banana")
}

method poneteRadiactivo() {
self.cambiarEstado("plutonio")
}

method cometeUnChoripan() {
self.cambiarEstado("choripan")
}

method tomateUnMate() {
self.cambiarEstado("mate")
}

method tomateUnaCerveza() {
self.cambiarEstado("cerveza")
}

method tomateUnTe() {
self.cambiarEstado("te")
}

method comeEnsalada() {
self.cambiarEstado("ensalada")
}

method poneteObeso() {
self.cambiarEstado("guiso")
}

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

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,
Expand Down
34 changes: 22 additions & 12 deletions niveles.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@ 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

method verificarFinDeNivel(){
nivelActual.verificarFinDeNivel()
}
}

object nivel1 {
var estado = "inicio"
Expand All @@ -18,7 +30,7 @@ object nivel1 {
method inicializarValores(){
homero.setPuntos(0)
homero.setVelocidad(2)
homero.setEstado("rosquilla")
homero.ultimaComida(rosquilla)
tiempo.setTimer(5*60)
if(homero.position().x()>8){
homero.position().goLeft(homero.position().x()-8)
Expand Down Expand Up @@ -59,18 +71,17 @@ object nivel1 {
keyboard.a().onPressDo({homero.moverseIzquierda()})
keyboard.d().onPressDo({homero.moverseDerecha()})

keyboard.space().onPressDo{
const colliders = game.colliders(homero)
if(colliders.head()!=null){
colliders.head().interactua(homero)
homero.alterarPuntos(colliders.head().puntos())
homero.alterarVelocidad(colliders.head().velocidad())
game.removeVisual(colliders.head())
}
}
game.onCollideDo(homero, {cosa => cosa.interactua(homero)})

game.onTick(1000, "restarSegundo", {tiempo.restarSegundo()})
game.onTick(1000, "finalizarNivel", {if((tiempo.timer() <= 0 || homero.puntos() >= 100) && self.estado() != "finalizado") self.finalizarNivel()})
}

method verificarFinDeNivel(){
if (tiempo.timer() <= 0 || homero.puntos() >= 100) {
self.finalizarNivel()
}
}

method finalizarNivel(){
game.removeTickEvent("finalizarNivel")
game.removeTickEvent("baja")
Expand Down Expand Up @@ -110,7 +121,6 @@ object nivel2{
method inicializarValores(){
homero.setPuntos(0)
homero.setVelocidad(2)
homero.setEstado("rosquilla")
tiempo.setTimer(5*60)
if(homero.position().x()>8){
homero.position().goLeft(homero.position().x()-8)
Expand Down
Loading

0 comments on commit 920a97f

Please sign in to comment.