Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C_Kurs_Lekt / C_III_семестр / 17-3_примеры_графики

.pdf
Скачиваний:
14
Добавлен:
13.02.2016
Размер:
131.81 Кб
Скачать

#include<conio.h>

#include<graphics.h>

#include<stdio.h>

#include<stdlib.h>

#include<dos.h>

#include<bios.h>

main(){

int i, maxX, maxY, eX0, eX1, eY0, eY1, eX, eY, c=2; int cord[4]; /* координаты x0,x1,y0,y1 отрезка */

int dX[4]={0,0,0,0}; /* скорости каждой из координат x0,x1,y0,y1 отрезка */ int gdriver=DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, ""); /*переходим в графический режим */ errorcode = graphresult();

if (errorcode != grOk)

 

 

 

{

/* и проверяем на ошибки

*/

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

printf("Press any key to halt:");

 

getch();

 

 

 

 

exit(1);

 

 

 

 

}

 

 

 

 

randomize();

 

 

 

 

maxX=getmaxx();

maxY=getmaxy(); /* определяем разрешение экрана */

eX0=maxX*0.05;

eY0=maxY*0.05;

/* координаты прямоугольника-рамки */

eX1=maxX-eX0;

eY1=maxY-eY0;

 

/* внутри которого будет "бегать" линия */

eX=eX1-eX0; eY=eY1-eY0;

/* и размеры прямоугольника */

cord[0]=eX0+random(eX); cord[1]=eX0+random(eX); /* определяем размеры линии */

cord[2]=eY0+random(eY); cord[3]

=eY0+random(eY); /* точнее - координаты

концов */ for(i=0;i<4;i++)

while (!dX[i]) dX[i]=random(3)-1; setcolor(1); rectangle(eX0,eY0,eX1,eY1); setcolor(c); line(cord[0],cord[2],cord[1],cord[3]); getch();

do {

setcolor(0);

line(cord[0],cord[2],cord[1],cord[3]);

setcolor(c);

for(i=0;i<4;i++) cord[i]+=dX[i]; line(cord[0],cord[2],cord[1],cord[3]); setcolor(1); rectangle(eX0,eY0,eX1,eY1);

for(i=0; i<2; i++)

if (cord[i] < eX0+1 || cord[i] > eX1-1 ) { dX[i] *= -1;

if(c<15) c++; else c=2;

}

for(i=2; i<4; i++)

if (cord[i] < eY0+1 || cord[i] > eY1-1 ) { dX[i] *= -1;

if(c<15) c++; else c=2;

}

delay(10);

}

while( !bioskey(1) ); closegraph();

return 0;

}