-
Notifications
You must be signed in to change notification settings - Fork 0
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
base: feedback
Are you sure you want to change the base?
Feedback #1
Conversation
…o mostrarBandeja()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
¡Hola @pdepjm/vmsl!
Les dejamos algunos comentarios, el comentario más importante en general es el tema de la declaratividad para darle un orden y prolijidad al código, sobre todo porque el juego es un proyecto medianamente grande y les puede complicar a futuro si no ordenan un poco ahora.
Por otro lado les consulto, ¿tienen algun diagrama de clases? ¿En qué lugar están aplicando polimorfismo?
Por último, estaría bueno que tengan definidos los límites del mapa para el movimiento del mozo, para que no se pueda ir por fuera del tamaño de la pantalla.
¡Saludos!
clientes.wlk
Outdated
object mesas { | ||
var property mesasDisponibles = [[8, 8], [2, 2], [2, 8]] | ||
var property mesasOcupadas = [] | ||
|
||
method ocuparMesa(mesa) { | ||
mesasOcupadas.add(mesa) | ||
mesasDisponibles.remove(mesa) | ||
} | ||
|
||
method desocuparMesa(mesa) { | ||
mesasOcupadas.remove(mesa) | ||
mesasDisponibles.add(mesa) | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Para no estar trabajando siempre con dos listas, podrían tener una lista que tenga todas las existentes y otra que solo tenga las ocupadas, las disponibles se pueden calcular a partir de las ocupadas asi que no sería necesario tener ese dato guardado. De esta forma únicamente tienen que tocar la lista de mesas ocupadas.
main.wpgm
Outdated
game.cellSize(100) | ||
game.title("Restaurante") | ||
/* Spawn de clientes en la posicion de la mesa si es que hay disponibles */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Toda la lógica de spawn de clientes podrían tenerla en un objeto que se encargue de eso, es más prolijo para saber concretamente que objeto tocar y que no esté todo en un mismo lugar.
main.wpgm
Outdated
game.onTick( | ||
2000, | ||
"spawnClientes", | ||
{ if (mesas.mesasDisponibles().size() !== 0) { | ||
const cliente = new Cliente() | ||
cliente.sentarseEnMesa() | ||
// Crea un objeto nuevo de cliente y le asigna una mesa de las disponibles | ||
|
||
game.addVisual(pepita) | ||
game.addVisual(cliente) | ||
game.say(cliente, "!") | ||
// Este onTick se encarga de eliminar al cliente y desocupar la mesa cuando se le acaba la paciencia | ||
game.onTick( | ||
cliente.paciencia(), | ||
"pacienciaCliente/" + cliente.id(), | ||
{ | ||
mesas.desocuparMesa([cliente.position().x(), cliente.position().y()]) | ||
return game.removeVisual(cliente) | ||
} | ||
) | ||
} } | ||
) // Eventos de Teclado: Interaccion con cliente |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
El onTick idealmente debería ejecutar un método, es más prolijo tener esto delegado en sus diferentes partes para no tener toda la lógica en un lugar, queda poco declarativo. Fijense de delegar un poco (teniendo en cuenta que además esto debería estar en un objeto que se encargue del spawneo, no en el program).
main.wpgm
Outdated
) | ||
/*game.addVisualCharacter(mesa1) | ||
game.addVisualCharacter(mesa2) | ||
game.addVisualCharacter(mesa3) | ||
game.addVisualCharacter(mesa4) | ||
game.addVisualCharacter(mesa5)*/ | ||
|
||
keyboard.w().onPressDo({ pepita.fly(1) }) | ||
// TECLADO | ||
//Mostrar contenido de la bandeja | ||
keyboard.space().onPressDo{mozo.mostrarBandeja()} | ||
//agarrar y entregar plato | ||
keyboard.h().onPressDo { mozo.agarrar(hamburguesa) } | ||
keyboard.enter().onPressDo { mozo.entregar() } | ||
|
||
game.start() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Las configuraciones también podrían estar en otro objeto que se encargue de ellas, para tener un poco más de orden. El program debería ser sencillo de leer, algo como:
program Juego {
configuracion.setearTeclado()
configuracion.setearVisuales()
spawner.comenzar()
//etc, otras configuraciones
}
Fijense que queda mucho más claro que cosas tienen que estar iniciadas para que el juego levante correctamente, así además de poder entenderlo más fácil, se les va a hacer más sencillo resolver bugs si los tuvieran.
mozo.wlk
Outdated
method mostrarBandeja() { | ||
const dialogo = new Dialogo(position = game.at(self.position().x() + 1.15, self.position().y() + 3), | ||
duration = 1000, | ||
image = bandeja.image()) // Dura 2 segundos | ||
dialogo.mostrar() | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Podrían delegar la posición a un método aparte para que sea más declarativo.
mozo.wlk
Outdated
method entregar (){ | ||
game.whenCollideDo( | ||
self, | ||
{ cliente => | ||
if(cliente.plato()== self.bandeja()){ | ||
self.sumarPuntos(cliente, bandeja) | ||
//agregar metodo | ||
cliente.recibirPlato() | ||
bandeja = vacio | ||
} | ||
else { | ||
self.restarPuntos() | ||
console.println("plato incorrecto o bandeja vacia") | ||
} | ||
} | ||
) | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ojo, esto se está ejecutando cada vez que aprietan la tecla enter, están configurando la colisión cada vez que entregan, cuando debería ejecutarse una sola vez.
Acá hay que pensar, ¿quiero que entregue en una colisión o quiero que entregue cuando aprieto la tecla enter?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Por otro lado, entiendo que los console print ahora son para ver si está funcionando, pero a futuro estaría bueno que se le comunique al jugador de alguna forma (visual o sonora) que el plato está incorrecto, ahora mismo no se le está comunicando.
pruebas.wtest
Outdated
import pepita.* | ||
|
||
describe "group of tests for pepita" { | ||
|
||
test "pepita has initial energy" { | ||
assert.equals(100, pepita.energy()) | ||
} | ||
|
||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
¿Pensaron algun test?
👋! GitHub Classroom created this pull request as a place for your teacher to leave feedback on your work. It will update automatically. Don’t close or merge this pull request, unless you’re instructed to do so by your teacher.
In this pull request, your teacher can leave comments and feedback on your code. Click the Subscribe button to be notified if that happens.
Click the Files changed or Commits tab to see all of the changes pushed to the default branch since the assignment started. Your teacher can see this too.
Notes for teachers
Use this PR to leave feedback. Here are some tips:
For more information about this pull request, read “Leaving assignment feedback in GitHub”.
Subscribed: @SantiagoGimenez01 @luciagarcia0 @Malena8a @noiseArch @VOrtigosa