En la entrada anterior, cuando las fichas caen, éstas se acumulan sobre el fondo del tablero. Sin embargo, si en el fondo ya hubiera otras fichas, de momento, no se acumulan encima, sino que se pisan o solapan. Esto hay que mejorarlo.
En el fondo, esto es una tarea sencilla ya que, si recordamos, ya metimos unos controles en los movimientos y rotaciones de la ficha para detectar si ésta se iba a salir del tablero. Se trata pues, simplemente, de mejorar esos controles.
Por ejemplo, a la hora de mover la ficha hacia abajo o hacerla caer (fichero tetris_ficha.c):

Es decir, ahora, además del control relativo al fondo del tablero (if de la línea 222), tenemos un nuevo control relativo a si la nueva posición de la ficha al caer estará vacía o no (if de la línea 225). En caso de no estar vacía la función devolverá 0 (o false), y el movimiento no podrá tener lugar, acumulándose la ficha en su posición actual, es decir, encima de la ficha que le impide caer.
Y lo mismo ocurre con el resto de funciones que verifican movimientos, las funciones ficha_verifica_*(), así como con las funciones que verifican rotaciones, que son las funciones ficha_verifica_rotacion_*().
Se trata de un cambio sencillo pero que, al acumular las fichas unas sobre otras, ya le da al juego un aspecto mucho más acabado:

Código de ejemplo: tetris08.zip
