Муниципальное бюджетное общеобразовательное учреждение Гимназия №2 Машинная графика в среде QBasic Методическое пособие для преподавания программирования в 7-х гимназических классах Разработано: учителем информатики высшей квалификационной категории Ярошевич О.В. г.о. Краснознаменск «Машинная графика в среде QBasic» Методическое пособие учителя Данное методическое пособие ориентировано на учащихся 7-х гимназических классов, прошедших пропедевтический курс по системе А.В. Горячева. Предполагается, что учащиеся знакомы с алгоритмами, правилами их построения; имеют понятие о логических высказываниях и умеют строить цепочки рассуждений; знают такие группы данных в программировании как переменные, массивы. Данное пособие рассчитано на 16 учебных часов (I часть пособия), а также на факультативные занятия с учащимися 7-8 классов для углубленного изучения возможностей графического режима языка программирования QBasic (II часть). 2 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 1 Знакомство с исполнителем PRINT Очень хочется, чтобы программирование с самого начала показалось вам увлекательным и интересным. В этом, я надеюсь, нам поможет печатник PRINT. Он может выводить на экран компьютера (печатать) буквы, цифры или специальные символы. Так. Если вы хотите, чтобы на экране появилось сообщение «Отличная работа!», то для этого достаточно набрать на клавиатуре: PRINT «Отличная работа!» - и нажать клавишу <ввод>. PRINT не только умеет печатать. Он знаком с четырьмя действиями: + операцией сложения; операцией вычитания; операцией умножений; / операцией деления. Наберем на клавиатуре PRINT 10+40, появится ответ 50 PRINT 55-15 40 PRINT 100/5 20 и т.д. А эти действия сначала выполните самостоятельно в тетради, а потом сверьте с ответом, который напечатает PRINT: 10(100-50/(10-5)). Если ответ не сошелся, скорее всего вы ошиблись в порядке выполнения действий. (Ответ: 900). PRINT не только печатает и считает. С его помощью можно рисовать, формируя на экране компьютера графическое изображение из символов, имеющихся на клавиатуре компьютера. До сих пор мы работали так: компьютер получал одно задание и немедленно выполнял его. Это режим немедленного исполнения. Более сложные задания оформляются как программы. Программа – это последовательность инструкций, написанных на специальной алгоритмическом языке, понятном компьютеру. Перед вами текст небольшой программы на Qbasice: PRINT “ *” PRINT “ ***” PRINT “ *****” PRINT “ ***” PRINT “********” PRINT “ ***” PRINT “ ***” Программа состоит из строк, в них записываются операторы (инструкции) – указания ПК выполнить определенные действия. В результате выполнения этой программы на экране рисуется елочка. Домашнее задание С помощью оператора PRINT напишите программу, выводящую на экран рисунки АВТОМОБИЛЬ ВЕРТОЛЕТ. ***************** * * * *** ***** ** **** * *** **** * * ********** * * * * * ********** ВЕРТОЛЕТ **** ** * *** * **** * ************ ************** * ***** *** * * * * ** ** АВТОМОБИЛЬ 3 и «Машинная графика в среде QBasic» Методическое пособие учителя Урок 2 Графические режимы экрана В некотором смысле экран ПК можно сравнить со школьной доской. На ней вы можете писать различные тексты, рисовать картинки, стирать. То же самое можно делать и на компьютерном экране – только выполняется все это посредством операторов QВasic. Существует 2 режима работы экрана – текстовый и графический. Текстовый режим позволяет выводить 80 символов в одной строке и содержит на экране 25 строк (одна – служебная). Этот режим устанавливается автоматически при запуске Бейсика. Для перехода в графический режим используется оператор: SCREEN. Графических режимов несколько, они характеризуются количеством точек (пикселей) по вертикальной и горизонтальной осям экрана. Однако вывод текста в графическом режиме оператором PRINT производится точно так же, как и в текстовом. Выбор графического режима определяется параметром, сопровождающим оператор. Например: SCREEN 2 – содержит 640х200 точек. Начало системы координат находится в верхнем левом углу экрана. (320,100) (0,0) . SCREEN 9 – содержит 640х480 точек. Точка на графическом экране – это наименьший элемент изображения. Каждая точка характеризуется своим цветом. Точки фона по умолчанию имеют черный цвет. Если цвет точки поменять на любой другой, например на белый, она появится на темном экране. Для рисования точки используется оператор PSET. Формат команды: PSET (X,Y), где Х, У- координаты точки. Для рисования картинок нам понадобятся не только точки, но и линии и окружности. Рисование отрезка: LINE (X1,Y1) – (X2,Y2), где Х1, У1 – координаты начала отрезка; Х2, У2 – конца. Рисование прямоугольника: LINE (X1,Y1) – (X2,Y2), цвет, ВF X1,Y1 – координаты верхнего левого угла прямоугольника; X2,Y2 – координаты нижнего правого угла прямоугольника; B (box) - параметр, указывающий на рисование прямоугольника; BF (box full) - параметр, указывающий на рисование закрашенного прямоугольника. Рисование окружности: CIRCLE (X, Y), радиус, цвет Домашнее задание Нарисуйте конверт (в рабочей тетради), состоящий из линий и прямоугольника. Раскрасьте его цветными карандашами. 4 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 3 Работа с цветом Вы можете улучшить изображение объекта, раскрасив его в различные цвета. Однако закрашиваемые цвета должны иметь замкнутый контур. Поможет вам в этом оператор PAINT. PAINT (Х, У), краска, контур где Х, У – координаты любой точки внутри области; краска – номер цвета для закрашивания; контур – номер цвета для контура области. Параметр краска и контур необязательны, любой из них или даже оба могут быть пропущены и это не вызовет сообщения об ошибке. Оператор PAINT работает так: процесс закрашивания начинается в точке с координатами (Х, У) и распространяется по всем направлениям. При этом изменяется цвет каждой точки внутри контура. Каждый цвет (всего 16) пронумерован. Параметры оператора (цвета) могут принимать значения от 0 до 15. если значение краска (контур) > 15, то по умолчанию будет выбрано15 (ярко белый цвет). Любое отрицательное значение воспринимается как ошибочное. Если значение присваивается параметру краска , а параметр контур опущен, то контур будет окрашен цветом краска. Ваш рисунок может состоять из нескольких контуров. Каждую область, ограниченную контуром, нужно раскрашивать отдельно! Например: 1 2 6 3 4 Данный рисунок имеет 6 замкнутых контуров, то есть, чтобы закрасить звезду, команду PAINT необходимо применить 6 раз. 5 Задание Напишите программу, которая изображает на экране окружность. Используя команду PAINT и коды цветов, заполните соответствующую таблицу (см. ниже). Коды и соответствующие цвета Код 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Цвет Черный Синий Зеленый Голубой Красный Пурпурный Коричневый Светло-серый Темно-серый Светло-синий Светло-зеленый Светло-голубой Светло-красный Светло-пурпурный Желтый Ярко-белый Домашнее задание: Напишите программу, выводящую на экран компьютера разноцветный конверт. 5 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 4 Круги и окружности (Практическая работа) Возьмите циркуль. Ножку с иголкой установите неподвижно в центре листа, а другую вращайте вокруг нее. Конец второй ножки опишет замкнутую линию, которая называется окружностью. Закрасьте ее внутреннюю область. Круг – это все, что закрашено. Каждая окружность имеет свой центр и радиус. Центр окружности – это точка, в которой располагалась ножка с иглой. Радиус – отрезок, соединяющий центр окружности и любую ее точку. Радиус не может быть отрицательным. Если в качестве радиуса задано отрицательное значение, Бейсик воспринимает это как ошибку выполнения программы и выводит на экран сообщение: illegal function call (неправильный вызов функции) . Симметрична ли окружность? Покажите ее ось симметрии. Сколько осей симметрии у окружности? Сегодня мы будем рисовать окружности и круги, используя команды CIRCLE и PAINT. Задания 1. Нарисуйте в центре экрана окружность радиуса 50. Она намного вытянута вдоль оси У, не будем обращать на это внимания. Это связано с тем, что цена деления по оси У немного больше, чем по оси Х. Точнее, двум единицам по оси У соответствуют три единицы по оси Х. Итак, считаем что окружность симметрична. 2. Превратите окружность в круг, закрасив ее внутреннюю область командой PAINT. Обратите внимание, цвет заливки должен совпадать с цветом окружности, иначе зальется весь экран! 3. Превратите круг в бублик. 4. Нарисуйте олимпийскую символику – пять переплетенных колец. Домашнее задание Закончите, начатую в классе, программу (в символизирует каждое кольцо и какого оно цвета. 6 тетради). Выясните, что «Машинная графика в среде QBasic» Методическое пособие учителя Урок 5 Метод координат Рисунки, схемы, графики – все это примеры графической информации. А любая информация может быть представлена с помощью чисел, то есть закодирована. Представим, что экран компьютера – координатная плоскость с прямоугольной системой координат. Начало координат, как мы знаем, находится в верхнем левом углу и имеет координаты (0, 0). Каждая точка координатной плоскости имеет свой точный адрес. Это пара чисел: первое число – расстояние от начала координат по оси Х, второе – по оси У. Эти числа называются абсолютные координатами точки. Практическое задание 1 Выполните алгоритм – действия по следующему плану: 1. начертите в рабочей тетради систему координат; 2. нарисуйте в ней по клеточкам какой-нибудь объект, ломаную линию; 3. пронумеруйте все концы отрезков этой ломаной; определите положение каждой точки – ее координаты; то есть закодируйте рисунок; 4. задайте порядок следования точек (маршрут); 5. проверьте, не допущена ли вами ошибка при кодировании; 6. координаты точек и маршрут запишите на отдельном листе; 7. предложите соседу по парте восстановить ваш рисунок по этому коду; 8. сравните результат. Практическое задание 2 Нарисуйте в тетради светофор. Закодируйте изображение. Введите программу в компьютер. SCREEN 12 LINE (300, 50)-(400, 350), 7, BF CIRCLE (350, 100), 45, 4 PAINT (350, 100), 4 CIRCLE (350, 200), 45, 14 PAINT (350, 200), 14 CIRCLE (350, 300), 45, 10 PAINT (350, 300), 10 Программу обязательно сохранить для дальнейшей работы! Домашнее задание Программу, рисующую светофор написать в тетради, снабдив ее комментариями. 7 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 6 Создание паузы Вернемся к нашему светофору. Разве могут у светофора гореть сразу все цвета? Скорее всего мы назовем такой светофор испорченным, и не миновать на перекрестке аварии, если такое произойдет со светофором. Обычно светофор горит зеленым, через некоторое время зажигается красным (зеленый в это время гаснет), затем желтый и снова зеленый. Разработаем алгоритм: 1. рисуем светофор (прямоугольник); 2. рисуем три круга, верхний и средний закрашиваем черным цветом, нижний – зеленым; 3. закрашиваем верхний круг красным, а нижний – черным; 4. закрашиваем средний круг желтым, а верхний – черным; 5. перекрашиваем нижний круг в зеленый, а средний в черный. Загрузите в КП свою программу, созданную на прошлом уроке, и внесите изменения. Выполнив все эти действия и запустив программу на выполнение, нужного эффекта мы не добьемся. Как вы думаете, почему? ПК работает так быстро, что наши глаза не могут успеть за быстрой сменой картинок. Перед тем, как очередной раз перекрасить светофор, необходимо сделать паузу, или другими словами, временную задержку. Задержку в воспроизведении можно сделать с помощью «пустого цикла» ( т.е. цикл, не имеющий тела). FOR N=1 TO 1000 NEXT Повторять для N от 1 до 1000 Конец Значение N (параметра цикла) будет меняться и на это будет уходить какое-то время. На экране в это время при выполнении программы ничего происходит не будет, и мы увидим, как постепенно круги светофора будут менять цвета. Чем больше верхняя граница диапазона (у нас 1000), тем дольше продлится задержка. Чем мощнее физические параметры ПК, тем быстрее он работает, значит количество повторений цикла необходимо увеличить (взять, например не 1000, 5000). Итак: рисуем три круга, верхний и средний закрашиваем черным цветом, нижний – зеленым; создаем паузу; закрашиваем верхний круг красным, а нижний – черным; создаем паузу; закрашиваем средний круг желтым, а верхний – черным; создаем паузу; перекрашиваем нижний круг в зеленый, а средний в черный. Мы добились эффекта анимации, то есть перед нами во времени разворачиваются различные графические изображения. Домашние задание Напишите программу, которая рисует дом с зажигающимися в нем окнами. 8 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 7 Построение дуг Окружность можно делить на части. Часть окружности называется дугой. Бывают ситуации, когда нам надо построить не всю окружность, а только некоторую ее часть. Для этого после параметра цвет в операторе CIRCLE должны быть указаны еще два параметра F1 и F2 – углы, определяющие дугу окружности. Заметим. Что эти два параметра используются только в паре и выражаются в радианах. Постройте в тетради небольшую окружность. Через ее центр проведите две взаимно перпендикулярные прямые. Отметьте точки О, А, В, С, D. Наша окружность разбита на несколько дуг: АВ, АС и В т.д. Сколько всего дуг можно найти на чертеже? Назовите их. F2 Положение каждой дуги на этой окружности F1 однозначно определяется так называемыми начальной и конечной точками – величинами F1 и F2 соответственно. О А Углы отсчитываются по часовой стрелке от положительного C направления оси ОХ. Эти углы измеряются в радианах. 180 градусам соответствует = 3,1415 («пи») радиан. Полная D окружность содержит 360 градусов или 2 радиан. Радиан – это единица измерения углов, которую можно определить так: один радиан – это угол, вырезающий на окружности дугу, длина которой равна радиусу этой окружности, это 57, 28835 градусов. 2 радиана CIRCLE (100, 100),50, 4, 0, 2 где 0=2* (радиан), (3600 =00); 2=2*/3 (радиан), (2*180/3) 0 радиан 2 радиана CIRCLE (100, 100),50, 4, 2, 0 0 радиан Домашняя работа 1. Сколько радиан содержится в 450, 300, в 600? 2. Как выразить в радианах величину любого угла, измеренного в радианах? 3. Расшифруйте в тетради следующий табличный алгоритм: N 1 2 3 4 5 6 7 8 Фигура Дуга Дуга Отрезок Дуга Дуга Окружность Окружность Отрезок Координата Х Координата У 300 150 310 130 (295, 130) – (325, 130) 250 180 245 230 350 150 340 140 (250, 150) – (350, 150) (Ответ: мышка) 9 Радиус Начало дуги Конец дуги 50 15 0 0 3 3 30 20 3 4 1.5 4.5 - 4.5 1.5 - «Машинная графика в среде QBasic» Методическое пособие учителя Урок 8 Окружности и эллипсы (Практическая работа) Если окружность «вытянута» по вертикали или горизонтали, то более правильно ее называть эллипсом. Используя известную нам команду CIRCLE можно изобразить эллипс, если добавить параметр – коэффициент искажения. Приведем полную форму оператора CIRCLE: CIRCLE (X, Y), R, [C,] [F1,] [F2] [K] где К – коэффициент искажения. Все параметры, взятые в квадратные скобки, не являются обязательными и в случае их отсутствия принимаются по умолчанию за 8, 0, 2*, 1 соответственно. Если вы опускаете какой-либо необязательный параметр, а после него в списке параметров еще что-то есть, то необходимо в записи оператора сохранить соответствующее количество запятых. Например, оператор: CIRCLE (Х, У), R, , , , 1 выводит на экран окружность радиуса R Если К< 1 – эллипс вытянут по оси Х Если К> 1 – эллипс вытянут по оси Y Задание Напишите программу, рисующую на экране компьютера арбуз. Домашнее задание Оформить в тетради программу, рисующую АРБУЗ. 10 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 9 Построение секторов Начертим окружность. Проведем два радиуса ОА и ОВ. Таким образом мы разделим круг на две части, каждая из которых называется круговым сектором. С помощью оператора изображения окружностей на экране компьютера очень легко строить такие сектора. Для этого достаточно ставить знак «» перед параметрами F1 и F2: CIRCLE (X, Y), R, [C], -F1, -F2 А Например, чтобы построить верхний полукруг, можно воспользоваться следующей командой: CIRCLE (X, Y), 8, [C], -6.28, -3.14 Чтобы построить нижний полукруг, можно воспользоваться следующей командой: CIRCLE (X, Y), 8, [C], -3.14, -6.28 Практические задание Построим круговую диаграмму (круг, разделенный на секторы различной площади, которые графически иллюстрируют соотношения между показателями, измеряемыми в одинаковых единицах). Допустим, из 27 учащихся класса, за контрольную работу 9 человек получили оценку «5», 15 – «4», 3 –«3». Построим круговую диаграмму распределения оценок контрольной работы. Прежде всего найдем, какую часть всех учащихся составляют те, кто получил «5», «4», «3» соответственно: «5» - 9/27=1/3 «4» - 15/27=5/9 «3» - 3/27=1/9 Пусть круг изображает число всех учащихся класса. Тогда количество «5», будет изображать сектор, угол которого равен 2**1/3 радианам. Если допустить, что =3, то угол сектора равен 2 радианам. Первый сектор будем строить с 1 радиана (F1=-1) до 3 (F2=-(1+2)). Программа будет иметь следующий вид: SCREEN 12 CIRCLE (100, 100), 50, 10, -1, -(1 + 2) PAINT (100, 99), 10 CIRCLE (100, 100), 50, 12, -3, -6.2 PAINT (100, 101), 12 CIRCLE (100, 100), 50, 9, -6.2, -1 PAINT (102, 99), 9 Домашнее задание Постройте круговую диаграмму, изображающую количество мальчиков и девочек вашего класса. 11 В «Машинная графика в среде QBasic» Методическое пособие учителя Урок 10 Оператор машинной графики DRAW Теперь мы попробуем рисовать картинки с помощью ломаных линий – множества отрезков, соединенных своими концами. Поможет нам в этом оператор DRAW. С помощью этого оператора можно перемещаться по экрану не рисуя. А можно оставлять след, то есть рисовать. Точку, координаты которой задавались последней, будем называть текущей. DRAW прочертит отрезок от текущей точки до точки с координатами (Х, У), и уже эту точку будет считать текущей. Оператор DRAW имеет в своем распоряжении множество различных команд, каждая из которых, выполняют определенные действия. Сегодня мы познакомимся с некоторыми из этих команд. Общая форма оператора: DRAW <командная строка> где командная строка – последовательность команд, записанных через пробел или «;». Знак «;» в конке командной строки ставиться всегда. Если использовать команду ВМ Х, У (Х, У – координаты точки, куда DRAW переместиться), то DRAW «прыгнет» в точку с указанным адресов и ничего на экране не произойдет. Чтобы оставить след, необходимо задать команду М Х, У. DRAW может двигаться вправо, влево, вверх и вниз. Это перемещение будет относительное (относительно текущей точки). Вверх – U (Up); Вниз – D (Down); Влево – L (Left); Вправо – R (Right). Эти буквы задают направление. Число шагов, которое необходимо выполнить в заданном направлении, указывается после соответствующей буквы. Задание 1 Определите, что получится, если DRAW выполнит следующую командную строку: «ВМ40, 40 D10 R10 U20 L20 D30 R30 U40 L40” Для решения используйте тетрадь (1 клетка = 10 шагам) (Ответ: спираль) Задание 2 (Диктант) подготовьте в тетради координатную плоскость (1 клетка=10шагов) и следуйте моим указаниям: BM50,100 R20 U20 R50 D10 L10 D10 R20 U40 R10 U20 L10 D10 L60 U30 L10 D10 L20 D30 R20 D30 L10 D10 (Должен получиться ЩЕНОК) Домашнее задание Написать программу, рисующую ЕЛКУ. 12 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 11 Художник DRAW. Движение под углом 450 (Практическая работа) DRAW может двигаться не только вправо, влево, вверх и вниз. Он может рисовать и под углом 45 градусов. Для этого используются следующие команды: в правый верхний угол – Е H Е G F в правый нижний угол – F в левый нижний угол – G в левый верхний угол – Н Оператор может не только шагать на заданное количество шагов в указанном направлении, он может «прыгать» в заданном направлении. Для этого , перед буквой, задающей направление, надо ставить букву В. Практическое задание Напишите программу, выводящую на экран цифры почтового индекса. Используйте все изученные команды. Домашнее задание Написать программу (в тетради), которая рисует СНЕЖИНКУ. 13 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 12 Оператор присваивания Предположим. Вы хотите что-то сохранить. Куда вы это положите? Может быть в ящик стола7 своеобразные ящики для хранения информации есть и у компьютера. Это переменные. На каждый ящик (место в памяти компьютера0, в котором мы будем хранить информацию, необходимо навесить ярлык – присвоить переменной имя. В Бейсике имя переменной обязательно начинается с английской буквы, за ней может идти буква или цифра, например: А1, АВ2 и т.д. то, что хранится в переменной называется значением переменной. Переменные, в которой содержатся только цифры, называется числовой, переменные, в которых находится «ассорти» из символов – букв, цифр и прочих знаков называются текстовыми или строковыми. Их имена всегда оканчиваются знаком «$». Например: А$= «Я тебя люблю» В2$= «2+2=4» В2 = 2 Значение текстовой переменной записывается в кавычках. В этих примерах мы увидели не только значения и имена переменных, но и познакомились с оператором присваивания. Например, мы переменной А$ присвоили значение строки «Я тебя люблю», а переменной В2 значение 2. в правой части оператора присваивания может быть не только значение, а и более сложное выражение из значений или переменных. Например: А1=А1+1 С точки зрения математики – это ошибочная запись, а с точки зрения информатики – все верно. И звучит это так: переменной с именем А1 мы присваиваем ее предыдущее значение, увеличенное на единицу. (не надо путать математический знак «=» с оператором присваивания, который в своей записи использует этот знак). Теперь, на конкретном примере, посмотрим, как облегчается процесс составления программ, используя переменные и операторы присваивания. Задание Выполните в тетради следующую командную строку: “BM50, 50 R20 D40 R10 U40 R20 D40 R10 U40 R20 D40 R10 U40” Получилась ЗМЕЙКА. Внимательно посмотрите на рисунок, какой эго фрагмент повторяется несколько раз? Выберем в командной строке запись, соответствующую этому фрагменту: «R20 D40 R10 U40» Введем обозначение: А$ = «R20 D40 R10 U40» A$ - переменная текстового типа. Она является подстрокой командной строки оператора DRAW. Выполним на ПК следующую программу: SCREEN 12 A$ = «R20 D40 R10 U40» DRAW «ВМ50, 50» + A$ +А$ + A$ END На экране та же ЗМЕЙКА. Программа стала гораздо короче. Причем, чтобы удлинить ЗМЕЙКУ, достаточно прибавить еще насколько подстрок А$. Домашнее задание Напишите программу, рисующую ЗМЕЙКУ, используя команду включения подстроки. 14 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 13 Масштабирование Мы умеем перемещаться в различных направлениях плоскости, умеем рисовать картинки из отрезков (с помощью оператора DRAW). Сегодня научимся увеличивать (уменьшать) наши картинки. Рассмотрим командную строку: А$ = “R50 D50 L50 U50 E20 R50 G20 D50 E20 U50” Выполните данную последовательность команд в тетради. У вас должно получиться изображение известного геометрического тела – куба. Задание Напишите командную строку, с помощью которой можно получить изображение трех таких кубов на экране ПК. Используйте команду включения подстроки. Подсказка: DRAW «ВМ50, 50» + A$ + «ВМ150, 50» +A$ + «ВМ250, 50» + А$ Оператор DRAW может по нашему желанию изменять размеры навих рисунков, другими словами – масштабировать. Он выполняет операции умножения и деления над числами, стоящими после команд E, R, U, L и т.д. для этого необходимо задать команду – S<число>. Если команды S нет DRAW по умолчанию делит все числа на 4, а потом умножает на 4. если задать команду S, DRAW разделит на 4 , а умножит на то число, которое будет стоять после команды S. Несложные расчеты показывают, как с помощью команды масштабирования можно изменить длину стороны нашего куба (пусть сторона = 40 единиц). S1 40/4*1 = 10 (уменьшение в 4 раза); S2 40/4*2 = 20 (уменьшение в два раза); S4 40/4*4 = 40 (размеры не изменяются); S8 40/4*8 = 80 (увеличение в 2 раза); S12 40/4*12 = 120. С командой масштабирования нужно обращаться осторожно. Дело в том, что команда DRAW запоминает число, стоящее после команды S и использует его до тех пор, пока не встретит новое. Практическое задание Нарисуйте три куба, каждый из которых в 2 раза меньше предыдущего. Домашнее задание Напишите программу, рисующую 2 куба, со сторонами 10 и 20 единиц соответственно. 15 «Машинная графика в среде QBasic» Методическое пособие учителя Уроки 14-15 Дополнительные возможности оператора DRAW (Практическая работа на 2 урока) Вспомним все известные нам команды оператора DRAW, оформив их в виде следующей таблицы: № Команда Описание 1 Un Вверх на n 2 Dn Вниз на n 3 Ln Влево на n 4 Rn Вправо на n 5 En В верхний правый угол на n 6 Fn В нижний правый угол на n 7 Gn В нижний левый угол на n 8 Нn В верхний левый угол на n 9 B Двигаться, но не рисовать («прыгать») 10 Sn Установка коэффициента масштабирования 11 M x, y Движение из текущей точки в точку с координатами (х,у) 12 + Включение подстроки Новая команда: 13 Сn Установка цвета рисования n Практическое задание С помощью команд 1-13 выведите на экран ПК рисунок СЕМЬЯ, представляющий собой три однотипные фигуры разных размеров и цветов. Помните, что действие текущей команды масштабирования S отменяется только новой командой S. Обратите внимание, что фигуры симметричные (по средней вертикальной линии). Домашнее задание Закончить программу, начатую в классе (оформить в рабочей тетради, снабдив комментариями). 16 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 16 Эффект мультипликации Освоив методы рисования различных изображений, вы можете попробовать добиться эффекта мультипликации: создавать многократные копии изображения или двигать графическую картинку. Это достаточно просто. Для этого вам понадобятся операторы GET и PUT. Первый дает возможность сохранить любую прямоугольную область экрана в числовом массиве, второй воспроизводит изображение в произвольном месте экрана. Общая форма этих операторов выглядит следующим образом: GET [STEP] (x1!, y1!) – [STEP] (x2!, y2!), имя PUT [STEP] (x1!, y1!) – [STEP] (x2!, y2!), имя, режим где STEP – задает форму графических координат; (х1!, у1!) – координаты верхней левой точки изображения, сохраняемого оператором GET или точка на экране, в которую оператор PUT помешает это изображение; (х2!, у2!) – координаты нижней правой точки сохраняемого изображения; имя – имя массива, в котором сохраняется изображение; режим – ключевое слово, определяющее режим воспроизведения: AND – объединение сохраненного изображения с существующим; OR – наложение сохраненного изображения на существующее; PSET – рисование сохраненного изображения, уничтожая существующее; PRSET – рисование сохраненного изображения цветом фона, уничтожая существующее; XOR - рисование сохраненного изображения, уничтожая существующее, воспроизводя эффект анимации. Если параметр режим отсутствует, по умолчанию используется XOR. Задание На примере готовой программы посмотрим, как работают операторы GET, PUT: SCREEN 12 DIM box%(1000) DRAW “BM10, 10 D10 U5 L10 R5 E5 G10 E5 F5 H10” ‘(снежинка) GET (5, 5)-(20, 20), box% DO x! = RND * 600 y! = RND * 420 PUT (x!, y!), box%, OR FOR K = 1 TO 1000 NEXT PUT (x!, y!), box%, РЕЖИМ LOOP WHILE INKEY$ = "" ‘выход из цикла при нажатии любой клавиши РЕЖИМ подберите самостоятельно! Домашнее задание Придумайте свою снежинку (как заготовку для дальнейшего воспроизведения оператором PUT). 17 «Машинная графика в среде QBasic» Методическое пособие учителя Урок 17 (дополнительный) Звуковые эффекты Оператор BEEP Оператор SOUND Оператор PLAY s1$ = "msmbt240aeae" s11$ = "msmbag#g#p4" s2$ = "msmbg#eg#eg#ap2" s3$ = "msmbaeaeag#g#" s33$ = "msmbp4g#eg#eg#ap2" s$ = "cdefgab" s1$ = "msmb t500 o2 gg l2g l4gg l2g " s11$ = "o2t500l4 gadgl2g" 18 «Машинная графика в среде QBasic» Методическое пособие учителя ПРИЛОЖЕНИЕ Программа «Мышка» SCREEN 12 CIRCLE (300, 150), 50, 7, 0, 3.14 CIRCLE (310, 130), 15, 7, 0, 3 LINE (295, 130)-(325, 130), 7 CIRCLE (250, 180), 30, 7, 1.5, 4.5 CIRCLE (245, 230), 20, 7, 4.5, 1.5 CIRCLE (350, 150), 3, 7 CIRCLE (340, 140), 4, 7 LINE (250, 150)-(350, 150), 7 END Программа «Падающая палка» SCREEN 12 FOR I=1 TO 20 LINE (100, 100 + 4*I) – (400, 100 + 4*I) FOR K=1 TO 1000 NEXT LINE (100, 100 + 4*I) – (400, 100 + 4*I),0 NEXT END Программа «Мигающие круги» SCREEN 12 FOR I=1 TO 10 CIRCLE (100, 100), I*10,I PAINT (100, 100), I FOR K=1 TO 1000 NEXT CIRCLE (100, 100), I*10,0 PAINT (100, 100),0 NEXT END Программа «Движение колеса по горизонтали» SCREEN 12 FOR I=1 TO 100 CIRCLE (50 + I*4, 200), 50,4 FOR K=1 TO 1000 NEXT FOR K=1 TO 1000 NEXT CIRCLE (50 + I*4, 200), 50,0 NEXT END 19 «Машинная графика в среде QBasic» Методическое пособие учителя Программа «Новогодняя елка» SCREEN 12 cc = 2 FOR Y = 10 TO 350 STEP 1.9 CIRCLE (300, 50 + Y), INT(Y / 10) * 4, 8, 3.14, 6.28, .3 NEXT FOR i = 1 TO 50000 NEXT vv = 1 DO IF vv = 1 THEN vv = 2 FOR Y = 350 TO 10 STEP -1.9 CIRCLE (300, 50 + Y), INT(Y / 10) * 4, cc, 3.14, 6.28, .3 FOR g = 1 TO 2000 NEXT NEXT ELSE vv = 1 FOR Y = 10 TO 350 STEP 1.9 CIRCLE (300, 50 + Y), INT(Y / 10) * 4, cc, 3.14, 6.28, .3 FOR g = 1 TO 2000 NEXT NEXT END IF IF cc = 10 THEN cc = 2 '¥«ª ᢥ⫠ï kl = 8 FOR Y = 10 TO 350 STEP 4 kl = kl + 1 IF kl > 14 THEN kl = 8 CIRCLE (300, 50 + Y), INT(Y / 10) * 4, kl, 3.14, 6.28, .3 FOR g = 1 TO 3000 NEXT NEXT FOR Y = 10 TO 350 STEP 1.2 CIRCLE (300, 50 + Y), INT(Y / 10) * 4, 10, 3.14, 6.28, .3 FOR g = 1 TO 2000 NEXT NEXT FOR Y = 10 TO 350 STEP 1 CIRCLE (300, 50 + Y), INT(Y / 10) * 4, 0, 3.14, 6.28, .3 FOR g = 1 TO 800 NEXT NEXT ELSE '¥«ª ⥬- ï cc = 10 'ᢥ⫮-§¥«¥-ë© ¡ã¤¥â FOR x = 435 TO 160 STEP -1 FOR Y = 470 TO 10 STEP -1 IF POINT(x, Y) <> 0 THEN IF POINT(x, Y) = 14 THEN PSET (x, Y), 13 IF POINT(x - 1, Y) = POINT(x, Y) AND POINT(x, Y - 1) = POINT(x, Y) THEN PSET (x, Y), 13 END IF NEXT NEXT FOR x = 160 TO 435 STEP 1 FOR Y = 10 TO 470 STEP 1 IF POINT(x, Y) <> 0 THEN 20 «Машинная графика в среде QBasic» Методическое пособие учителя IF POINT(x, Y) = 13 THEN PSET (x, Y), 14 IF POINT(x - 1, Y) = POINT(x, Y) AND POINT(x, Y - 1) = POINT(x, Y) THEN PSET (x, Y), 14 END IF NEXT NEXT END IF LOOP WHILE INKEY$ = "" 21 «Машинная графика в среде QBasic» Методическое пособие учителя Программа «Новогодняя елка» SCREEN 12 s1$ = "msmbt240aeae" s11$ = "msmbag#g#p4" s2$ = "msmbg#eg#eg#ap2" s3$ = "msmbaeaeag#g#" s33$ = "msmbp4g#eg#eg#ap2" s$ = "cdefgab" s1$ = "msmb t500 o2 gg l2g l4gg l2g " s11$ = "o2t500l4 gadgl2g" ii = 1 PLAY "l7" LINE (320, 30)-(260, 70), 2 LINE (260, 70)-(380, 70), 2 LINE (380, 70)-(320, 30), 2 PAINT (330, 40), 2 LINE (310, 70)-(230, 120), 2 LINE (230, 120)-(410, 120), 2 LINE (410, 120)-(330, 70), 2 PAINT (330, 75), 2 LINE (300, 120)-(200, 180), 2 LINE (200, 180)-(440, 180), 2 LINE (440, 180)-(340, 120), 2 PAINT (340, 125), 2 LINE (280, 180)-(360, LINE (280, 180)-(170, LINE (170, 250)-(470, LINE (470, 250)-(360, PAINT (280, 185), 2 180), 250), 250), 180), 2 2 2 2 LINE (130, 380)-(500, 380), 2 LINE (130, 380)-(240, 250), 2 LINE (500, 380)-(400, 250), 2 PAINT (400, 300), 2 DRAW "bm 10,10 c15 d10 u5 r5 l10 r5 e5 g10 e5 f5 h10" DIM box%(1000) GET (5, 5)-(20, 20), box% ii = 0 i = 0 DO i = i + 1 ii = ii + 1 22 «Машинная графика в среде QBasic» Методическое пособие учителя IF i > 15 THEN i = 1 IF ii > 2 THEN ii = 1 xx = 4 FOR aa = 1 TO 40 IF xx = 4 THEN xx = 15 ELSE xx = 4 END IF CIRCLE (320, 17), 15, xx PAINT (320, 17), xx FOR a = 1 TO 2 x! = RND * 600 y! = RND * 450 PUT (x!, y!), box%, OR FOR xx = 1 TO 1000 NEXT NEXT NEXT PLAY "o" + STR$(ii * 2) PLAY "x" + VARPTR$(s1$) CIRCLE (320, 17), 15, 12 PAINT (320, 17), 12 FOR g = 1 TO 13 CIRCLE (330, 60), 10, g PAINT (330, 60), g FOR v = 1 TO 1000 NEXT NEXT FOR a = 1 TO 20 x! = RND * 600 y! = RND * 450 PUT (x!, y!), box% FOR xx = 1 TO 1000 NEXT NEXT PLAY "o" + STR$(ii * 2) PLAY "x" + VARPTR$(s11$) CIRCLE (360, 240), 10, i - 1 PAINT (360, 240), i - 1 CIRCLE (300, 210), 10, i + 3 PAINT (300, 210), i + 3 j = 1 FOR jj = 1 TO 40 j = j + 1 IF j > 14 THEN j = 1 CIRCLE (250, 330), 10, j PAINT (250, 330), j FOR r = 1 TO 1000 NEXT NEXT PLAY "g#p4g#eg#eg#ap2" FOR a = 1 TO 20 x! = RND * 600 y! = RND * 450 PUT (x!, y!), box% FOR xx = 1 TO 1000 NEXT NEXT PLAY "o" + STR$(ii * 2) PLAY "x" + VARPTR$(s2$) FOR jj = 1 TO 40 j = j + 1 IF j > 14 THEN j = 1 23 «Машинная графика в среде QBasic» Методическое пособие учителя CIRCLE (270, 170), 10, j PAINT (270, 170), j FOR r = 1 TO 1000 NEXT NEXT CIRCLE (337, 150), 10, i PAINT (337, 150), i CIRCLE (345, 310), 10, i + 2 PAINT (345, 310), i + 2 CIRCLE (350, 110), 10, i + 1 PAINT (350, 110), i + 1 FOR jj = 1 TO 40 j = j + 1 IF j > 14 THEN j = 1 CIRCLE (240, 128), 10, j PAINT (240, 128), j FOR r = 1 TO 1000 NEXT NEXT CIRCLE (240, 128), 10, i + 11 PAINT (240, 128), i + 11 FOR a = 1 TO 20 x! = RND * 600 y! = RND * 450 PUT (x!, y!), box% FOR xx = 1 TO 1000 NEXT NEXT PLAY "o" + STR$(ii * 2) PLAY "x" + VARPTR$(s3$) CIRCLE (270, 78), 10, i + 4 PAINT (270, 78), i + 4 CIRCLE (393, 128), 10, i PAINT (393, 128), i CIRCLE (370, 78), 10, i + 1 PAINT (370, 78), i + 1 CIRCLE (310, 100), 10, i PAINT (310, 100), i CIRCLE (400, 207), 10, i PAINT (400, 207), i CIRCLE (440, 340), 10, i + 3 PAINT (440, 340), i + 3 FOR a = 1 TO 20 x! = RND * 600 y! = RND * 450 PUT (x!, y!), box% FOR xx = 1 TO 1000 NEXT NEXT PLAY "o" + STR$(ii * 2) PLAY "x" + VARPTR$(s33$) LOOP WHILE INKEY$ = "" PLAY "l40" FOR j = 0 TO 2 PLAY "o" + STR$(j * 2) PLAY "x" + VARPTR$(s$) NEXT END 24