Я играю в C на консольном приложении, и мне нужно напечатать таймер, пока пользователь одновременно играет в игру, я не знаю, как правильно программировать, на самом деле, я просто начинаю использовать этот компилятор, поэтому я Я не знаю много многопоточности и прочее, но это далеко, насколько я понимаю, вот пример двух функций, первая из которых является «таймером», а вторая просто вопрос, мои сомнения если я могу запустить эти 2 функции одновременно и как я могу напечатать таймер, в то время как я могу ответить на эти 2 вопроса, не прерывая работу консоли.
Пример:
#include <windows.h>
#include <stdio.h>
#include <time.h>
DWORD WINAPI Timer(int limit)
{
int secs = 1;
time_t unix;
struct tm * timeinfo;
time(&unix);
timeinfo = localtime(&unix);
int t1 = timeinfo->tm_sec;
int t2 = timeinfo->tm_sec;
int i = 0;
while(1 == 1)
{
time(&unix);
timeinfo = localtime(&unix);
if((t1 + i) == timeinfo->tm_sec)
{
system("cls");
printf("time left %d seconds\n", timeinfo->tm_sec - t2 - limit);
i++;
}
if(timeinfo->tm_sec >= (t1 + limit))
{
break;
printf("Your time its done");
}
}
return 0;
}
DWORD WINAPI Questionary()
{
puts("testing\n\n");
int age, height;
printf("Please write your age: ");
scanf("%d", &age);
printf("Please write your height: ");
scanf("%d", &height);
printf("\n\nThe numbers written are %d y %d", age, height);
return NULL;
}
int main()
{
int i, limit;
HANDLE tempo;
HANDLE questions;
DWORD ThreadId;
printf("\nHow much time would you like for your timer countdown? ");
scanf("%d", &limit);
//Funcion Handle
questions= CreateThread(NULL,0,Questionary,1,0,&ThreadId);
WaitForSingleObject(preguntas,INFINITE);
tempo= CreateThread(NULL,0,Timer(limit),1,0,&ThreadId);
WaitForSingleObject(tiempofinal,limit*40);
return 0;
}