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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
program Project1;
uses
crt, dos;
type Heure = record
ss, s, m, h : word;
end;
Var x, y, tour: byte;
mv: char;
temps : Heure;
procedure initTimer(var tm : Heure);
begin
gettime(tm.h,tm.m,tm.s,tm.ss);
end;
procedure diff(t1, t2 : heure; var t: heure) ;
var l : longint;
begin
l:=t1.s+t1.m*60+t1.h*3600-(t2.s+t2.m*60+t2.h*3600);
t.h:=l div 3600;
l:=l mod 3600;
t.m:=l div 60;
t.s:=l mod 60;
end;
Procedure Time;
Var ss,sec, min, heu: byte;
t, t2 : Heure;
begin
gettime(t.h, t.m,t.s,t.ss);
diff(t, temps, t2);
sec:=t2.s; min:=t2.m; heu:=t2.h;
If (sec<59) then sec:=sec+1
Else If (min<59) then
Begin
sec:=0;
min:=min+1;
End
Else If (heu>0) then
Begin
sec:=0;
min:=0;
heu:=heu+1;
End;
If (min=0) AND (heu=0) then WriteLn (sec)
Else If (min>0) AND (heu=0) then WriteLn (min,':',sec)
Else If (heu>0) then WriteLn (heu,':',min,':',sec);
End;
Procedure Circuit;
Begin
GotoXY (6,1); Write ('--------------------'); GotoXY (11,5); Write ('----------------'); GotoXY (23,2); Write (' |');
GotoXY (5,2); Write ('| '); GotoXY (23,3); Write (' |'); GotoXY (5,3); Write ('| ');
GotoXY (23,4); Write (' |'); GotoXY (5,4); Write ('| '); GotoXY (23,5); Write (' |'); GotoXY (5,5); Write ('| ');
GotoXY (23,6); Write ('| '); GotoXY (5,6); Write ('| |'); GotoXY (23,7); Write ('| '); GotoXY (5,7); Write ('| |');
GotoXY (23,8); Write ('| '); GotoXY (5,8); Write ('| |'); GotoXY (27,6); Write ('----------------'); GotoXY (5,9); Write ('| |');
GotoXY (24,9); Write ('----------------'); GotoXY (5,10); WriteLn ('| |'); GotoXY (38,7); Write (' |'); GotoXY (5,11); Write ('| |');
GotoXY (38,8); Write (' |'); GotoXY (5,12); Write ('| |'); GotoXY (38,9); Write (' |'); GotoXY (5,13); Write ('| |');
GotoXY (38,10); Write ('| |'); GotoXY (5,14); Write ('| |'); GotoXY (38,11); Write ('| |'); GotoXY (5,15); Write ('| |');
GotoXY (38,12); Write ('| |'); GotoXY (5,16); Write ('| |'); GotoXY (38,13); Write ('| |'); GotoXY (5,17); Write ('| |');
GotoXY (38,14); Write ('| |'); GotoXY (5,18); Write ('| |'); GotoXY (38,15); Write ('| |'); GotoXY (5,19); Write ('| |');
GotoXY (38,16); Write ('| |'); GotoXY (5,20); Write ('| |'); GotoXY (38,17); Write ('| '); GotoXY (5,21); Write ('| ');
GotoXY (38,18); Write ('| '); GotoXY (5,22); Write ('| '); GotoXY (38,19); Write ('| '); GotoXY (5,23); Write ('| ');
GotoXY (11,21); Write ('---------------------------------------------------------------'); GotoXY (6,24); Write ('------------------------------------------------------------------------');
GotoXY (73,23); Write (' |'); GotoXY (73,22); Write (' |'); GotoXY (73,21); Write (' |'); GotoXY (73,20); Write ('| |');
GotoXY (73,19); Write ('| |'); GotoXY (73,18); Write ('| |'); GotoXY (73,17); Write ('| |'); GotoXY (73,16); Write ('| |');
GotoXY (73,15); Write ('| |'); GotoXY (73,14); Write ('| |'); GotoXY (73,13); Write ('| |');
GotoXY (73,12); Write ('| |'); GotoXY (73,11); Write ('| |'); GotoXY (73,10); Write (' |'); GotoXY (73,11); Write (' |');
GotoXY (73,12); Write (' |'); GotoXY (57,12); Write ('----------------'); GotoXY (62,9); Write ('----------------');
GotoXY (56,9); Write ('|'); GotoXY (56,10); Write ('|'); GotoXY (56,11); Write ('|'); GotoXY (56,8); Write ('| |');
GotoXY (56,7); Write ('| |'); GotoXY (56,6); Write ('| |'); GotoXY (56,5); Write ('| |'); GotoXY (56,4); Write (' |');
GotoXY (56,3); Write (' |'); GotoXY (56,2); Write (' |'); GotoXY (47,1); Write ('--------------'); GotoXY (52,4); Write ('----');
GotoXY (46,2); Write ('|'); GotoXY (46,3); Write ('|'); GotoXY (46,4); Write ('|'); GotoXY (46,5); Write ('| |');
GotoXY (46,6); Write ('| |'); GotoXY (46,7); Write ('| |'); GotoXY (46,8); Write ('| |'); GotoXY (46,9); Write ('| |');
GotoXY (46,10); Write ('| |'); GotoXY (46,11); Write ('| |'); GotoXY (46,12); Write ('| |'); GotoXY (46,13); Write ('| |');
GotoXY (46,14); Write ('| |'); GotoXY (46,15); Write ('| |'); GotoXY (46,16); Write ('| |'); GotoXY (46,17); Write (' |');
GotoXY (46,18); Write (' |'); GotoXY (46,19); Write (' |'); GotoXY (44,17); Write ('--'); GotoXY (39,20); Write ('------------');
GotoXY (41,23); Write ('|'); GotoXY (41,22); Write ('|'); GotoXY(39,23); Write ('|'); GotoXY(39, 22); Write ('|');
textcolor (4); GotoXY (31,3); Write ('F1 *******');
GotoXY (65,2); Write('Tour: ',tour,' ');
GotoXY (65,4); Write('Temps:'); GotoXY (72,4);
End;
Begin
initTimer(temps);
tour:=3;
mv:='d';
cursoroff;
x:=40;
y:=23;
GotoXY (x,y); textcolor (4); WriteLn ('>');
While (mv<>#13) AND (tour>0) do
Begin
clrscr;
time();
textcolor (8); Circuit;
If (x=39) AND ((y=23) OR (y=22)) AND (mv='d') then tour:=tour-1; (*Diminue le tour de 1 à chaque passage par la ligne d'arrivée *)
If (x=39) AND ((y=23) OR (y=22)) AND (mv='q') then x:=x+1; (*Empêche de passer la ligne à l'envers*)
GotoXY (x,y);
textcolor (4);
Case mv of
'q' : WriteLn ('<');
'd' : WriteLn ('>');
'z' : WriteLn ('^');
's' : WriteLn ('v');
End;
if keyPressed then
begin
mv:=readkey;
while keyPressed() do //on vide le buffer du clavier
readkey;
Case mv of
'q' : If (x>6) then x:=x-1;
'd' : If (x<77) then x:=x+1;
'z' : If (y>2) then y:=y-1;
's' : If (y<23) then y:=y+1;
End;
end;
(*Limite circuit extremite + déplacement*)
(*Limites circuit entier*)
If ((y=20) AND (x>38) AND (x<51)) OR ((y=12) AND (x>56) AND (x<74)) OR ((y=4) AND (x>50) AND (x<57)) OR ((y=9) AND (x>20) AND (x<39)) OR ((y=5) AND (x>9) AND (x<24)) then y:=y-1
Else If ((y=21) AND (x>9) AND (x<74)) OR ((y=9) AND (x>60) AND (x<78)) OR ((y=17) AND (x>42) AND (x<47)) OR ((y=6) AND (x>25) AND (x<43)) then y:=y+1
Else If ((x=10) AND (y>5) AND (y<22)) OR ((x=26) AND (y>1) AND (y<6)) OR ((x=43) AND (y>6) AND (y<17)) OR ((x=51) AND (y>4) AND (y<20)) OR ((x=61) AND (y>1) AND (y<9)) then x:=x-1
Else If ((x=23) AND (y>5) AND (y<10)) OR ((x=38) AND (y>8) AND (y<20)) OR ((x=46) AND (y>1) AND (y<18)) OR ((x=56) AND (y>4) AND (y<12)) OR ((x=73) AND (y>11) AND (y<21)) then x:=x+1;
delay(500);
End;
textcolor (8);Circuit;
GotoXY (x,y); textcolor (4); WriteLn ('>');
GotoXY(34,13); WriteLn ('La partie est terminee');
ReadLn;
End. |
Partager