home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / ECO30603.ZIP / ECO30603.LZH / ECOLIBCS / DEMOS / STDFRAME.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-03-08  |  4.5 KB  |  142 lines

  1. uses
  2.   eco_lib, crt
  3.  
  4.   ;
  5.  
  6.  
  7. const
  8.   c : array[0..4, 0..7] of record fore, back: byte; letter: char end = (
  9.     (
  10.      (fore: lightgray; back:     black; letter: 'A'),
  11.      (fore: lightcyan; back:     black; letter: 'B'),
  12.      (fore:  lightred; back:     black; letter: 'C'),
  13.      (fore:    yellow; back:     black; letter: 'D'),
  14.      (fore:     white; back:     black; letter: 'E'),
  15.      (fore:     black; back: lightgray; letter: 'F'),
  16.      (fore:      blue; back: lightgray; letter: 'G'),
  17.      (fore:       red; back: lightgray; letter: 'H')
  18.     ),
  19.     (
  20.      (fore:  lightred; back:  darkgray; letter: 'I'),
  21.      (fore:    yellow; back:  darkgray; letter: 'J'),
  22.      (fore:     white; back:  darkgray; letter: 'K'),
  23.      (fore: lightcyan; back:  darkgray; letter: 'L'),
  24.      (fore: lightgray; back:  darkgray; letter: 'M'),
  25.      (fore:     black; back:     white; letter: 'N'),
  26.      (fore:      blue; back:     white; letter: 'O'),
  27.      (fore:       red; back:     white; letter: 'P')
  28.     ),
  29.     (
  30.      (fore:      cyan; back:      blue; letter: 'Q'),
  31.      (fore: lightcyan; back:      blue; letter: 'R'),
  32.      (fore:    yellow; back:      blue; letter: 'S'),
  33.      (fore:     white; back:      blue; letter: 'T'),
  34.      (fore:    yellow; back: lightblue; letter: 'U'),
  35.      (fore:     white; back: lightblue; letter: 'V'),
  36.      (fore:     black; back: lightcyan; letter: 'W'),
  37.      (fore:      blue; back: lightcyan; letter: 'X')
  38.     ),
  39.     (
  40.      (fore:    yellow; back:     brown; letter: 'Y'),
  41.      (fore:     white; back:     brown; letter: 'Z'),
  42.      (fore:    yellow; back:       red; letter: '1'),
  43.      (fore:     white; back:       red; letter: '2'),
  44.      (fore: lightcyan; back:       red; letter: '3'),
  45.      (fore:    yellow; back:  lightred; letter: '4'),
  46.      (fore:     black; back:    yellow; letter: '5'),
  47.      (fore:      blue; back:    yellow; letter: '6')
  48.     ),
  49.     (
  50.      (fore:     black; back:lightgreen; letter: '7'),
  51.      (fore:      blue; back:lightgreen; letter: '8'),
  52.      (fore:         0; back:         0; letter: '9'),
  53.      (fore:         0; back:         0; letter: '0'),
  54.      (fore:         0; back:         0; letter: '-'),
  55.      (fore:         0; back:         0; letter: '='),
  56.      (fore:         0; back:         0; letter: '\'),
  57.      (fore:         0; back:         0; letter: '/')
  58.     )
  59.   );
  60.  
  61.  
  62. var
  63.   i, j  :    byte;
  64.   key   :    char;
  65.   found : boolean;
  66.  
  67. begin
  68.   if _currows < 43 then begin
  69.     writeln('Sorry, but I need at least 43 rows...');
  70.     writeln('I now have ', _currows, ' rows available.');
  71.     halt
  72.   end;
  73.   __clrscn(1, 1, _curcolumns, _currows-4, white, darkgray, ' '); 
  74.   __setblwin(false);
  75.   __clrscn(1, _currows-3, _curcolumns, _currows, lightgray, black, ' '); 
  76.   for i := 0 to 4 do for j := 0 to 7 do if (
  77.     (c[i, j].fore + c[i, j].back) > 0
  78.   ) then begin
  79.     __bandwin(
  80.       true, j * 9 + 6, i * 9 + 4, j * 9 + 8, i * 9 + 6, 
  81.       c[i, j].fore, c[i ,j].back, sh_default, bt_single
  82.     );
  83.     __betwscn(
  84.       j * 9 + 6, j * 9 + 8, i * 9 + 4, c[i, j].fore, c[i ,j].back, 
  85.       __num(c[i, j].fore)
  86.     );
  87.     __betwscn(
  88.       j * 9 + 6, j * 9 + 9, i * 9 + 6, c[i, j].fore, c[i ,j].back, 
  89.       __num(c[i, j].back)
  90.     );
  91.     __betwscn(
  92.       j * 9 + 6, j * 9 + 9, i * 9 + 5, {c[i, j].fore, c[i ,j].back,} 15, 0,
  93.       (c[i, j].letter)
  94.     );
  95.   end;
  96.  
  97.   j := 4; i := 4;
  98.   __bandwin(
  99.     true, j * 9 - 11, i * 9 + 4, j * 9 + 8, i * 9 + 6, 
  100.     yellow, black, sh_default, bt_single
  101.   );
  102.   __betwscn(j * 9 - 11, j * 9 + 7, i * 9 + 4, yellow, black, 
  103.     'StdFrame by Floor'
  104.   );
  105.   __betwscn(j * 9 - 10, j * 9 + 7, i * 9 + 5, yellow, black,
  106.     'Press A..Z, 1..8'
  107.   );
  108.   __betwscn(j * 9 - 11, j * 9 + 7, i * 9 + 6, yellow, black,
  109.     '(C) by UltiHouse.'
  110.   );
  111.  
  112.   j := 7; i := 4;
  113.   __bandwin(
  114.     true, j * 9 - 11, i * 9 + 4, j * 9 + 8, i * 9 + 6, 
  115.     yellow, black, sh_default, bt_single
  116.   );
  117.   __betwscn(j * 9 - 11, j * 9 + 7, i * 9 + 4, yellow, black, 
  118.     'Often used colour'
  119.   );
  120.   __betwscn(j * 9 - 10, j * 9 + 7, i * 9 + 5, yellow, black,
  121.     'combinations right'
  122.   );
  123.   __betwscn(j * 9 - 11, j * 9 + 7, i * 9 + 6, yellow, black,
  124.     'under your hands.'
  125.   );
  126.   key := upcase(readkey);
  127.   i := 0; j := 0;
  128.  
  129.   repeat
  130.     j := 0;
  131.     repeat
  132.       found := key = c[i, j].letter;
  133.       if not found then inc(j);
  134.     until (j > 7) or found;
  135.     if not found then inc(i);
  136.   until ((i > 4) and (j > 7)) or (found);
  137.   gotoxy(1, _currows-3);
  138.   if found then write(
  139.     _colours[c[i, j].fore], ' on ', _colours[c[i, j].back]
  140.   ) else write('Sorry!  ');
  141. end.
  142.