uses crt,dos,graph; const size = 50; fore = lightred; back = darkgray; type indicator = 1 .. 7; i_set = set of indicator; rec = record xs, ys, xf, yf: integer; end; arr_digits = array['0' .. '9'] of i_set; arr_lines = array[1 .. 7] of rec; const digits: arr_digits = ( [1, 2, 3, 4, 5, 6], [3, 4], [2, 3, 5, 6, 7], [2, 3, 4, 5, 7], [1, 3, 4, 7], [1, 2, 4, 5, 7], [1, 2, 4, 5, 6, 7], [2, 3, 4], [1, 2, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 7] ); lines: arr_lines = ( (xs:0; ys:0; xf:0; yf:size), (xs:0; ys:0; xf:size; yf:0), (xs:size; ys:0; xf:size; yf:size), (xs:size; ys:size; xf:size; yf:2*size), (xs:size; ys:2*size; xf:0; yf:2*size), (xs:0; ys:2*size; xf:0; yf:size), (xs:0; ys:size; xf:size; yf:size) ); var xpos, ypos: integer; procedure put_indicator(list: i_set); var i: indicator; begin for i := low(indicator) to high(indicator) do begin if i in list then setcolor(fore) else setcolor(back); with lines[i] do line(xpos + xs, ypos + ys, xpos + xf, ypos + yf); end; inc(xpos, size + 10); end; procedure print(s: string); var i: integer; begin for i := 1 to length(s) do begin case s[i] of '0' .. '9': put_indicator(digits[s[i]]); '-': put_indicator([7]); end; end; end; Function GetTime: LongInt; Var h, m, s, ms: Word; R: longint; begin Dos.GetTime(h, m, s, ms); GetTime := ms + 100 * (s + 60 * (longint(m) + 60 * h)); end; function convert_str(seconds: integer): string; function lead_zero(value: integer): string; var s: string; begin str(value, s); while length(s) < 2 do s := '0' + s; lead_zero := s; end; begin convert_str := lead_zero(seconds div 60) + '-' + lead_zero(seconds mod 60); end; var g_driver, g_mode,i: integer; stop, finished: boolean; curr_time: longint; s: string; begin initgraph(g_driver, g_mode, ''); i := 0; repeat stop := false; repeat curr_time := GetTime; while GetTime - curr_time < 100 do; xpos := 150; ypos := 150; cleardevice; print(convert_str(i)); if keypressed then begin stop := true; while keypressed do readkey; end; inc(i); until stop; while not keypressed do; finished := readkey = #27; until finished; closegraph; end.