gec
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору На мониторе надо изобразить басейн с водой, в который кинули камень (в точку с задаными координатами). От камня идут круги (волны) и отбиваються от краев басейна. Краи басейна это краи монитора. Зделал я её вот так. #include <conio.h> #include <graphics.h> #include <dos.h> #include <stdio.h> int gm,gd; int x=417;//x - koordinata padenija kirpicha() int y=349;//y - koordinata padenija kirpicha() int kirpich(int x,int y,int z)//padenia kirpicha { for(int i=z;i!=0;i--) { bar3d(x+i,y+i,x-i,y-i,i,1); floodfill(x,y,BROWN); setfillstyle(CLOSE_DOT_FILL,BROWN); setcolor(BROWN); delay(100); cleardevice(); } } void otbivka(int x,int y)//volny otbivauscheysja otstenok basejna { for(int i=0;i!=getmaxx();i++) { circle(x,y,i); circle(x,y,i+10); circle(x,y,i+25); circle(x,y,i+45); setcolor(BLUE); delay(50); cleardevice(); } } void volna(int x,int y)//glavnaja volona posle padenia kirpicha { for(int i=0;i!=getmaxx();i++) { circle(x,y,i);//central'naja otbivauschesja circle(x,y,i+10);//center+10 circle(x,y,i+25);//center+35 circle(x,y,i+45);//center+80 setcolor(BLUE); delay(50); cleardevice(); if(x<getmaxx()-x && i==x) otbivka(0,y);//left else if(i==getmaxx()-x) otbivka(getmaxx(),y);//right if(y<getmaxy()-y && i==y) otbivka(x,0);//top else if(i==getmaxy()-y) otbivka(x,getmaxy());//bottom } } void main() { initgraph(&gd,&gm,"C:\bc\BGI"); setbkcolor(LIGHTBLUE); kirpich(x,y,x/7); delay(500); volna(x,y); getch(); cleardevice(); closegraph(); } Только она чуть чуть глючит. Первое отбитие волны нормально а вот второе уже нет. Запустить и увидите. Уже откомпилированую прогу можно посмотреть тут www.324pom.com/lab_1.rar |