Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_OT-1.doc
Скачиваний:
14
Добавлен:
17.03.2016
Размер:
1.15 Mб
Скачать

Void *pimage;

Для виділення пам'яті слугує функція malloc(), яка має наступний формат:

Void *malloc(об'єм_пам’яті_в_байтах);

Функція повертає вказівник на необхідний об’єм пам’яті, або 0 в разі помилки.

Для визначення розміру зображення слугує функція imagesize(), яка має наступний формат:

Imagesize(x1,y1,x2,y2);

Для виведення зображення на екран слугує функція putimage(). Вона має наступний формат:

Putimage(x1, y1, вказівник, вид_вставки);

Тут x1, y1– координати верхнього лівого кута зображення.Вид_вставкивизначає, яким чином зображення, на яке вказує вказівник, буде виведене на екран по відношенню до вже наявного на екрані зображення. Може приймати значення:COPY_PUT– копія,XOR_PUT– виключаюче АБО,OR_PUT- АБО,AND_PUT- І,NOT_PUT– НІ.

Приклад 2. Побудувати круг, який рухається по синусоїдальній траєкторії зліва направо.

#include <stdio.h>

#include <graphics.h>

#include <dos.h>

#include <math.h>

void main(void)

{

const int r=10;

const float h=0.005, A=2, w=10, tmax=2;

int errorcode,xstart, ystart,gd=DETECT,gm=0;

double x,y;

float mx,my;

int xend, yend,xst_limit,yst_limit,xend_limit,yend_limit,size;

void *pimage;

initgraph(&gd,&gm,"C:\\TC\\BGI");

errorcode=graphresult();

if (errorcode!=grOk)

{

printf("Graphics error: %s\n;",grapherrormsg(errorcode));

printf("Press any key to exit");

getch();

exit(1);

}

xst_limit=0.1*getmaxx();

yst_limit=0.1*getmaxy();

xend_limit=0.9*getmaxx()-2*r;

yend_limit=0.9*getmaxy()-2*r;

mx=(xend_limit-xst_limit)/(w*tmax);

my=(yend_limit-yst_limit)/(2*A);

setfillstyle(SOLID_FILL,RED);

fillellipse(xst_limit+r,(yst_limit+yend_limit)/2,r,r);

size=imagesize(xst_limit,-r+(yst_limit+yend_limit)/2,xst_limit+2*r,r+(yst_limit+yend_limit)/2);

pimage=malloc(size);

getimage(xst_limit,-r+(yst_limit+yend_limit)/2,xst_limit+2*r,r+(yst_limit+yend_limit)/2,pimage);

cleardevice();

setbkcolor(LIGHTGRAY);

x=0;

do

{

y=A*sin(x);

xstart=xst_limit+mx*x;

ystart=-r+(yst_limit+yend_limit)/2-my*y;

putimage(xstart,ystart,pimage,XOR_PUT);

delay(1);

x+=h;

putimage(xstart,ystart,pimage,XOR_PUT);

}

while(xend_limit-xstart-2*r>0);

settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);

outtextxy(0.4*getmaxx(),0.7*getmaxy(),"Press any key");

getch();

closegraph();

}

  1. ЗАВДАННЯ НА РОБОТУ

Розробити та запустити у роботу програму на мові програмування “СІ”, яка вирішує задачу відповідно до заданого нижче варіанта.

2.1. Побудувати фігуру, яка складається із трьох концентричних кілець різного кольору. Фігура рухається по колу за часовою стрілкою

2.2. Побудувати квадрат, який рухається вздовж сторін екрана проти часової стрілки.

2.3. Побудувати червоний п’ятикутник, який рухається зворотно-поступально вздовж лівої частини екрана.

2.4. Побудувати жовтий круг із вписаним в нього синім прямокутником, який рухається зворотно-поступально вздовж головної діагоналі екрана.

2.5. Побудувати синій трикутник, який рухається зворотно-поступально вздовж побічної діагоналі екрана.

2.6. Побудувати графіки функцій та на всій області екрану при зміні X від 0 до 2. Побудувати координатну сітку, графіки виділити різними кольорами. Значення А та W задаються з клавіатури.

2.7. Побудувати графіки функцій та на всій області екрану при зміні X від 0 до 1. Побудувати координатну сітку, графіки виділити різними кольорами. Значення А та B задаються з клавіатури.

2.8. Побудувати графіки функцій та у 2 чверті екрану при зміні X від 0 до 5. Побудувати координатну сітку, графіки виділити різними кольорами. Значення А, B та W задаються з клавіатури.

2.9. Побудувати графіки функцій та на всій області екрану при зміні X від 0 до 3. Побудувати координатну сітку, графіки виділити різними кольорами. Значення А та W задаються з клавіатури.

2.10. Побудувати графік функції, яка визначається залежністю при зміні X від 0 до 20. Побудувати координатну сітку, графік виділити кольором. Значення А,B,C та W задаються з клавіатури.

  1. КОНТРОЛЬНІ ЗАПИТАННЯ

3.1. Яким чином ініціалізується графіний режим.

3.2. Яка функція слугує для побудови многокутників.

3.3. Яким чином будуються рухомі графічні зображення.

3.4. Як змінити зовнішній вигляд лінії в графічному режимі.

3.5. Яка функція слугує для виведення тексту в графічному режимі.

Комп'ютерний практикум № 18

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]