Skip to content

Commit

Permalink
Ultimos cambios (#50)
Browse files Browse the repository at this point in the history
* Movimiento update

* tests listos

* Update restaurante.wlk

* tests y cambios varios

* cambios varios

* ultimos cambios done

---------

Co-authored-by: RomaSof <[email protected]>
  • Loading branch information
FeliQI and RomaSof authored Nov 27, 2024
1 parent ca3c737 commit 0cb0d87
Show file tree
Hide file tree
Showing 19 changed files with 396 additions and 88 deletions.
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

0 comments on commit 0cb0d87

Please sign in to comment.