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