Содержание
Пример использования текстовой графики
Задача 1. Написать простейший скрин–сейвер (screen saver) — программу, предохраняющую монитор от пережигания. Его основными чертами должны стать:
- преобладание чёрного фона;
- регулярная смена позиций цветовых пятен;
- прекращение работы при нажатии произвольной клавиши на клавиатуре.
Решение
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(1);
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;
end.
Замечание: Параметр, регулирующий густоту и скорость изменения символов на экране, можно задавать как аргумент из командной строки во время вызова программы (см. лекцию 13).
Создание дружественного интерфейса
Напомним, что пользовательский интерфейс — это обеспечение взаимодействия программы и человека1.
Хорошим считается дружественный (или дружелюбный) интерфейс — тот, который удобен не программисту, а пользователю. Несколько раз на протяжении нашего курса лекций мы подчёркивали это. Теперь, когда у нас уже есть все инструменты, позволяющие создавать хорошие интерфейсы к программам, пришло время поговорить о них подробнее.
Заставка
Первым делом — сразу после запуска — ваша программа должна сообщить пользователю, какую именно задачу она собирается решать. Причём информация о решаемой задаче должна быть исчерпывающей. Это особенно важно, если в постановке задачи имеются серьёзные ограничения, о которых пользователя нужно уведомить сразу же.
Информационная часть интерфейса, появляющаяся на экране сразу после запуска программы, называется заставкой. Заставка может содержать:
- название программы;
- пояснение (краткую или подробную информацию о решаемой задаче);
- информацию об авторе(–ах) программы;
- номер версии программы;
- и т. п.
Заставка может состоять как из отдельного экрана, который исчезает после нажатия произвольной клавиши (его сменяет рабочая область программы), так и лишь из одной строки, которая остаётся на экране до конца работы программы (или пока её не вытеснит объёмный вывод). Например:
Сортировка линейного массива (до 10 000 элементов) методом пирамиды. Нахождение кратчайшего пути в связном графе. Зодиак. Определение знака гороскопа по дате рождения. Поиграем в крестики–нолики на доске 5х5!
Ввод информации
Язык Pascal относится к процедурно–ориентированным языкам, поэтому последовательность ввода информации жёстко задается самой программой2. Эта жёсткость накладывает на программиста дополнительные обязательства при оформлении интерфейса.
Пользователь может вводить информацию двумя способами: свободным вводом или выбором из предоставленных возможностей.
Свободный ввод информации может потребоваться, например, при запросе имени файла, хранящего какие–либо объёмные данные. Можно также просить пользователя ввести своё имя или несколько небольших чисел. Напомним, что ввод больших объёмов информации (например, таблиц или матриц) желательно организовывать через файлы. В противном случае многократно возрастает вероятность ошибки и, как следствие, необходимость программировать дополнительные блоки, позволяющие эти ошибки исправлять.
Приглашения
Каждый раз, когда программа ждёт свободного ввода от пользователя, она должна сообщать об этом, выводя на экран приглашение к вводу.
Приглашение вида «Введите х:» невозможно считать удовлетворительным, поскольку оно не содержит никакой информации об ожидаемых данных. Хорошее приглашение должно сообщать пользователю, что именно от него хотят получить в данный момент: тип, формат и размер вводимых данных.
Например:
Введите координаты центра окружности (два целых числа -10000 <= x, y <= 10000):
Примечания
- ^ Бывают и иные интерфейсы, обеспечивающие взаимодействие различных модулей, программ, устройств и т. п.
- ^ Только при использовании стандартных библиотек. Используя Turbo Vision или другие библиотеки, можно строить более дружественные пользовательские интерфейсы, как в самой среде разработки, например.