program arcade; uses crt, keyboard; type grille= ARRAY [1..3,1..3]of integer ; Var nbre_vie,s:integer; g:grille; score:integer; procedure entree (var h,k : integer); var a: TKeyEvent; e : string; begin InitKeyBoard(); a:= GetKeyEvent(); a:= TranslateKeyEvent(a); e:=KeyEventToString(a); if e='1' then begin h:=3; k:=1; end; if e='2' then begin h:=3; k:=2; end; if e='3' then begin h:=3; k:=3; end; if e='4' then begin h:=2; k:=1; end; if e='5' then begin h:=2; k:=2; end; if e='6' then begin h:=2; k:=3; end; if e='7' then begin h:=1; k:=1; end; if e='8' then begin h:=1; k:=2; end; if e='9' then begin h:=1; k:=3; end; DoneKeyBoard(); end; procedure association (tab : grille ; var s : integer); var h,k : integer; begin entree(h,k); s:=tab[h][k]; end; procedure Comptage (var nbre_vie, score , s : Integer); begin if (s>0) and (s<801) then score:=score+10; if (s> 800) and (s<901) then nbre_vie:=nbre_vie +1 ; if ((s> 900) and ( s<1001)) or (s=0) then nbre_vie:=nbre_vie -1; end; procedure initialisation( var gr:grille); var i,j,h,k :integer ; begin Randomize; i:= random(3)+1; j:= random(3)+1; for h:= 1 TO 3 DO BEGIN FOR k:=1 TO 3 do begin if (h<>i) or (k<>j) then gr[h][k]:= 0 ; if (h=i) and (k=j) then gr[h][k]:= random(1000)+1; write ( ' ',gr[h][k],' '); end; writeln; writeln; end; end; function gestiondifficulte ( score: integer):integer; var temps: integer; begin if (score < 201) then temps:= 3000; if (score>200) and (score < 401) then temps:= 2000 ; if (score > 400) and (score < 551) then temps:= 1500; if (score> 550) and (score < 601) then temps := 1000; if score > 600 then temps := 500; gestiondifficulte:=temps; end; begin score:=0; s:=0; nbre_vie:=5; While nbre_vie > 0 do begin clrscr(); delay(gestiondifficulte(score)); initialisation(g); writeln('s = ', s); writeln('score = ',score); writeln (' nb de vies = ', nbre_vie); association(g,s); Comptage(nbre_vie,score,s); end; writeln; writeln (' Game Over'); end.