Примеры задач
Графика
Написать программу для рисования треугольника. На её основе создать процедуру рисования ёлки с заданным количеством ярусов. Используя эту процедуру, написать программу, которая рисует лес из ёлок со случайным количеством ярусов. Организовать движение ёжика между ёлок. Методика решения
Для начала создаём программу, которая с помощью процедур moveto и lineto рисует треугольник. Затем создаем процедуру, которая из этих треугольников составляет ёлку. Входными параметрами процедуры будут координаты экрана, в которых рисуется ёлка и количество ярусов ёлки. В основной программе инициализируем графический режим. Вызываем несколько раз процедуру для рисования ёлки в разных местах экрана и со случайным количеством ярусов. Рисуем ёжика. Для того чтобы организовать его движение мы делаем задержку экрана Delay(3000) , закрашиваем ежа в цвет фона, меняем координаты ёжика рисуем его с новыми координатами и снова делаем задержку, повторяем эти действия пока пользователь не нажмёт клавишу.
Program ex8_3; Uses graph ,crt ; Var gd,gm,x,y,yarys,g,n,dx,dy: integer ; {x,y-координаты, yarys-колличество ярусов у ёлки, ryad-колличество рядов} Procedure yolka(a,b,ya:integer);{Процедура для рисования ёлки} Var i:integer; Begin For i:=1 to ya do Begin Moveto(a,b); Lineto(a-30,b+20); Lineto(a+30,b+20); Lineto(a,b); Setfillstyle(1,2); Floodfill(a,b+3,2); b:=b-20 End; End; begin {Начало основной программы} gd:=detect ; initgraph (gd,gm,''); setbkcolor(10); setcolor(2); x:=70; y:=100; Randomize; For n:=1 to 3 do Begin For g:=1 to 4 do Begin yarys:=3+random(3); yolka(x,y,yarys); x:=x+150; End; x:=70; y:=y+150; End; x:=145; y:=150; dx:=1; dy:=0; Repeat {Рисуем ежа} SetLineStyle(0,1,1); Setcolor(14); SetFillStyle(1,14); FillEllipse(x,y,25,10); Setcolor(6); SetFillStyle(1,6); FillEllipse(x+27,y,3,3); SetFillStyle(1,1); FillEllipse(x+20,y-3,2,2); SetLineStyle(1,1,3); Line(x-25,y-10,x+20,y-10); Line(x-29,y-5,x+15,Y-5); Line(x-29,y,x+15,y); Delay(3000); {Закрашиваем ежа фоновым цветом} Setcolor(10); SetFillStyle(1,10); FillEllipse(x,y,35,15); x:=x+dx; y:=y+dy; if (x=290) and (y=150) then Begin dx:=0; dy:=1 End; if (x=290) and (y=300) then Begin dx:=1; dy:=0 End; if (x=440) and (y=300) then Begin dx:=0; dy:=-1 End; if (x=440) and (y=150) then Begin dx:=1; dy:=0 End; if x>640 then x:=1; Until keypressed End.