Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Графические построения



При построении графических изображений Вы использовали только одну из известных Вам алгоритмических структур (СЛЕДОВАНИЕ). Освоение других структур позволяет использовать их для получения сложных графических изображений.

Рассматривая некоторое изображение в виде совокупности одноименных объектов (точек, отрезков и т.д.), можно прийти к пониманию возможности использования для получения всего изображения алгоритмической структуры ПОВТОРЕНИЕ.

Примеры программ:

Пример 1. Получение изображения отрезка прямой. Пусть требуется получить изображение горизонтального отрезка с началом в точке (0, 240). Будем рассматривать отрезок как совокупность точек, и использовать для получения изображения отрезка процедуру PutPixel. Поместим ее в тело цикла с параметром For. Таким образом получим изображение 640 точек с координатами (k, 240) при k=0, 1, 2, 3, …, 639; в результате соседние пиксели сольются в горизонтальный отрезок. Program PUT_LINE; Uses Graph; Var a, b, k: Integer; Begin a:=Detect; InitGraph (a, b, ''); {горизонтальная прямая} For k:=0 To 639 do PutPixel (k, 240, 14); {14 – желтый цвет} Readln; CloseGraph End.
Пример 2. Получение изображения семи параллельных отрезков равной длины. 0 100 500 639     Требуемое изображение можно рассматривать как совокупность отрезков. Концы отрезков: (100, y), (500, y), где y =50; 90; …; 290; значение y изменяется с шагом 40. Таким образом, можно организовать цикл While с условием выполнения цикла y ≤ 290. В цикле будем использовать процедуру вывода отрезка прямой и изменение значения y на 40 (величину шага). Эта идея реализована в программе LINE7_1 (метод 1). Возможно также использование цикла с параметром For, где параметр цикла (например, переменная k) указывает количество полученных изображений отрезка: k = 1, 2, …, 7. Тело цикла имеет такой же вид, как и в методе 1. Данная идея реализована в программе LINE7_2. Program LINE7_1; {метод 1} Uses Graph; Var a, b, y: Integer; Begin a:=Detect; InitGraph (a, b, ''); y:=50; While y<=290 Do Begin Line (100, y, 500, y); y:=y+40 End; Readln; CloseGraph End.
Program LINE7_2; {метод 2} Uses Graph; Var a, b, k, y: Integer; Begin a:=Detect; InitGraph (a, b, ''); y:=50; For k:=1 to 7 do Begin Line (100, y, 500, y); y:=y+40 End; Readln; CloseGraph End.
Пример 3. Использование счетчика случайных чисел позволяет получать случайно расположенные на экране изображения. Покажем это на примере программы вывода на экран заданного количества случайно расположенных точек: 1) программа предлагает ввести количество требуемых точек (N); 2) случайным образом формирует координаты точки 0 ≤ x ≤ 639, 0 ≤ y ≤ 479 и цвет точки 1 ≤ C ≤ 15; 3) изображает точку на экране, замедляя на миллисекунды процесс перехода к получению изображения следующей точки (регулирует скорость рисования). Переменная k – параметр цикла (счетчик), целочисленная переменная, которая используется для подсчета количества выводимых точек. Program STARS; {Звездное небо} Uses Crt, Graph; Var a, b, N, k, x, y, C: Integer; Begin ClrScr; Write ('Количество точек='); Readln (N); Randomize; a:=Detect; InitGraph (a, b, ''); For k:=1 To N do Begin x:= Random (640); y:= Random (480); C:= Random (15)+1; PutPixel (x, y, C); Delay (1000) End; Readln; CloseGraph End.
Пример 4. Программа закраски прямоугольника различными цветами: смена цвета должна осуществляться после нажатия на клавишу “Enter”. Пример основан на выполнении многократных действий: получение изображения прямоугольника, заполненного некоторым цветом. Пусть i – номер цвета заполнения; i = 0, 1, 2, …, 15. Таким образом, уместно использование цикла For. В цикле следует задать стиль заполнения области (1 – сплошной текущий цвет) и изобразить закрашенный прямоугольник, например, с диагональными точками (220, 200), (450, 300). Program BAR_16; Uses Graph; Var a, b, i: Integer; Begin a:=Detect; InitGraph (a, b, ''); For i:=0 To 15 do Begin SetFillStyle (1, i); Bar (220, 200, 450, 300); Readln End; CloseGraph End.

Возможность выбора построения того или иного изображения, представленная в алгоритме (и соответственно, в программе) в виде некоторой вариативности, обеспечивается использованием алгоритмической структуры ВЕТВЛЕНИЕ.

Примеры программ:

Пример 5. Написать программу, которая по желанию пользователя выведет на экран изображение треугольника или прямоугольника.
Пусть Р – переменная, по значению которой пользователь будет принимать решение о выводе требуемого изображения: треугольника (при Р = 1) или прямоугольника (при Р ≠ 1). 0 180 240 320 400 480 639     Будем получать изображение треугольника с вершинами в точках (240, 70), (400, 370), (180, 300), а прямоугольника – в диагональных точках (240, 70) и (480, 300). Program TRE_PR; Uses Graph; Var a, b: Integer; P: Byte; Begin Writeln ('Сделайте выбор:'); Writeln ('1 - треугольник'); Writeln ('не 1 - прямоугольник'); Readln (P); a:=Detect; InitGraph (a, b, ''); If P=1 Then Begin Line (240, 70, 400, 370); Line (400, 370, 180, 300); Line (180, 300, 240, 70) End Else Rectangle (240,70,480,300); Readln; CloseGraph End.

1. Напишите программы получения изображений:

1) десяти параллельных вертикальных отрезков равной длины; 2) шахматной доски;

3) пешеходного перехода; 4) случайного количества случайно расположенных окружностей (треугольников, отрезков).

2. С клавиатуры задаются значения двух переменных. Если они равны, выведите на экран изображение равнобедренного, иначе – разностороннего треугольника.

3. С клавиатуры задаются значения длин сторон параллелограмма. Если они равны, выведите на экран изображение квадрата, иначе – прямоугольника.

4. Напишите программу закраски произвольного треугольника различными цветами (смена цвета должна осуществляться после нажатия на клавишу “Enter”).

* 5. Напишите программу, которая по желанию пользователя выведет на экран изображение равнобедренного, равностороннего или разностороннего треугольника, квадрата, прямоугольника, параллелограмма или ромба.





Дата публикования: 2014-12-08; Прочитано: 395 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...