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

Ultimos cambios #50

Merged
merged 7 commits into from
Nov 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ TECLAS:
- ←/↑/→/↓ : moverse
- Q : interactuar con los objetos
- W : procesar ingredientes
- E : preguntar pedido
- R : cambiar modo de correr a caminar/ caminar a correr
- T : indica cuanto dinero falta para ganar


## Otros
Expand Down
18 changes: 9 additions & 9 deletions adminClientes.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,33 @@ import mapaObjetos.*

import wollok.game.*

//se necesitan comentarios sobre los onTick y Schedules, no los entiendo

object adminCliente {
const factories = #{factoryNormal, factoryPaciente, factoryQuisquilloso}
var hayCliente = false
const ubicacion = restaurante1
var ubicacion = restaurante1

method ubicacion(_ubicacion) {
ubicacion = _ubicacion
}

method crearCliente() {

const nuevoCliente = self.clienteRandom()
ubicacion.clientes().add(nuevoCliente)
game.addVisual(nuevoCliente)

ubicacion.addCliente(nuevoCliente)
game.addVisual(nuevoCliente)
nuevoCliente.hacerPedido()


}

method retirarCliente(cliente) {
game.removeTickEvent(cliente)
cliente.mover(abajo)
game.schedule(500, {self.eliminar(cliente)})
}

method eliminar(cliente) {
ubicacion.clientes().remove(cliente)
ubicacion.quitarCliente(cliente)
game.removeVisual(cliente)
hayCliente = false
game.schedule(1500, {self.crearCliente()})
}

Expand Down
21 changes: 21 additions & 0 deletions adminDeVictoria.wlk
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import mapaObjetos.*
import wollok.game.*
import objetosRecepcion.*


object adminWinCon {
const cajaFondos = caja

method ganar() {
game.addVisual(youWin)
game.schedule(3000, {game.stop()})
}

method perder() {
if(cajaFondos.plata() <= cajaFondos.objetivo()) {
game.addVisual(youLose)
game.schedule(3000, {game.stop()})
}

}
}
Binary file added assets/cartel.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/derrota.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/victoria.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 11 additions & 1 deletion chefs.wlk
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import personaBase.*
import posiciones.*
import objetosRecepcion.*

import wollok.game.*

class Chef inherits Persona {
var property bandeja = bandejaVacia
const fondos = caja

method tengoBandejaVacia() {
return bandeja.esVacio()
Expand All @@ -28,7 +30,7 @@ class Chef inherits Persona {
}

method soltar(){
bandeja = bandejaVacia //la bandeja representa el no tener nada
bandeja = bandejaVacia
}

method recibir(ingrediente) {
Expand All @@ -41,5 +43,13 @@ class Chef inherits Persona {

mueble.procesarIngredientes()
}

method preguntarPedido() {
ubicacion.clienteActual().anunciarPedido()
}

method decirCuantoFalta() {
game.say(self, "Todavia falta recolectar " + fondos.cuantoFalta() + "$")
}

}
68 changes: 42 additions & 26 deletions chefsTest.wtest
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,41 @@ import objetosParaTests.*
import wollok.game.*

describe "chefs test" {
test "remy puede moverse porque no hay ningun mueble en el medio y se mueve" {
test "remy puede caminar y correr porque no hay ningun mueble en el medio y se mueve" {
remy.mover(abajo)
assert.equals(game.at(0,3), remy.position())
assert.equals(game.at(95,48), remy.position())

remy.mover(derecha)
assert.equals(game.at(1,3), remy.position())
assert.equals(game.at(96,48), remy.position())

remy.cambiarModo()

remy.mover(abajo)
assert.equals(game.at(96,43), remy.position())

remy.mover(derecha)
assert.equals(game.at(101,43), remy.position())
}

test "remy no puede moverse porque hay un mueble arriba suyo y a su izquiera está el límite del mapa" {
remy.position(game.at(2,4))
assert.that(restaurantest.hayMuebleAqui(game.at(2,5))) //esto es arriba de remy
test "remy no puede caminar ni correr porque hay un mueble arriba suyo y a su izquiera está el límite del mapa" {
remy.position(game.at(2,53))
assert.that(restaurantest.hayMuebleAqui(game.at(2,54))) //esto es arriba de remy

assert.throwsException({ remy.moverse(arriba) })
assert.throwsException({ remy.moverse(izquierda) })

remy.cambiarModo()

assert.throwsException({ remy.moverse(arriba) })
assert.throwsException({ remy.moverse(izquierda) })
}

test "remy agarra un ingrediente (tomate) que esta abajo suyo en donde mira, en la mesada4" {
remy.mover(abajo)
remy.position(game.at(6,34))
remy.mover(izquierda)
assert.that(remy.tengoBandejaVacia())
assert.equals(abajo, remy.orientacion()) //a donde esta "mirando"
assert.equals(game.at(0,2), remy.dondeApunta())
assert.equals(izquierda, remy.orientacion()) //a donde esta "mirando"
assert.equals(game.at(4,34), remy.dondeApunta())
assert.equals(mesada4, restaurantest.muebleAqui(remy.dondeApunta()))
remy.interactuar()

Expand All @@ -37,17 +51,18 @@ describe "chefs test" {
assert.that(remy.tengoBandejaVacia())

assert.equals(derecha, remy.orientacion()) //a donde esta "mirando"
assert.equals(game.at(1,4), remy.position())
assert.equals(game.at(2,4), remy.dondeApunta())
assert.equals(game.at(96,49), remy.position())
assert.equals(game.at(97,49), remy.dondeApunta())

assert.notThat(restaurantest.hayMuebleAqui(remy.dondeApunta()))
assert.that(remy.tengoBandejaVacia())

}

test "remy no puede agarrar un ingrediente porque tiene algo en las manos ya" {
remy.bandeja(queso)
remy.mover(abajo)
remy.position(game.at(6,34))
remy.bandeja(queso)
remy.mover(izquierda)

assert.that(restaurantest.hayMuebleAqui(remy.dondeApunta()))
assert.equals(tomate, restaurantest.muebleAqui(remy.dondeApunta()).contenido())
Expand All @@ -60,14 +75,13 @@ describe "chefs test" {
}

test "remy puede soltar ingrediente porque hay una mesada en donde esta mirando" {
remy.position( game.at(5,4) )
remy.bandeja(tomate)
assert.notThat(remy.tengoBandejaVacia())
remy.mover(abajo)
remy.position( game.at(6,31) )
remy.bandeja(tomate)
assert.notThat(remy.tengoBandejaVacia())
remy.mover(izquierda)

assert.that(restaurantest.hayMuebleAqui(remy.dondeApunta()))
assert.that(restaurantest.muebleAqui(remy.dondeApunta()).estoyLibre())
assert.equals(bandejaVacia, restaurantest.muebleAqui(remy.dondeApunta()).contenido()) //-> igual que en el tomate
assert.that(restaurantest.hayMuebleAqui(remy.dondeApunta()))
assert.that(restaurantest.muebleAqui(remy.dondeApunta()).estoyLibre())

remy.interactuar()

Expand All @@ -87,7 +101,8 @@ describe "chefs test" {
}

test "remy puede procesar el tomate porque hay una mesada allí" {
remy.mover(abajo)
remy.position( game.at(6,34) )
remy.mover(izquierda)

assert.equals(tomate, restaurantest.muebleAqui(remy.dondeApunta()).contenido())
assert.notThat(restaurantest.muebleAqui(remy.dondeApunta()).contenido().fueProcesado())
Expand All @@ -98,7 +113,8 @@ describe "chefs test" {
}

test "remy no puede procesar porque no hay nada que procesar en el mueble" {
remy.position(game.at(5,3))
remy.position(game.at(6,31))
remy.mover(izquierda)
assert.that(restaurantest.hayMuebleAqui(remy.dondeApunta()))
assert.that(restaurantest.muebleAqui(remy.dondeApunta()).estoyLibre())

Expand All @@ -107,8 +123,8 @@ describe "chefs test" {
}

test "remi va a tirar el queso que agarro a la basura y se puede porque hay un tacho" {
remy.position(game.at(3,3))
remy.mover(arriba)
remy.position(game.at(6,28))
remy.mover(izquierda)
remy.bandeja(queso)
game.addVisualCharacter(queso)

Expand All @@ -123,13 +139,13 @@ describe "chefs test" {
game.addVisual(masa)
game.addVisual(queso)

remy.position( game.at(5,3) )
remy.position( game.at(6,30) )
masa.serProcesado() //es importante primero procesar todos los ingredientes para poder integrarlos todos :)
queso.serProcesado()

masa.recibirIngrediente(queso)
remy.bandeja(masa)
remy.mover(arriba)
remy.mover(izquierda)

assert.notThat(remy.tengoBandejaVacia())
assert.equals(horno, restaurantest.muebleAqui(remy.dondeApunta()))
Expand Down
45 changes: 26 additions & 19 deletions clientes.wlk
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,24 @@ import adminClientes.*

import wollok.game.*

//se necesitan comentarios sobre los onTick y Schedules, no los entiendo


class Cliente inherits Persona(position = game.at(88,20)){
var pedidoQueEspero = []
var emocion = neutral
var nivelDePaciencia = null
var manos = bandejaVacia
var nivelDePaciencia = null
var property manos = bandejaVacia

method emocion() {
return emocion
}

method pedidoQueEspero(_pedidoQueEspero) {
pedidoQueEspero = _pedidoQueEspero
}

method ubicacion(_ubicacion) {
ubicacion = _ubicacion
}

method hacerPedido() {
self.generarPedido()
Expand All @@ -26,18 +36,9 @@ class Cliente inherits Persona(position = game.at(88,20)){
}

method anunciarPedido() {
//game.say(self, self.pedidoAString())
self.text()
game.say(self, self.pedidoAString())
}

method text(){
return self.pedidoAString()
}

method textColor(){
return "#000000"
}

method pedidoAString() {
return "Quiero una pizza con " + self.pedidoQueEspero().join(", ") + ", por favor!"
}
Expand All @@ -59,10 +60,16 @@ class Cliente inherits Persona(position = game.at(88,20)){
game.removeTickEvent(self)
manos = pizza
game.removeVisual(manos)
manos.eliminarConIngredientes()
self.ocultarIngredientesDisponibles()
game.schedule(1000, {self.reaccionarAPedido()})
}

method ocultarIngredientesDisponibles() {
if(self.esUnaPizza()) {
manos.ocultarIngredientes()
}
}

method ingredienteRandom() {
return [ingredienteAceituna, ingredienteQueso, ingredienteAtun, ingredienteHongo].anyOne()
}
Expand Down Expand Up @@ -102,7 +109,7 @@ class Cliente inherits Persona(position = game.at(88,20)){
method reaccionMala()

method plataAPagarPorPedido() {
return manos.precio() * nivelDePaciencia / 100
return manos.precio()
}

method pagarPedido() {
Expand All @@ -113,7 +120,7 @@ class Cliente inherits Persona(position = game.at(88,20)){

}

class ClienteNormal inherits Cliente(nivelDePaciencia = 75000, image = "cliente_normal.png", name = "cliente_normal"){
class ClienteNormal inherits Cliente(nivelDePaciencia = 90000, image = "cliente_normal.png", name = "cliente_normal"){
const disponibilidadParaTip = 50

override method reaccionBuena(){
Expand All @@ -127,7 +134,7 @@ class ClienteNormal inherits Cliente(nivelDePaciencia = 75000, image = "cliente_
}

method valorTip(){
return 0.randomUpTo(disponibilidadParaTip)
return 5.randomUpTo(disponibilidadParaTip)
}

override method reaccionMala(){
Expand All @@ -148,7 +155,7 @@ class ClientePaciente inherits ClienteNormal(nivelDePaciencia = 120000, image =
}
}

class ClienteQuisquilloso inherits Cliente(nivelDePaciencia = 50000, image = "cliente_quisquilloso.png", name = "cliente_quisquilloso"){
class ClienteQuisquilloso inherits Cliente(nivelDePaciencia = 90000, image = "cliente_quisquilloso.png", name = "cliente_quisquilloso"){

override method reaccionBuena(){
emocion = neutral
Expand Down
Loading
Loading