Recordemos cómo se rotaba la ficha en la entrada anterior. Desde el bucle de juego:
- Primero se capturaba el evento de movimiento a la izquierda o derecha del joystick 2.
- Ante esos eventos, se borraba la ficha, se actualizaba la variable que controla la rotación, y se volvía a pintar la ficha.
Pues bien, con el movimiento viene a ser lo mismo, sólo que en vez de modificar la variable que controla la rotación vamos a modificar la variable que controla la posición X o la posición Y de la ficha.
Y para no perder la rotación de la ficha, lo que vamos a hacer es:
- Al mover a izquierda o derecha el joystick 2, cambiaremos la variable X.
- Al mover arriba o abajo el joystick 2, cambiaremos la variable Y.
- Al pulsar disparo en el joystick 2, rotaremos a derechas.
Cuando el juego esté más avanzando no será posible mover la ficha arriba o abajo, sólo a la izquierda o a la derecha, así como rotar la ficha, que además caerá por su propio peso. No obstante, como de momento estamos probando cosas y mejorando el API de programación, no está de más que preveamos esas opciones, que luego pueden usarse o no.
En realidad, de momento sólo hacer falta meter cambios en el fichero principal, el tetris_main.c. Para ir preparando este fichero para un programa cada vez más complejo, definimos una nueva función actualiza_ficha(), que es donde ahora estará el código que lee el joystick 2 y actuará en consecuencia:

Bueno, pues con poco cambio ya somos capaces de rotar la ficha (disparo) y moverla a izquierda / derecha y arriba / abajo, sabiendo que esto último no será necesario en el juego real.
Aquí vemos, por ejemplo, que el jugador ha movido la ficha a la esquina inferior derecha, y que la ha rotado varias veces, quedando todo ello reflejado en las variables de la ficha, así como en las trazas que se ven al pie de la pantalla:

Poquito a poco se va haciendo el camino…
Código de ejemplo: tetris02.zip
