Open asanzo opened 5 years ago
Bueno, acá estuvimos charlando con el equipo y...
keyboard.w().whilePressRepeat(200, { jugador.moverDerecha() })
Esta es una implementación que nos gusta, es fácil, directa, declarativa y tiene poder.
Estuvimos pensando en los otros métodos y en la nomenclatura, así atacamos todo de una (o lo que permita la tecnología base). La interfaz de Key
propuesta sería:
onPressDo(block)
--> Ejecuta una sola vez al presionar la tecla (al principio).whilePressDo(ms, block)
--> Ejecuta al presionar la tecla (al principio) y cada ms que se mantenga apretada.onReleaseDo(block)
--> Ejecuta al soltar la tecla (al final).Les convence? Falta algo? Algo no les gusta
Preguntas para contestar:
@asanzo @fdodino @lspigariol @nscarcella @npasserini
Me gusta, solo me da cosa que no sea whilePressedDo
en lugar de whilePress
(me suena raro no usar el participio).
¿Qué pasa si apretás - soltás y volvés a apretar antes de que pase el tiempo recibido? ¿Se ejecuta o espera?
Me da lo mismo, solo me gustaría que lo aclare el wollokdoc.
QUÉ LEEENDOOOO
A ver:
En el ejemplo usás whilePressRepeat
pero abajo aclarás whilePressDo
. ¿Cuál es la que va?
Mi propuesta era cambiar el on
por el while
para denotar la diferencia semántica entre ambos, y porque soy un obsesivo también había cambiado el Do
por el Repeat
para que fuera aún más claro. Esto es cuestión de gustos, me adecúo a lo que les parezca. (Podemos hacer una votación en el Discord para moverlo, si quieren :P )
Sobre el comportamiento de soltar y apretar, me pongo a pensar en la jugabilidad.
game.schedule
se puede resolver el punto 2, así que yo iría por la opción de que al volver a presionar se repita por más que no haya pasado el tiempo original.Por cierto, gran proyección hiciste Rasta de darte cuenta eso.
Abrazop!!
Pregunta, ¿es mucho quilombo dejar el bloque como último parámetro? Luego eso podria tener chiches sintácticos como en otros lenguajes. Wollok lo tiene hoy sólo para los mensajes de un parámetro, pero imagino que no es tan complejo extenderlo a n parámetros, si el bloque es el último.
On Wed, Mar 17, 2021 at 11:47 AM asanzo @.***> wrote:
QUÉ LEEENDOOOO
A ver:
En el ejemplo usás whilePressRepeat pero abajo aclarás whilePressDo. ¿Cuál es la que va? Mi propuesta era cambiar el on por el while para denotar la diferencia semántica entre ambos, y porque soy un obsesivo también había cambiado el Do por el Repeat para que fuera aún más claro. Esto es cuestión de gustos, me adecúo a lo que les parezca. (Podemos hacer una votación en el Discord para moverlo, si quieren :P )
Sobre el comportamiento de soltar y apretar, me pongo a pensar en la jugabilidad.
- Por ejemplo, con un movimiento, si yo mantengo apretado el personaje haria "tac, tac, tac" y se iría moviendo. Y creo que si ese "tac" me parece lento, intuitivamente intentaría apretar varias veces para acelerarlo, por lo que quizás sí querés que se repita antes de tiempo .
Pero también me imagino en un juego tipo el Overcooked, si querés implementar una lógica tipo la del lavado de platos, donde no querés que se pueda acelerar el lavado, sino a propósito querés que el usuario pase una cantidad de tiempo molesta manteniendo apretado el botón, quizás lo que quiero es que no se repita más rápido de lo que puse.
- Creo que hoy con el game.schedule se puede resolver el punto 2, así que yo iría por la opción de que al volver a presionar se repita por más que no haya pasado el tiempo original.
- Sospecho también es más fácil de implementar que la otra, así que vayamos por eso.
Por cierto, gran proyección hiciste Rasta de darte cuenta eso.
Abrazop!!
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/uqbar-project/wollok/issues/1819#issuecomment-801144667, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABDLKOPECNZXJ7YPAKSLDCLTEC6JNANCNFSM4I3APFEQ .
Buenas!
Al empezar a hacer juegos muchos chicos empiezan a requerir que puedan suceder cosas mientras mantenés una tecla apretada.
No sé cómo lo implementaría. Alice tiene 4 eventos:
Scratch tiene 1 sola cosa: Que si mantenés apretado funciona como el "durante" de Alice, lo hace varias veces.
Creo que para Wollok podríamos tener:
El 200 me lo imagino como la cantidad de milisegundos que ocurren entre cada repetición (hoy ese
moverDerecha()
mueve un casillero, y eso se haría demasiado rápido). La nomenclatura dewhilePressRepeat
respeta el espíritu de la que cargué en el issue #1818Y pensaría si quiero agregar el
onKeyDown
y elonKeyUp
, que podrían servir para resolver otros problemas, pero creo que el más "apremiante" es el "mientras".