Invocar más de una función al mismo tiempo (paralelamente)

hIUG
08 de Abril del 2010
Hola!

Soy mas o menos nuevo en la programación en C y quisiera externarles una duda que tengo:

Estoy programando un sencillo juego en c con colas donde una letra generada aleatoriamente va callendo y el usuario debe teclear dicha letra y luego de 4 segundos si el usuario no la ha tecleado comienza a caer una segunda letra en la pantalla (en la consola) y así sucesivamente para un ciclo de diez letras y debe teclearlas todas antes de que lleguen al fondo (coordenada 25 en y de la consola)

Tengo el grave problema (creo yo) de que para lograr el efecto de que la primera letra caiga hasta que llegue al fondo o el usuario teclee algo y mientras también despues de 4 segundos empezar a dejar caer la segunda y seguir dejando caer la primera y estar monitoreando el teclado NECESITO HACER LA INVOCACIÓN DE FUNCIONES DE MANERA PARALELA, ES DECIR AL MISMO TIEMPO

La solución que me imagino es tener en la función principal un while(!kbhit()) e ir llamando a una función recursivamente cada 4 segundos que se llame caer() la cual haga el dichoso efecto de dejar caer las letras pero necesito que no se detenga la función en curso para llamarse recursivamente

Espero me de a entender, lo que necesito es una manera de invocar (ejecutar) funciones de forma paralela

SE LOS AGRADECERÉ ETERNAMENTE SI ME AYUDAN


GRACIAS!!!!!!!!

Capitan Kirk
08 de Abril del 2010
La forma sencilla de hacerlo sería algo así como:

while ( !kbhit() )
{
mover_letras(); // Mover las letras que haya presentes en ese momento
comprobar_timeout();
if (ocurrio_timeout) crear_nueva_letra();
}

Para comprobar el timeout, tendrás que tomar alguna referencia de tiempo (por ejemplo, la hora que tenga el SO). Vuelve a leer esta referencia cada vez que se pulse una tecla.

No es un proceso paralelo, pero para un juego sencillo del tipo del que propones puede ser suficiente.

Saludos,