Объясните принцип работы программы

  • Автор темы AlexanderNo
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

AlexanderNo

#1
Пожалуйста, напишите построчные комменты к данной программе (Часы), чтобы можно было легко понять что за что отвечает... и для чего нужно ....

[codebox]#include <stdio.h>
#include <math.h>
#include <graphics.h>
#include <conio.h>
#include <dos.h>
//---------------------------------------------------------------------------
void timetext(int x, int y, int hour,int min,int sec)
{
char c[9];
setfillstyle(1, WHITE);
bar(x-32,2*y+10,x+32,2*y+18);
c[0]=hour/10+'0';
c[1]=hour%10+'0';
c[2]=':';
c[3]=min/10+'0';
c[4]=min%10+'0';
c[5]=':';
c[6]=sec/10+'0';
c[7]=sec%10+'0';
c[8]=0;
outtextxy(x-32 ,2*y+10, c);
}
//---------------------------------------------------------------------------
void draw(int x, int y, int r, int &color)
{
struct time t,b;
int g,j,k;
gettime(&t);
if(color>13)color=0;
setcolor(color++);
if(color>13)color=0;
if(t.ti_hour>12)t.ti_hour-=12;
for(j=-5;j<=5;j++)
{
line(x+j,y,x+cos((3-t.ti_hour)*M_PI/6)*(r-70),y-sin((3-t.ti_hour)*M_PI/6)*(r-70));line(x,y,x+cos((3-t.ti_hour)*M_PI/6)*(r-70),y-sin((3-t.ti_hour)*M_PI/6)*(r-70));
line(x,y+j,x+cos((3-t.ti_hour)*M_PI/6)*(r-70),y-sin((3-t.ti_hour)*M_PI/6)*(r-70));
};
setcolor(color++);
if(color>13)color=0;
for(j=-2;j<=2;j++)
{
line(x+j,y,x+cos((15-t.ti_min)*M_PI/30)*(r-50),y-sin((15-t.ti_min)*M_PI/30)*(r-50));
line(x,y+j,x+cos((15-t.ti_min)*M_PI/30)*(r-50),y-sin((15-t.ti_min)*M_PI/30)*(r-50));
};
setcolor(color++);
if(color>13)color=0;
line(x,y,x+cos((15-t.ti_sec)*M_PI/30)*(r-25),y-sin((15-t.ti_sec)*M_PI/30)*(r-25));
setcolor(GREEN);
setfillstyle(1,GREEN);
pieslice(x,y,0,360,5);

timetext(x,y,t.ti_hour, t.ti_min, t.ti_sec);
gettime(&b);
while(t.ti_sec==b.ti_sec)gettime(&b);
if(b.ti_hour>12)b.ti_hour-=12;
if(t.ti_hour!=b.ti_hour)for(k=1; k<=b.ti_hour; k++){nosound();sound(130);delay(10);}else if(t.ti_min!=b.ti_min)sound(349.2),delay(50);else sound(493.9),delay(50); nosound();
setcolor(YELLOW);
setfillstyle(1, YELLOW);
pieslice(x,y,0,360,r-24);
}
//---------------------------------------------------------------------------

void main ()
{
int gdriver=DETECT,gmode=VGAHI,errorcode;
initgraph(&gdriver, &gmode, "d:\\turboc\\bgi");
errorcode=graphresult();
if(errorcode!=grOk)
{
printf("Graphics error: %s\n",grapherrormsg(errorcode));
getch();
return;
};
char hour[12][3]={ " 1"," 2"," 3"," 4"," 5"," 6"," 7"," 8"," 9","10","11","12"};
setfillstyle(1,WHITE);
setcolor(BLACK);
bar(0,0,getmaxx()-1,getmaxy()-1);
textcolor(BLACK);
textbackground(WHITE);
outtextxy(2,2, "created by Melnichenko Alexandr AM-709");
int x=getmaxx()/2;
int y=(getmaxy()-40)/2;
int r=y-15;
circle(x,y,r);
setcolor(YELLOW);
setfillstyle(1,YELLOW);
pieslice(x,y,0,360,r-1);
setcolor(BLACK);
for(int i=0; i<12; i++)
{
outtextxy(x-(getmaxx()+1)/64+cos((2-i)*M_PI/6)*(r-10),y-(getmaxy()+1)/160-sin((2-i)*M_PI/6)*(r-10), hour);
};
for(i=0;i<60;i++)
{
if(i%5==0)
setcolor(BLUE),line(x+cos((15-i)*M_PI/30)*(r-18),y-sin((15-i)*M_PI/30)*(r-18),x+cos((15-i)*M_PI/30)*(r-23),y-sin((15-i)*M_PI/30)*(r-23));
else
setcolor(GREEN),line(x+cos((15-i)*M_PI/30)*(r-18),y-sin((15-i)*M_PI/30)*(r-18),x+cos((15-i)*M_PI/30)*(r-20),y-sin((15-i)*M_PI/30)*(r-20));
};
setfillstyle(1,GREEN);
pieslice(x,y,0,360,5);
int color=0;
while(!kbhit())
{
draw(x,y,r,color);
};
closegraph();
}[/codebox]


ЗАРАНЕЕ БОЛЬШОЕ СПАСИБО!!!!
 
B
#2
ты где такой раритет откопал?
сейчас по средствам graphics.h никто ничего не делает....
не проще ли передти на Windows!!?
 
A

AlexanderNo

#3
=) Это не я откопал.... это у нас в Российских ВУЗах на факультетах автоматики заставляют таким д... заниматься!
 
Статус
Закрыто для дальнейших ответов.