Процедура SetLineStyle ( Туре , Pattern, Thick);
Где Туре – тип линии. Pattern – образец линии. Thick – толщина линии. Тип линии: 0 – сплошная, 1 – точечная, 2 – штрихпунктирная, 3 – . . . . . . . . 4 – узор линии определяет пользователь параметром pattern. Thick=l – толщина линии в 1 пиксел. Thick=2 – толщина линии в 3 пиксела. Процедура Rectangle (Х1, Y1, Х2, Y2); вычерчивает прямоугольник с использованием текущего цвета и текущего стиля линий. Процедура Draw P oly (N, Р); вычерчивает произвольную ломаную линию. N - количество точек излома, включая крайние; Р - переменная типа PointType, которая в Graph имеет вид: Type PointType=record X, Y: Word end; При вычерчивании используются текущий цвет и текущий стиль линий. Процедура Circle (Х, Y, R); вычерчивает окружность с центром X, Y и радиусом R. Процедура Arc (Х, Y, Beg А, End А, R); вычерчивает дугу окружности Beg А и End А, соответственно, начальный и конечный углы дуги. Процедура Ellipse (Х, Y, Beg А, End А, RX, RY); вычерчивает дугу эллипса с центром X, Y; Beg А, End А – начальный и конечный угол, RX и RY – горизонтальный и вертикальный радиусы. Процедура Bar (Х1, Y1, Х2, Y2); заполняет прямоугольную область экрана образцом узора и текущим цветом, которые устанавливаются процедурой SetF il lStyle. Процедура Ва r 3 D (Х1, Y1, Х2, Y2, Depth, Тор); вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань. Depth – глубина третьего измерения, Top= t rue – верхняя грань вычерчивается, false - нет. Процедура FillPoly (n, Coords); обводит линией и закрашивает замкнутый многоугольник; n – количество вершин, Coords – переменная типа Poin t Type, содержащая координаты вершин (см. DrawPoly). Процедура F il lEllipse (Х, Y, Rx, Ry); обводит линией и заполняет эллипс. Процедура Sector (Х, Y, Beg А, End А, Rx, Ry); вычерчивает и заполняет эллипсный сектор. Процедура PieSlice (Х, Y, Beg А, End А, R); вычерчивает и заполняет сектор окружности. Процедура SetColor (Color); устанавливает текущий цвет для выводимых линий и символов. Процедура SetbkColor (Color); устанавливает цвет фона окна. Процедура SetF ill Style (Fill, Color); устанавливает стиль Fill и цвет заполнения Color. Значения Fill: 0 – заполнение фоном (узор отсутствует); 1 – сплошное заполнение; 2 – заполнение – – – – –; 3 – – « – /////// ; 4 – – « – утолщенными ///////; 5 – – « – утолщенными \\\\\\ ; 6 – – « – \\\\\\ ; 7 – – « – + + + + + +; 8 – – « – ******; 9 – – « – прямоугольной клеточкой; 10 – – « – редкими точками ; 11 – – « – частыми точками ; 12 – – « – узор определяется пользователем. Процедура FloodPill (Х, Y, Color); заполняет произвольную замкнутую линию (точки соединения должны совпадать, например, концы линий не могут пересекаться) текущим стилем и текущим цветом. X, Y – координаты точки внутри фигуры, Color — цвет ограничений линии. Если линии разомкнуты или пересекаются и концы «торчат», то цвет «разольется» по всему окну. Функция ImageSize (X1, Y1, X2, Y2); возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения (например, окна с рисунком). Процедура GetImage (X1, Y1, X2, Y2, Buf); помещает в память копию прямоугольного фрагмента изображения. Buf — переменная или участки кучи, куда будет помещена копия видеопамяти с фрагментом изображения. Размер Buf должен быть не меньше значения, возвращаемого функцией ImageSize с теми же координатами X1...Y2. Процедура PutImage (X, Y, Buf, Mode); выводит в заданное место экрана копию фрагмента изображения, ранее помещенную в память процедурой GetImage. X, Y — координаты левого угла того места на экране, куда будет скопирован фрагмент изображения. Buf — переменная, или участок кучи, откуда берется фрагмент изображения. Mode — способ копирования.
12.3. Примеры программ
Ниже приведены программы, демонстрирующие некоторые возможности графики в Паскале. Программа Prim 54 демонстрирует вывод различных простых объектов-окружностей, дуг, эллипсов, прямоугольников, параллелепипедов. Program Prim54;Uses Graph;var grDriver,grMode,errCode,Radius,i,Width,y0,y1,y2,x1,x2:integer;Begin grDriver:=detect; { определение номера драйвера } InitGraph ( grDriver , grMode ,''); { инициализация графического режима } errCode:=GraphResult; if errCode=grOK then begin { графический режим открыт, можно работать } for radius :=1 to 5 do begin { рисуем окружности с радиусами 10,20..50, с центром x=200, y=70 точек растра } Circle (200,70, Radius *10); readln ; end ; { Cleardevice;} { если бы этот оператор не был в комментарных скобках, т.е. не заблокирован, то сейчас окружности были бы стерты с экрана } Ellipse(200,200,0,360,30,50); { рисуем дугу эллипса с центром 200,200, начальный угол=0, конечный – 360 (замкнутый, эллипс радиусами 30,50 } readln; Ellipse(300,200,0,180,50,30); {полэллипса } readln; for Radius:=1 to 5 do Arc(300,100,0,90,radius*10); { дуги с центром 300,100, от 0 до 90 градусов, радиусами 10,20..50} readln; Width:=10; Bar(30,20,50,100); {прямоугольник с координатами 30,20 – верхний левый угол и 50,100 – нижний правый угол} for i:=1 to 5 do Bar(10+i*Width,300+i*10,20+i*Width,400); {пять прямоугольников: первый 20,310.30,400, второй 30,320,40,400 и т.д. } readln; Bar3D(210,300,250,360,10,TopOn); {параллелепипед с крышкой} readln; x1:=410; y1:=300; x2:=450; y2:=360; Bar3D(x1,y1,x2,y2,10,TopOff); { параллелепипед без крышки } readln; CloseGraph; { закрыть Graph} end else Halt(1); { режим Graph не удалось открыть . } End. Prim 55 рисует в динамике случайно расположенные цветные линии в окне до тех пор, пока не будет нажата клавиша Enter. Затем машина выводит последним случайным цветом главную диагональ окна, после Enter – случайные лучи и после Enter – прямоугольник. Program Prim55; Uses CRT,Graph; var GrDriver,grMode,errCode:integer; begin grDriver:=Detect; InitGraph(grDriver,grMode,' '); errCode:=GraphResult; if errCode=grOK then begin Randomize; {запустить генератор случайных чисел} repeat {рисуются цветные линии в квадрате 500 x 500, пока не будет нажата любая клавиша, координаты линий случайны, цвета линий случайны} SetColor(Random(GetMaxColor)+1); Line(Random(500),Random(500),Random(500),Random(500)); Delay(1000); {каждая линия рисуется с задержкой} until KeyPressed; Cleardevice; MoveTo(1,2); { перевести курсор } LineRel(500,500); {провести линию из предыдущей точки в 500,500 последним цветом} readln; readln; repeat LineTo(random(500),random(500)); {провести линию в случайную точку} Delay(6000); until KeyPressed; readln; ClearDevice; Rectangle(29,29,GetMaxX-29,GetMaxY-29); { прямоугольник } readln; CloseGraph; end else Halt(1); end. Prim56 рисует эллипсы и круги, закрашенные красным цветом. Program Prim56; Uses CRT, Graph; Var grDriver,grMode,errCode:integer; Begin grDriver:=Detect; InitGraph(grDriver,grMode, ' '); errCode:=Graphresult; if errCode=grOK then Begin SetBkColor(blue); SetFillStyle(1,4); FillEllipse(220,150,50,50); FillEllipse(420,150,50,50); FillEllipse(320,230,50,130); FillEllipse(370,405,50,30); FillEllipse(275,410,50,30); readln; end else Halt(1); end. Prim56 рисует обезьяну с тазиком. Program Prim57; Uses Graph; Var i,grDriver,grMode,TrrCode,errCode:integer; x,y:word; xm,ym,rc,xc,yc,x1,y1,x2,y2,r:word; k:arccoordsType; kr:array[1..20] of PointType; Begin grDriver:=detect; InitGraph(grDriver,grMode,' ' ); errCode:=GraphResult; if errCode=grOK then begin x:=150; y:=150; SetBkColor(white); { уши } y1:=y-30; x1:=x-30; x2:=x+40; r:=15; SetColor(lightred); SetFillStyle(solidfill,brown); pieslice(x1,y1,0,360,r); pieslice(x2,y1,0,360,r); r:=r-3; SetFillStyle(solidfill,lightred); pieslice(x1,y1,0,360,r); pieslice(x2,y1,0,360,r); {голова} r:=(x2-x1) div 2-3; x1:=x1+r+2; y1:=y1+2; xc:=x1; yc:=y1; rc:=r; setColor(brown); SetFillStyle(solidfill,brown); pieslice(x1,y1,0,360,r); { майка } setColor(brown); SetFillStyle(solidfill,yellow); y2:=y1+r-3; x1:=x1-r div 2+2; ym:=y2; line(x1-5,y2-5,x1-27,y2+68); x2:=x1+r+16; xm:=x2; line(x2-15,y2-5,x2+27,y2+68); line(x1-27,y2+68,x2+27,y2+68); putpixel(x2-22,y2+25,blue); floodfill(x2-22,y2+25,brown); { пояс } setcolor(green); setfillstyle(solidfill,green); bar(112,215,214,225); { штаны } setcolor(blue); setfillstyle(solidfill,blue); kr[1].x:=113; kr[1].y:=223; kr[2].x:=113; kr[2].y:=270; kr[3].x:=165; kr[3].y:=270; kr[4].x:=170; kr[4].y:=260; kr[5].x:=180; kr[5].y:=270; kr[6].x:=225; kr[6].y:=270; kr[7].x:=212; kr[7].y:=223; kr[8].x:=113; kr[8].y:=223; fillpoly(8,kr); { левая нога } setcolor(brown); setfillstyle(solidfill,brown); kr[1].x:=135; kr[1].y:=270; kr[2].x:=145; kr[2].y:=320; kr[3].x:=123; kr[3].y:=350; kr[4].x:=145; kr[4].y:=358; kr[5].x:=145; kr[5].y:=350; kr[6].x:=162; kr[6].y:=320; kr[7].x:=145; kr[7].y:=270; kr[8].x:=135; kr[8].y:=270; fillpoly(8,kr); { правая нога } kr[1].x:=195; kr[1].y:=270; kr[2].x:=205; kr[2].y:=320; kr[3].x:=183; kr[3].y:=350; kr[4].x:=205; kr[4].y:=358; kr[5].x:=205; kr[5].y:=350; kr[6].x:=222; kr[6].y:=320; kr[7].x:=205; kr[7].y:=270; kr[8].x:=195; kr[8].y:=270; fillpoly(8,kr); { башмаки } setfillstyle(solidfill,red); pieslice(160,360,0,360,10); pieslice(200,370,10,160,20); pieslice(215,360,0,360,10); pieslice(142,370,10,160,20); setfillstyle(solidfill,white); fillellipse(145,115,5,8); fillellipse(163,115,5,8); setfillstyle(solidfill,blue); pieslice(147,115,0,360,3); pieslice(165,115,0,360,3); setcolor(yellow); arc(154,160,30,145,30); setcolor(red); setfillstyle(solidfill,lightmagenta); fillellipse(154,146,5,8); { бабочка } kr[1].x:=140; kr[1].y:=153; kr[2].x:=135; kr[2].y:=163; kr[3].x:=155; kr[3].y:=158; kr[4].x:=175; kr[4].y:=163; kr[5].x:=170; kr[5].y:=153; kr[6].x:=155; kr[6].y:=158; kr[7].x:=140; kr[7].y:=153; fillpoly(7,kr); { тазик } setfillstyle(solidfill,blue); kr[1].x:=243; kr[1].y:=225; kr[2].x:=255; kr[2].y:=280; kr[3].x:=325; kr[3].y:=280; kr[4].x:=335; kr[4].y:=225; kr[5].x:=255; kr[5].y:=225; fillpoly(5,kr); sector(290,230,0,360,50,12); setfillstyle(solidfill,lightcyan); fillellipse(290,230,40,10); { руки } setfillstyle(solidfill,brown); kr[1].x:=184; kr[1].y:=164; kr[2].x:=295; kr[2].y:=225; kr[3].x:=300; kr[3].y:=215; kr[4].x:=175; kr[4].y:=150; kr[5].x:=180; kr[5].y:=160; fillpoly(5,kr); pieslice(295,224,0,170,12); pieslice(265,244,0,360,10); kr[1].x:=136; kr[1].y:=184; kr[2].x:=265; kr[2].y:=255; kr[3].x:=270; kr[3].y:=245; kr[4].x:=135; kr[4].y:=170; kr[5].x:=136; kr[5].y:=184; fillpoly(5,kr); end else halt(1); Readln; end. Prim58 демонстрирует возможности мультипликации: по фоновому рисунку – дом, луна, висящий "базовый" НЛО; мечется с переменной скоростью малый НЛО и издает звуки случайными частотами. Program Prim58; Uses CRT,Graph; Label loop; Const r=30; p=600; pr=1000; {константы, определяющие скорость} {рисования и перемещения объектов} Var d , m , e , xm , ym , x , y , lx , ly , rx , ry , size , i , dx , dy , width,height,grDriver,grMode,errCode,a,b,c, f,s,j:integer; saucer:pointer; Begin grDriver:=Detect; InitGraph(grDriver,grMode,''); errCode:=GraphResult; if errCode=grOK then Begin x:=r*3; y:=r*2; xm:=GetMaxX div 2; ym:=GetMaxY div 2; { тарелка } SetBkColor(blue); SetFillStyle(solidfill,red); Ellipse(x,y,0,360,r+40,r div 10); Ellipse(x,y-4,0,360,r-1,r); Line(x+7,y-6,x+10,y-12); Line(x-7,y-6,x-10,y-12); Circle(x+10,y-12,2); Circle(x-10,y-12,2); Floodfill ( x +1, y +4, White ); {определяем габариты НЛО и помещаем данные о нем в кучу} lx:=x-r-1; ly:=y-14; rx:=x+r+1; ry:=y+r div 6; Width:=rx-lx+1; Height:=ry-ly+1; Size:=Imagesize(lx-9,ly,rx+3,ry+10); GetMem(Saucer,size); GetiMage(lx-9,ly,rx+10,ry+3,saucer^); { создаем звездное небо } Rectangle(xm,ym,3*xm,3*ym); SetViewPort(xm+1,ym+1,3*xm-1,3*ym-1,Clipon); xm:=2*xm; ym:=2*ym; for i:=1 to 200 do PutPixel(random(xm),random(ym),white); { дом } SetFillStyle(solidfill,DarkGray); bar(320,240,640,480); Delay(p*10); { дом } bar(370,220,600,240); Delay(p*10); { чердак } Line(320,240,640,240); Delay(p*10); { крыша } Line(370,240,370,220); Delay(p*10); {левая стена чердака} Line(600,220,600,240); Delay(p*10); {правая стена чердака} Line(370,220,600,220); Delay(p*10); { крыша чердака } Line(430,220,430,180); Delay(p*10); { мачта антенны } Line(430,180,410,170); Delay(p*10); { верхний ус антенны } Line(430,180,410,190); Delay(p*10); { нижний ус антенны } Line(430,180,410,180); Delay(p*10); { средний ус антенны } bar(0,460,640,480); Delay(p*10); { земля } Line(0,460,640,460); Delay(p*10); SetFillStyle(solidfill,Yellow); b:=270; { окна } for i:=1 to 4 do begin a:=350; f:=b+20; c:=a+15; Delay(p*5); for j:=1 to 8 do begin bar(a,b,c,f); Delay(p*5); SetColor(DarkGray); Line(a,b+8,c,f-12); Delay(p*5); Line(a+5,b+8,a+5,b+20); Delay(p*5); a:=a+35; c:=c+35; end; b:=b+50; end; Delay(p*10); Pieslice(500,80,300,100,20); { месяц } SetColor(green); Delay(p*10); Line(150,460,150,400); Delay(p*10); { дерево } Circle(170,365,25); Delay(p*10); Circle(165,375,25); Delay(p*10); Circle(150,375,25); Delay(p*10); Circle(135,365,25); Delay(p*10); Circle(155,345,25); Delay(p*10); {задаем начальное положение нло и направление движения} x:=xm div 2; y:=ym div 2; dx:=100; dy:=100; { основной цикл } Repeat PutImage(x,y,Saucer^,XorPut); Sound(Random(2*2000)); Delay(pr*2); NoSound; Putimage(x,y,Saucer^,XorPut); {получаем новые координаты} loop : x := x + dx ; y:=y+dy; if (x<0) or (x+width+1>xm) or (y<0) or (y+height+1>ym) then begin {НЛО достиг границы экрана, меняем направление его движения} x:=x-dx; y:=y-dy; dx:=GetMaxX div 10 - random(GetMaxX div 5); dy:=GetMaxY div 30 - random(GetMaxY div 15); goto loop; end until KeyPressed; if ReadKey=#0 then x:=ord(ReadKey); end else CloseGraph ; End . Список использованной и рекомендуемой литературы:
1. А.Н. Воловачев, В.С. Крисевич. Программирование на языке Паскаль для персональных ЭВМ ЕС. – Минск: "Высшая школа", 1989. 2. В.Я. Сердюченко. Розробка алгоритмів та програмування мовою TURBO PASCAL. – Харьков: "Паритет", 1995. 3. В.В. Фаронов. TURBO PASCAL 7.0 /Практика программирования/ – "Нолидж", 1997. 4. В.В. Фаронов. TURBO PASCAL 7.0 /Начальный курс/ – "Нолидж", 1997.
ОГЛАВЛЕНИЕ
1. Предварительные сведения...................................................... 4 1.1. Алфавит................................................................................................... 4 1.2. Решение задач......................................................................................... 4 2. Простейшие программы............................................................. 5 2.1. Оператор присваивания......................................................................... 5 2.2. комментарии........................................................................................... 7 2.3. Программа............................................................................................... 7 2.4. Простейший ввод-вывод........................................................................ 8 2.5. Арифметические выражения.................................................................. 9 2.6. Описания переменных......................................................................... 12 2.7. Раздел описания типов........................................................................ 14 3. Разветвляющиеся программы............................................. 16 3.1. Общие положения................................................................................. 16 3.2. Оператор goto, раздел описания меток............................................. 17 3.3. Оператор if............................................................................................. 19 3.4. Оператор case (оператор выбора)........................................................ 25 4. Циклические программы......................................................... 27 4.1. Оператор for.......................................................................................... 27 4.2. Оператор repeat. Общий вид................................................................ 32 4.3. Оператор While..................................................................................... 33 4.4. Вложенные циклы................................................................................. 34 5. Ввод – вывод...................................................................................... 37 5.1. Общие положения................................................................................. 37 5. 2. Ввод....................................................................................................... 38 5. 3. Вывод..................................................................................................... 39 5. 4. Некоторые возможности ввода-вывода........................................... 39 6. Массивы.............................................................................................. 41 6. 1. Описание массивов............................................................................ 41 7. Подпрограммы................................................................................ 49 7.1. Общие положения................................................................................. 49 7.2. Подпрограммы-функции, определенные пользователем................. 51 7.3. Подпрограммы-процедуры................................................................... 54 7.4. Локальные и глобальные описания объектов.................................. 58 8. Строковые данные....................................................................... 59 8.1. Общие замечания.................................................................................. 59 8.2. Строковые выражения.......................................................................... 60 8.3. Стандартные процедуры и функции для обработки строк................ 61 8.3.1. Процедуры обработки строк.............................................................. 61 8.3.2. Функции обработки строк................................................................. 62 9. Записи................................................................................................... 63 9.1. Комплексные данные........................................................................... 68 9.2. Запись с вариантами............................................................................ 70 10. Файлы.................................................................................................. 71 10.1. Общие замечания................................................................................ 71 10.2. Стандартные процедуры и функции для работы с файлами.......... 72 10. 3. Стандартные файлы........................................................................... 73 10.4. Файлы последовательного доступа, созданные пользователем. 74 10.5. Файлы произвольного доступа........................................................ 80 10.6. Текстовые файлы................................................................................ 83 11. Использование библиотеки CRT....................................... 85 11.1. Программирование клавиатуры....................................................... 85 11.2. Текстовый вывод на экран................................................................ 88 11.3. Программирование звукового генератора...................................... 96 12. Графика в Паскале...................................................................... 99 12.1. Инициализация графического режима............................................ 99 12.2. Процедуры и функции библиотеки Graph........................................ 99 12.3. Примеры программ............................................................................ 102 СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ............................................109
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (190)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |