#include <windows.h> #include <stdio.h> #include <string.h> #include <conio.h> #define ROUND_TIME 10 #define RESPONSE_TIME 3 #define QUESTION "Java, c'est ?" #define RESPONSE "lent" BOOL GetResponse() { char lpResponse[200]; int nTime; int nTyped; BOOL bEnd; BOOL bResult; int nI; int nJ; bResult = FALSE; puts("Entre la réponse :"); nJ = 0; nTime = 0; bEnd = FALSE; while (nTime < RESPONSE_TIME) { for (nI = 0; nI < 100; nI++) { if (kbhit()) { nTyped = getch(); if (nTyped != 0x0d) { /* Faut faire l'echo */ putchar(nTyped); /* Accumulation de la réponse */ lpResponse[nJ] = (char)nTyped; nJ++; } else { putchar('\n'); /* Ajout du zéro terminal pour la comparaison */ bEnd = TRUE; lpResponse[nJ] = 0; /* Si la réponse est bonne */ if (! strcmp(lpResponse, RESPONSE)) bResult = TRUE; else puts("Bin non. Same player play again."); } } Sleep(10); } if (bEnd) break; nTime++; } if (! bEnd) puts("\nDes problèmes de clavier ?"); return bResult; } int main() { int nTime; BOOL bFound; int nI; puts(QUESTION); bFound = FALSE; nTime = 0; while (nTime < ROUND_TIME) { /* On va tester la pression tous les dixièmes de secondes */ for (nI = 0; nI < 100; nI++) { /* On ne prend en compte que les pressions de Entréee */ if (kbhit() && (getch() == 0x0d)) { bFound = GetResponse(); if (bFound) break; } Sleep(10); } if (bFound) break; nTime++; printf("%d\n", nTime); } if (bFound) puts("Félicitations !"); else puts("Tu n'as pas trouvé la réponse à temps, n00b."); return 0; }