1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
uses Dos,Crt;
Const TempAttente = 30; {Temps d'attente en seconde}
Type Questionnaire=Record
Question,
Reponse :String;
Correcte :Boolean; {Reponse, Correcte/Fausse}
End;
Var cpt,i,
_h, _m, _s, _hund:Word;
reponse:String;
t:Array [1..30] Of Questionnaire;
c:char; {lire un caractere}
function TempsEcoule:Boolean;
var h, m, s, hund:Word;
temps_1,temps_2:Extended;
begin
{60,30}
GetTime(h,m,s,hund); {Avoir le temp actuel}
temps_1:=(_h*60*60) + (_m*60) + _s; {Avoir les secondes de debut}
temps_2:=(h*60*60) + (m*60) + s; {Avoir les secondes du temp actuel}
TempsEcoule := Abs(temps_2-temps_1) >= 30;
{^--> renvoi la valeur absolue !!}
end;
begin
cpt:=0;
for i := 1 to 30 do
begin
GetTime(_h,_m,_s,_hund);
WriteLn(t[i].question);
repeat
until (TempsEcoule)or(KeyPressed);
if not TempsEcoule
then begin
{
si l'utilisateur quitte la 1ere boucle avec
une touche pressee, il doit confirme, soit par [ENTREE/ESC]
et le temps reste toujours l'un des facteur qui doit etre
ajouter!!
}
repeat
c:=readkey;
until (TempsEcoule)or(c=#13)or(c=#27);
if c=#13 {validation. donc lecture de la reponse!!}
then ReadLn(reponse)
else begin
WriteLn('PROGRAMME QUITTE PAR L''UTILISATEUR');
Delay(800);
Halt; { <-- Quitter le programme}
end;
if (reponse=t[i].reponse) then cpt:=cpt+1;
end;
clrscr;
end;
Write('le resultat de ce test est : ',cpt);
ReadLn;
end. |
Partager