КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Функции и операторы графического режима
CLS - очищает экран дисплея; VIEW [[SCREEN](x1,y1)-(x2,y2)[,[n][,m]]] - устанавливает окно графического вывода, ограниченное прямоугольной областью с координатами (x1,y1) левого верхнего угла и (x2,y2) правого нижнего угла, где n - числовое выражение: цвет закраски окна; m - числовое выражение: цвет рамки окна вывода. SCREEN-аргумент. Определяет, что координаты (x, y) любой выводимой точки имеют абсолютные значения. Графика выводится только внутри окна. Если SCREEN отсутствует, то внутри окна вывода действуют относительные к границам окна (х1,у1) координаты. WINDOW [[SCREEN](x1,y1)-(x2,y2)] -устанавливает размеры текущего окна вывода. (x1,y1)-(x2,y2) - числа обычной точности, определяющие координаты прямоугольного окна вывода. Оператор WINDOW позволяет создать координатную систему для рисования линий, графиков и пр. без задания абсолютных координат на экране. Т.о. координаты всех точек определяются как относительные к данному окну вывода. Модификация WINDOW SCREEN преобразует направление координаты Y в декартово представление, т.е. значения Y идут от большего к меньшему сверху вниз. SCREEN n, где n - выражение или константа целого типа, указывает номер режима экрана. Оператор SCREEN используется для выбора режима экрана в соответствии с особенностями аппаратуры видеоадаптера и монитора, этот оператор в программе должен предшествовать любым графическим операторам. Таблица 10. Параметры основных режимов оператора SCREEN
COLOR [n],[m] - устанавливает экранные цвета, где n - цвет переднего плана (букв или графических изображений), m - цвет фона. Например, оп6ратор COLOR 10,4 установит на красном фоне ярко-зеленый цвет букв или графических изображений. PALETTE [n,m] - изменяет цвет в палитре, где n - атрибут палитры, который нужно изменить (0 - 15), m - цвет, присваиваемый атрибуту, величина длинного, целого типа. PALETTE USING A%[(i)] - изменяет все атрибуты одновременно, где A% - имя массива длинного, целого типа. Массив А% должен содержать номера цветов, присваиваемых атрибутам текущего режима экрана, i - индекс начального элемента массива, используемый для установки палитры. PRESET [STEP](x,y)[,n]; PSET [STEP](x,y)[,n] - рисуют точку на экране, где (x,y) - координаты точки на экране. Величины координат, отображаемых на экране точек, зависят от установленного графического режима (оператор SCREEN). Значения координат могут выходить за пределы экрана, но не должны превышать значений (от -32768 до 32767), STEP - указывает, что координаты (x,y) отображаемой точки берутся как приращение к соответствующим координатам предыдущей точки. При отсутствии аргумента STEP координаты (x,y) непосредственно указывают физические координаты экрана, n - цвет. Различие операторов PSET и PRESET состоит в том, что если цвет опущен, в первом случае точка выводится цветом переднего плана, а во втором - цветом фона. На атрибут цвета влияют операторы COLOR и PALETTE. LINE [[STEP](x1,y1)]-[STEP](x2,y2)[,[n][,[B[F]][,&m]]] рисует линии, контуры прямоугольников, закрашенные прямоугольники. (x1,y1)-(x2,y2) - устанавливают координаты начала и конца отрезка; n - цвет линии, контура или закраски прямоугольника; параметр B устанавливает режим рисования прямоугольника; параметр BF устанавливает режим рисования прямоугольника, закрашенного цветом n; STEP - указывает на относительные координаты (относительно последней точки); &m - параметр "стиль" - 16-битовое целое число. Используется для рисования пунктирных линий. CIRCLE [STEP](x,y),r[,[n][,[fi1][,[fi2][,k]]]] - рисует эллипс или окружность; (x,y) - координаты центра окружности или эллипса; r - радиус круга или эллипса; STEP - указывает, что (x,y) задаются как смещение относительно текущей позиции графического курсора; n - цвет фигуры; fi1,fi2 - начальный и конечный углы рисования фигуры. Их значения - в диапазоне от -2*PI до 2*PI радиан. При задании положительного угла рисуется лишь дуга, при задании отрицательного угла - та же дуга, но с отрезком, соединяющим точку дуги с центром; k - коэффициент сжатия: отношение радиуса "y" к радиусу "х". По умолчанию его значение соответствует окружности, а его величина зависит от режима. PAINT [STEP](x,y)[,[n][,[m][,k$]]] - закрашивает графические фигуры; STEP - устанавливает режим отсчета координат относительно текущего положения курсора; (x,y) - координаты начала закраски. Если точка внутри фигуры, то закрашивается сама фигура, если точка вне фигуры то закрашивается фон; n - атрибут цвета; m - атрибут цвета для рамки; k$ - параметр строкового типа, указывает шаблон цвета фона. Этот параметр используется для закраски уже окрашенной области экрана. Следует отметить, что данный оператор правильно работает лишь в том случае, когда - закрашиваемая область - замкнута; - координаты (x,y) задают точку внутри окрашиваемой фигуры; - окрашиваемая фигура ограничена рамкой цвета m. VIEW PRINT [n to m ] - устанавливает границы текстового окна вывода, где n - числовое выражение: первая строка текстового вывода; m - числовое выражение: последняя строка текстового вывода; если аргументы отсутствуют, окном является весь экран. POINT (x,y) определяет цвет точки с координатами (x,y). DRAW "выражение" - рисует фигуру на экране в соответствии с содержимым параметра "выражение", заключенного в кавычки. Оператор позволяет достаточно просто рисовать сложные изогнутые траектории с помощью макроопределений (таблица 12). При этом команда перемещения рисует линию от точки последней ссылки к точке с координатами x,y. Числовые аргументы в макрокомандах должны быть константами. Таблица 11. Макроопределения оператора DRAW
LOCATE n, m, i, l, k - используется в текстовом режиме, перемещает курсор на указанную позицию экрана, где n - номер текстовой строки экрана; m - номер позиции в строке; i - двоичное число: делает курсор невидимым при значении "0" и видимым при значении "1"; l, k - начало и конец курсора соответственно, эти параметры управляют размером курсора. по вертикали. В качестве параметров могут быть переменные, арифметические выражения или числа. Все они должны быть целого типа. Любой из этих параметров может быть опущен. Оператор PRINT, следующий за оператором LOCATE, выводит символы на экран, в позиции m строки n. Аналогично оператор INPUT, следующий за оператором LOCATE, запрашивает данные с позиции m, n. ПРИМЕР 15.1. Сформировать окно на экране (40 <= xэкр<= 200, 80 <= <= yэкр <= 125), соответствующее геометрической области (-5 <= x <= 5, -2 <= y <= 2). Пример на использование операторов WINDOW и VIEW. SCREEN 9 'Задание разрешения экрана 640 х 350 REM Задание размеров окна на экране в пикселях VIEW (40, 80)-(200, 125), 3, 7 REM Задание геометрических размеров окна WINDOW (-5, -2)-(5, 2) END В результате выполнения программы на черном экране, слева отобразится прямоугольник бирюзового цвета в белой рамке. ПРИМЕР 15.2. Нарисовать прямоугольник и заштриховать его в клетку. CLS SCREEN 11 'разрешение 640*480 LINE (0, 0)-(250, 250),, B 'рисуется прямоугольник FOR i = 0 TO 250 STEP 10 LINE (i, 0)-(i, 250) 'вертикальные линии LINE (0, i)-(250, i) 'горизонтальные линии NEXT END Пояснения к программе: - горизонтальные линии характерны тем, что координаты по оси Y начальной и конечной точки равны; - вертикальные линии характерны тем, что координаты по оси Х начальной и конечной точки равны; - в том случае, если необходимо чтобы штриховка была под углом 45°, то одинаковыми должны быть разноименные координаты (пример 11.3). ПРИМЕР 15.3. Нарисовать прямоугольник и заштриховать его под углом 45°. CLS SCREEN 11 LINE (0, 0)-(250, 250),, B FOR i = 0 TO 250 STEP 10 LINE (250, i)-(i, 250) ' линии рисуются вправо от диагонали к нижнему углу LINE (0, i)-(i, 0) ' линии рисуются вправо от верхнего правого угла NEXT i END ПРИМЕР 15.4. Сформировать на экране график двух периодов функции sin(x), использовать в программе операторы WINDOW, VIEW, SCREEN, СOLOR, PSET). REM Построение синусоиды SCREEN 9 'Задание разрешения экрана 640 х 350 pi = 3.1415 'Задание числа "пи" COLOR 12 'Задание цвета REM Выделяем часть экрана для построения графика VIEW (20, 50)-(639, 349) REM Установим удобную систему координат WINDOW SCREEN (-2 * pi - 1, 1.1)-(2 * pi + 1, -1.1) REM Формирование синусоиды по точкам FOR i = 0 TO 4 * pi STEP pi / 32000 PSET (i - 2 * pi, SIN(i)) NEXT i END В результате выполнения программы на экран будет выведена синусоида красного цвета. ПРИМЕР 15.5. Нарисовать на экране квадрат и полукруг; фигуры закрасить, используя в программе операторы LINE, CIRCLE и PAINT. CLS 'Очистка экрана SCREEN 9 'задание разрешения экрана 640 х 350 пикселей REM Задание коэффициента, выравнивающего координаты x и y a = 3 / 4 CLS 'Очистка экрана REM Построение квадрата с заданной стороной n в центре экрана n=100 LINE (320 - n/2, 175 - n/2*a)-(320 + n/2, 175 + n/2*a), 1, BF REM Построение полукруга CIRCLE (160, 200), 75, 1, -.0001, -3.14 REM Закраска полукруга PAINT (160, 199), 2, 1 END ПРИМЕР 15.6. Построить семейство разноцветных случайным образом расположенных окружностей. CLS INPUT N 'вводим количество окружностей CLS SCREEN 11 'задание разрешения экрана 640*480 COLOR 2 'устанавливаем цвет переднего плана – зеленый REM Организуем цикл, в котором рисуются N разноцветных окружностей, REM расположенных случайным образом случайного цвета FOR i = 1 TO N X1 = 320 * RND Y1 = 240 * RND C = FIX(15 * RND) CIRCLE(X1, Y1), 15, C NEXT i END ПРИМЕР 15.7. Сформировать на экране текстовое окно с бегущими строками, используя оператор VIEW PRINT. CLS 'Очистка экрана REM Установка границ окна: от 10-ой до 12-ой строки VIEW PRINT 10 TO 15 FOR i% = 1 TO 200 PRINT USING " ###"; i%;'Форматированный вывод чисел от 1 до 99 FOR j = 1 TO 500000: NEXT j 'Цикл задержки NEXT i% END В результате выполнения программы на экране в строках с 10 по 12 побегут числа от 1 до 200. ПРИМЕР 15.8. Нарисовать с помощью оператора DRAW "ключ". SCREEN 11 'Задание разрешения экрана 640 х 350 DRAW "M+25,+25 M+25,-25 M-25,-25 M-25,+25 M-60,+0" DRAW "M+0,+20 M+10,-10 M+10,+10 M-0,-20" END В результате выполнения программы на экране появится графическое изображение ключа. Положение изображения объекта на экране определяется координатами. Изменяя их, получим перемещение объекта. Для того чтобы создать иллюзию непрерывного движения, нужно следовать принципу мультипликации: стереть-нарисовать с достаточно большой частотой. Для улучшения качества изображения и устранения мерцания после рисования объекта необходимо его зафиксировать паузой. Это можно сделать, например, пустым циклом: FOR K=1 TO N: NEXT Значение N подбирается в зависимости от скорости процессора и того эффекта, который хотим получить от выполнения программы. Таким образом, для программирования движение объекта нужно выполнить следующую последовательность действий: 1. стереть прежнее изображение; 2. задать координаты нового изображения; 3. нарисовать новое изображение; 4. задержать пустым циклом; 5. повторить, начиная с первого пункта. ПРИМЕР 15.9. Построить на экране движущуюся фигуру, сформированную оператором DRAW. SCREEN 9 'задание разрешения экрана 640 х 350 FOR i = 1 TO 300 ' цикл движения FOR j = 1 TO 100000: NEXT j 'цикл задержки REM Стирание старой фигуры (цвет - черный) DRAW "c0e5u11f5r11g5d11h5l11" REM Задание новой исходной точки: PSET (173 + i, 177) REM Формирование новой фигуры (цвет - красный) DRAW "c12e5u11f5r11g5d11h5l11" NEXT I END В результате выполнения программы на экране отобразится фигура, движущаяся в горизонтальном направлении. Возможно запрограммировать перемещение объекта по командам с клавиатуры. ПРИМЕР 15.10. Нарисовать фигуру робота, способного перемещаться по четырем направлениям в соответствии с нажатием клавиш управления. SCREEN 12 'задание разрешения экрана 640*480 x = 100: y = 240 'задаем начальные координаты 50 PSET (x, y) REM Рисуем фигуру DRAW "c1r20d10r10d30l10u20d50l10u30d30l10u50d20l10u30r10u10" 100 A$ = INKEY$ 'запрашивается состояние клавиатуры IF A$ = "" THEN GOTO 100 'при отсутствии нажатия запрос повторяется REM в противном случае объект стирается (рисуется черным на черном) DRAW "c0r20d10r10d30l10u20d50l10u30d30l10u50d20l10u30r10u10" REM При нажатии клавиши "u" или "U" движение вверх REM При нажатии клавиши "d" или "D" движение вниз REM При нажатии клавиши "l" или "L движение влево REM При нажатии клавиши "r" или "R" движение вправо IF A$ = "U" OR A$ = "u" AND y > 5 THEN y = y - 5 IF A$ = "D" OR A$ = "d" AND y < 450 THEN y = y + 5 IF A$ = "L" OR A$ = "l" AND x > 5 THEN x = x - 5 IF A$ = "R" OR A$ = "r" AND x < 600 THEN x = x + 5 IF A$ = "E" OR A$ = "e" then end GOTO 50 END ПРИМЕР 15.11. Построить движение круга слева направо до границы экрана. CLS INPUT R 'задание радиуса круга CLS SCREEN 9 'задание разрешения экрана 640 х 350 Y = 175 'круг будет двигаться в средней части экрана FOR X = R TO 640-R STEP 2 ' шаг задает величину смещения по оси Х CIRCLE (X, Y), R, 4 'рисуется круг красного цвета FOR j = 0 TO 100000: NEXT 'цикл задержки CIRCLE (X, Y), R, 0 'рисуется круг черного цвета FOR j = 0 TO 100000: NEXT 'цикл задержки NEXT END Пояснения к программе: - при написании данной программы необходимо учитывать, что при движении слева направо координата X увеличивается, а координата Y не изменяется. ПРИМЕР 15.12. Построить движение секундной стрелки по часовому циферблату. CLS SCREEN 7 'задание разрешения экрана 320 х 200 REM Формируем простой циферблат CIRCLE(160, 100), 75, 9 LINE (160, 40)-(160, 38), 9 LINE (160, 160)-(160, 162), 9 LINE (85, 100)-(87, 100), 9 LINE (235, 100)-(233, 100), 9 X1 = 160 Y1 = 100 REM Организуем два цикла REM Внешний цикл позволяет завершить движение стрелки DO WHILE INKEY$ <> "" REM Внутренний цикл изменяет угол движения стрелки FOR I = 90 TO -270 STEP -6 'шаг задает величину смещения по оси Х RAD = I * 3.141593 / 180 'переводим градусы в радианы X2 = X1 + 60 * COS(RAD) Y2 = Y1 – 60 * SIN(RAD) LINE (X1, Y1)-(X2, Y2), 2 'рисуем стрелку зеленым цветом FOR j = 0 TO 100000: NEXT 'цикл задержки LINE (X1, Y1)-(X2, Y2), 0 'стираем стрелку FOR j = 0 TO 100000: NEXT 'цикл задержки NEXT I LOOP END Пояснения к программе: - для решения данной задачи необходимо воспользоваться параметрическим уравнением окружности: X = X0 + R * COS(a): Y = Y0 – R * SIN(a); - при изменении угла от 0 до 360 конец радиуса вычертит окружность. Секундная стрелка за 60 сек. делает один оборот; следовательно за каждый такт (секунду) она сдвигается на 6 градусов. Лабораторное задание 1. Составить программы работы в графическом режиме согласно варианту Вашего индивидуального задания. 2. В системе QBASIC создать файлы программ. 3. Отладить и выполнить программы. Результат вывести на экран. 4. Составить отчет. Защитить работу. Лабораторная работа состоит из двух задач. Студент выбирает из списка заданий свой индивидуальный вариант и выполняет его. Вариант №1 Задание № 1. Построить совокупность п концентрических окружностей, окрашенных в случайные цвета. Задание № 2. Сформировать точку, движущуюся по отрезку в обоих направлениях. Координаты начала и конца отрезка задаются с клавиатуры. Вариант №2 Задание № 1. Построить совокупность п окружностей, окрашенных в случайные цвета, центры которых лежат на одной горизонтальной прямой. Задание № 2. Сформировать точку, движущуюся по контуру треугольника с заданными размерами и расположением. Вариант №3 Задание № 1. Построить совокупность п отрезков, окрашенных в случайные цвета и расположенных случайным образом. Задание № 2. Сформировать точку, движущуюся по контуру квадрата с заданными размерами и расположением. Вариант №4 Задание № 1. Построить совокупность п отрезков, окрашенных в случайные цвета и расположенных параллельно оси X. Задание № 2. Сформировать точку, движущуюся по контуру окружности заданного радиуса и расположения. Вариант №5 Задание № 1. Построить совокупность п отрезков, окрашенных в случайные цвета и расположенных параллельно оси Y. Задание № 2. Сформировать окружность радиуса r, движущуюся вдоль оси Х в обоих направлениях до границы экрана. Вариант №6 Задание № 1. Построить совокупность n горизонтально расположенных квадратов случайного размера. Задание № 2. Сформировать окружность радиуса r, движущуюся вдоль оси Y в обоих направлениях до границы экрана. Вариант №7 Задание № 1. Построить совокупность n окружностей радиуса r, центры которых равномерно распределены по окружности радиуса r1. Задание № 2. Сформировать движущуюся окружность радиуса r, центр которой перемещается попеременно в обоих направлениях вдоль горизонтального отрезка с заданными границами. Вариант №8 Задание № 1. Построить линейчатую диаграмму по пяти заданным числам. Закрасить ее части в случайные цвета. Задание № 2. Сформировать движущуюся окружность радиуса r, центр которой перемещается попеременно в обоих направлениях вдоль вертикального отрезка с заданными границами. Вариант №9 Задание № 1. Построить совокупность n кругов радиуса r со случайными координатами их центров, закрашенных в случайные цвета. Задание № 2. Сформировать точку, движущуюся по эллиптической траектории с заданными параметрами. Вариант №10 Задание № 1. Построить совокупность n кругов радиуса r, закрашенных в случайные цвета, центры которых расположены на диагонали используемого экрана. Задание № 2. Сформировать круг, закрашенный разными цветами с обеих сторон, вращающийся вокруг горизонтальной оси, расположенной в середине экрана. Вариант №11 Задание № 1. Построить круговую диаграмму по пяти заданным числам. Закрасить ее сектора в случайные цвета. Задание № 2. Сформировать движущийся прямоугольник заданного размера, центр которого перемещается попеременно в обоих направлениях вдоль горизонтального отрезка с заданными границами. Вариант №12 Задание № 1. Построить совокупность n квадратов с общим центром. Задание № 2. Сформировать движущийся прямоугольник заданного размера, центр которого перемещается попеременно в обоих направлениях вдоль вертикального отрезка с заданными границами. Вариант №13 Задание № 1. Построить прямоугольник по заданным координатам вершин и закрасить области, ограниченные диагоналями в случайные цвета. Задание № 2. Сформировать круг, закрашенный разными цветами с обеих сторон, вращающийся вокруг вертикальной оси, расположенной в середине экрана. Вариант №14 Задание № 1. Построить окружность, состоящую из заданного числа дуг случайных цветов. Задание № 2. Сформировать точку, движущуюся по синусоидальной траектории. Вариант №15 Лабораторная работа № 16 Цель работы: 1.Обобщение полученных знаний. 2.Приобретение практических навыков в составлении сложных алгоритмов и программ и их последующей отладке. Лабораторное задание. 1. Составить программы варианту Вашего индивидуального задания. 2. В системе QBASIC создать файлы программ. 3. Отладить и выполнить программы. Результат вывести на экран. 4. Составить отчет. Защитить работу. Лабораторная работа состоит из одной задачи по выбору преподавателя. Задание № 1. Сформировать по числовому заданию времени (часы, минуты) его словесную форму (например. 21:12 –«двадцать один час двенадцать минут»). Задание № 2. Написать программу алгебраического сложения десятичных чисел с плавающей запятой. Исходные числа и результат должны иметь следующую форму: «0.nnnnn*10^mmm». Задание № 3. Дан перечень дат (формат «21 сентября 1982 г.»). Рассортировать эти даты в порядке возрастания. Задание № 4. По заданному слову a$ сформировать и вывести слова, буквы в которых являются всевозможными перестановками букв исходного слова. Задание № 5. Сформировать по числовому заданию даты (число, месяц) ее словесную форму с учетом падежей (например. 21.12 –«двадцать первое декабря»). Задание № 6. Рассортировать слова исходного перечня слов одинаковой длины a$ по убыванию суммы их ASCII-кодов. Задание № 7. Сформировать и вывести таблицу умножения в шестнадцатеричной системе счисления. Вывод осуществить в виде таблицы, на пересечении i–ой строки и j–ого столбца которой располагается результат перемножения 16-ричных цифр «i» и «j». Задание № 8. Сформировать и вывести таблицу умножения в восьмеричной системе счисления. Вывод осуществить в виде таблицы, на пересечении i–ой строки и j–ого столбца которой располагается результат перемножения 8-ричных цифр «i» и «j». Задание № 9. Проанализировать некоторое символьное выражение a$ с входящими в него скобками типа (,), [, ], {, } на правильность расстановки скобок (возможно вложенных). Вывести ответ в форме «верно/неверно». Задание № 10. По заданной фразе a$ сформировать и вывести фразы, слова в которых являются всевозможными перестановками слов исходной фразы. Задание № 11. Написать программу умножения десятичных чисел с плавающей запятой. Исходные числа и результат должны иметь следующую форму: «0.nnnnn*10^mmm». Задание № 12. Дано натуральное число N, выражающее цену товара в копейках (N<1000). Вывести цену товара в рублях и копейках с использованием слов «рубль» и «копейка» с учетом падежа и числа. Задание № 13. Написать программу перевода чисел из десятичной системы счисления в систему счисления с произвольным основанием p. Задание № 14. Написать программу перевода чисел из системы счисления с основанием p в десятичную систему счисления.
* при записи структуры операторов в общем виде квадратные скобки означают необязательность элемента, заключенного в них * По запросу " INPUT" после ввода каждого элемента массива нужно нажать клавишу Enter. ** Оператору "READ" в программе должен сопутствовать оператор "DATA", в котором перечисляются значения всех элементов массива через запятую. *** При использовании функции "RND" рекомендуется предварительно запустить датчик случайных чисел "RANDOMIZE TIMER".
Дата добавления: 2014-12-08; Просмотров: 1604; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |