Hola.
Estoy haciendo un juego en plan rompecabezas donde hay un tablero de 8x8 piezas.
Quiero seleccionar una, luego otra, y si se cumplen ciertas condiciones, intercambiarlas.
Para moverme por el tablero utilizo las teclas de los cursores (que desplazan un cuadrado que marca la pieza actual) y para seleccionar esa pieza, CTRL.
El problema es que si mantengo pulsada durante un tiempo una tecla (el cursor ->, por ejemplo) el cuadrado se desplaza hacia la derecha muy rápido. La solución ha sido poner un retardo (por ejemplo, que sólo detecte pulsaciones cada décima de segundo). Pero también me gustaría poder pulsar muy rápido unas cuantas veces la misma tecla (distinto de mantenerla pulsada durante un rato) y desplazarme ese número de veces. O sea, que la secuencia -> -> -> ->, aunque se pulse muy rápido, desplace 4 a la derecha. Con lo del retardo, esto último no lo puedo hacer. A veces desplaza (cuando ya ha pasado la décima de segundo actual) y a veces no.
El código, de las teclas de los cursores es éste:
Código:
process cursor()
begin
x = 96;
y = 56;
z = -1;
[...]
loop
if (timer[0] > 10)
// Desplazamiento del cursor
if (key(_left)) x -= 16; end
if (key(_right)) x += 16; end
if (key(_up)) y -= 16; end
if (key(_down)) y += 16; end
[...]
// Reinicia el temporizador, para que haya un retardo si
// se mantiene la tecla pulsada
timer[0] = 0;
end
frame;
end
end
¿Alguna idea? O dicho de otra forma, hay alguna manera de detectar que del frame anterior al actual no se ha soltado la tecla?
Un saludo.
Marcadores