Решение

Пример использования текстовой графики

Ожидание

Процедура Delay(ms: word) приостановит исполнение программы на ms миллисекунд.

Функция KeyPressed: boolean отслеживает нажатия клавиш (на клавиатуре).

Функция ReadKey: char возвращает код символа, чья клавиша (или комбинация клавиш) была нажата.

Задача 1. Написать простейший скрин-сейвер (screen-saver) - программу, предохраняющую монитор от пережигания. Его основными чертами должны стать:

  1. преобладание черного фона;
  2. регулярная смена позиций цветовых пятен;
  3. прекращение работы при нажатии произвольной клавиши на клавиатуре.
program scrsav;uses crt;var n,i,x,y,c,t,z: word; err: integer; begin n:=10; if paramcount>0 then if paramstr(1)='?' then begin writeln('scrsav [density: byte] (=10 by default)'); halt end else begin val(paramstr(1),n,err); if (err<>0)or(n<=0) then n:=10; end; randomize; {активизация генератора случайных чисел} while not keypressed do begin y:= random(24)+1; {генерация случайного числа от 1 до 25} x:= random(79)+1; {генерация случайного числа от 1 до 80} z:= random(220)+33; {генерация случайного символа} c:= random(14)+1; {генерация случайного цвета от 1 до 15} gotoxy(x,y); textcolor(c); delay(n); write(chr(z)); for i:= 1 to 10 do begin y:= random(24)+1; {генерация случайного числа от 1 до 25} x:= random(79)+1; {генерация случайного числа от 1 до 80} gotoxy(x,y); textcolor(black); delay(n); write(' '); end; end;

Замечание: Параметр, регулирующий густоту и скорость изменения символов на экране, можно задавать как аргумент из командной строки во время вызова программы (см. лекцию 13).