int last_key=0; // Código de la última tecla pulsada
Esta variable global indica siempre el código de la última tecla pulsada en la última imagen del juego.
La variable last_key estará a 0 si no se ha pulsado ninguna tecla en la imagen anterior del juego.
Se utiliza muchas veces esta variable para esperar en un programa a que el usuario pulse una tecla (cualquiera), con una sentencia como la siguiente:
while (scan_code != last_key) FRAME;
Esta sentencia indica que mientras no se haya pulsado una tecla en la imagen anterior (mientras scan_code y last_key sea iguales), se deben seguir visualizando imágenes del juego.
Los códigos de teclas son simplemente una relación numérica de las teclas del PC; estos códigos pueden variar ligeramente (en alguna tecla) de un teclado a otro, ya que hay teclados de diferentes idiomas, con un número variado de teclas, etc.
Sin embargo, se mantienen constantes casi todos los códigos de las principales teclas. Hay predefinida una lista de constantes (sinónimos para estos códigos) en el lenguaje que se puede ver accediendo a la ayuda sobre códigos de teclas (o códigos de rastreo del teclado); son, precisamente, estos valores numéricos los que serán asignados a la variable scan_code y last_key cuando las respectivas teclas sean pulsadas en el programa.
Normalmente, para comprobar si una tecla está siendo pulsada se utiliza simplemente la función key() del lenguaje, que recibe como parámetro uno de estos códigos de teclas, y devuelve 0 si la tecla no está pulsada o 1 cuando si lo está.
Ejemplo de utilización de scan_code:
char cadena[50]=""; int longitud=0; MAIN_PROGRAM_CDIV BEGIN_PROGRAM set_gfx(GFX_AUTODETECT_WINDOWED); set_mode(m320x200); // Bucle de espera LOOP{ if( scan_code != last_key ){ longitud = strlen(cadena); if(scan_code == _backspace){ cadena[longitud-1] = '\0'; }else{ cadena[longitud] = inttochar( scan_code ); cadena[longitud+1] = '\0'; } } write(0, 0, 0, 0, cadena); write_int(0, 0, 10, 0, &last_key); FRAME; } END_PROGRAM
En este ejemplo vemos como se puede introducir una cadena de texto carácter a carácter comprobando el contenido de las variable globales scan_code y last_key cuando ambas son diferentes se pulsó una tecla.
Ver: Datos globales - scan_code - key()