Разработка программы имитирующей работу обычных стрелочных часов

Автор: Пользователь скрыл имя, 27 Января 2012 в 09:00, курсовая работа

Краткое описание

Целью курсовой работы является разработка программы имитирующей работу обычных стрелочных часов.
Первая глава посвящена анализу технического задания, определяется что нужно создать, какие библиотеки будут использоваться.
Во второй главе будет рассказано о выбранном языке программирования, о его возможностях и особенностях.
В третьей главе будет подробно описано создание требуемых для решения задачи классов.

Оглавление

ВВЕДЕНИЕ 3
1. Анализ технического задания 5
2. Выбор языка программирования 6
3. Конструирование классов 15
4. Описание программы 20
ЗАКЛЮЧЕНИЕ 24
Список литературы 25

Файлы: 1 файл

Разработка программы эмулятор игры « крестики-нолики.docx

— 86.57 Кб (Скачать)

  setfillstyle(1,color);

  cl=color;

}

else

{

  setcolor(0);

  setfillstyle(1,0);

  cl=0;

}

line(x0+4*cos(sh),y0-4*sin(sh),x0+1+126*cos(1.5+sh),y0+1-126*sin(1.5+sh));

line(x0+1+126*cos(1.5+sh),y0+1-126*sin(1.5+sh), x0+157*cos(1.57295+sh),y0-157*sin(1.57295+sh));

line(x0+157*cos(1.57295+sh),y0-157*sin(1.57295+sh), x0+126*cos(1.64159+sh),y0-126*sin(1.64159+sh));

line(x0+126*cos(1.64159+sh),y0-126*sin(1.64159+sh), x0+4*cos(3.14159+sh),y0-4*sin(3.14159+sh));

line(x0+4*cos(3.14159+sh),y0-4*sin(3.14159+sh), x0+4*cos(0+sh),y0-4*sin(0+sh));

floodfill(x0+110*cos(1.57295+sh),y0-110*sin(1.57295+sh),cl);

setcolor(0);

line(x0+4*cos(0+sh),y0-4*sin(0+sh),x0+1+126*cos(1.5+sh),y0+1-126*sin(1.5+sh));

line(x0+1+126*cos(1.5+sh),y0+1-126*sin(1.5+sh), x0+157*cos(1.57295+sh),y0-157*sin(1.57295+sh));

line(x0+157*cos(1.57295+sh),y0-157*sin(1.57295+sh), x0+126*cos(1.64159+sh),y0-126*sin(1.64159+sh));

line(x0+126*cos(1.64159+sh),y0-126*sin(1.64159+sh), x0+4*cos(3.14159+sh),y0-4*sin(3.14159+sh));

line(x0+4*cos(3.14159+sh),y0-4*sin(3.14159+sh),x0+4*cos(sh),y0-4*sin(sh));

setcolor(cl);

fillellipse(x0,y0,8,8);

setcolor(0);

circle(x0,y0,8);

}

class arrow_min:public ARROW

{

    public:

      void draw(int);

};

void arrow_min::draw(int m)

{

int cl;

if (m==1)

{

  setcolor(color);

  setfillstyle(1,color);

  cl=color;

}

else

{

  setcolor(0);

  setfillstyle(1,0);

  cl=0;

}

line(x0+7.5*cos(sh),y0-7.5*sin(sh),x0+126.5*cos(1.45+sh),y0-126.5*sin(1.45+sh));

line(x0+126.5*cos(1.45+sh),y0-126.5*sin(1.45+sh), x0+157*cos(1.57+sh),y0-157*sin(1.57+sh));

line(x0+157*cos(1.57+sh),y0-157*sin(1.57+sh), x0+126.5*cos(1.69159+sh),y0-126.5*sin(1.69159+sh));

line(x0+126.5*cos(1.69159+sh),y0-126.5*sin(1.69159+sh), x0+7.5*cos(3.14159+sh),y0-7.5*sin(3.14159+sh));

line(x0+7.5*cos(3.14159+sh),y0-7.5*sin(3.14159+sh), x0+7.5*cos(sh),y0-7.5*sin(sh));

floodfill(x0+0.7*157*cos(1.57+sh),y0-0.7*157*sin(1.57+sh),cl);

setcolor(0);

line(x0+7.5*cos(sh),y0-7.5*sin(sh),x0+126.5*cos(1.45+sh),y0-126.5*sin(1.45+sh));

line(x0+126.5*cos(1.45+sh),y0-126.5*sin(1.45+sh), x0+157*cos(1.57+sh),y0-157*sin(1.57+sh));

line(x0+157*cos(1.57+sh),y0-157*sin(1.57+sh), x0+126.5*cos(1.69159+sh),y0-126.5*sin(1.69159+sh));

line(x0+126.5*cos(1.69159+sh),y0-126.5*sin(1.69159+sh), x0+7.5*cos(3.14159+sh),y0-7.5*sin(3.14159+sh));

line(x0+7.5*cos(3.14159+sh),y0-7.5*sin(3.14159+sh), x0+7.5*cos(sh),y0-7.5*sin(sh));

setcolor(cl);

fillellipse(x0,y0,15,15);

setcolor(0);

circle(x0,y0,15);

}

class arrow_hour:public ARROW

{

    public:

      void draw(int);

};

void arrow_hour::draw(int m)

{

int cl;

if (m==1)

{

  setcolor(color);

  setfillstyle(1,color);

  cl=color;

}

else

{

  setcolor(0);

  setfillstyle(1,0);

  cl=0;

}

line(x0+7.5*cos(sh),y0-7.5*sin(sh),x0+89*cos(1.4+sh),y0-89*sin(1.4+sh));

line(x0+89*cos(1.4+sh),y0-89*sin(1.4+sh), x0+110*cos(1.57+sh),y0-110*sin(1.57+sh));

line(x0+110*cos(1.57+sh),y0-110*sin(1.57+sh), x0+89*cos(1.74+sh),y0-89*sin(1.74+sh));

line(x0+89*cos(1.74+sh),y0-89*sin(1.74+sh), x0+7.5*cos(3.14159+sh),y0-7.5*sin(3.14159+sh));

line(x0+7.5*cos(3.14159+sh),y0-7.5*sin(3.14159+sh), x0+7.5*cos(sh),y0-7.5*sin(sh));

floodfill(x0+77*cos(1.57+sh),y0-77*sin(1.57+sh),cl);

setcolor(0);

line(x0+7.5*cos(sh),y0-7.5*sin(sh),x0+89*cos(1.4+sh),y0-89*sin(1.4+sh));

line(x0+89*cos(1.4+sh),y0-89*sin(1.4+sh), x0+110*cos(1.57+sh),y0-110*sin(1.57+sh));

line(x0+110*cos(1.57+sh),y0-110*sin(1.57+sh), x0+89*cos(1.74+sh),y0-89*sin(1.74+sh));

line(x0+89*cos(1.74+sh),y0-89*sin(1.74+sh), x0+7.5*cos(3.14159+sh),y0-7.5*sin(3.14159+sh));

line(x0+7.5*cos(3.14159+sh),y0-7.5*sin(3.14159+sh), x0+7.5*cos(sh),y0-7.5*sin(sh));

setcolor(cl);

fillellipse(x0,y0,15,15);

setcolor(0);

circle(x0,y0,15);

}

void clock_face(int x0,int y0)

  {

    setfillstyle(SOLID_FILL,15);

    fillellipse(x0,y0,222,222);

    setcolor(0);

    settextstyle(0,0,3);

    int i;

    for (i=1; i<=60; i++)

    {

     if (i%5==0)

       {

      line(x0+161*cos(i*Pi/30),y0-161*sin(i*Pi/30), x0+178*cos(i*Pi/30), y0-178*sin(i*Pi/30));

      switch (i)

      {

        case 5:outtextxy(x0+91,y0-182,"1"); break;

        case 10:outtextxy(x0+164,y0-109,"2"); break;

        case 15:outtextxy(x0+191,y0-9,"3"); break;

        case 20:outtextxy(x0+164,y0+91,"4"); break;

        case 25:outtextxy(x0+91,y0+164,"5"); break;

        case 30:outtextxy(x0-9,y0+191,"6"); break;

        case 35:outtextxy(x0-109,y0+164,"7"); break;

        case 40:outtextxy(x0-182,y0+91,"8"); break;

        case 45:outtextxy(x0-209,y0-9,"9"); break;

        case 50:

          {

            outtextxy(x0-197,y0-109,"1");

            outtextxy(x0-182,y0-109,"0"); break;

          }

        case 55:

          {

            outtextxy(x0-124,y0-182,"1");

            outtextxy(x0-109,y0-182,"1"); break;

          }

        case 60:

          {

            outtextxy(x0-19,y0-212,"1");

            outtextxy(x0,y0-212,"2"); break;

          }

      }

    }

    else line(x0+169*cos(i*Pi/30), y0-169*sin(i*Pi/30), x0+178*cos(i*Pi/30), y0-178*sin(i*Pi/30));

  }

}

void main()

{

  int gdriver = DETECT, gmode, errorcode;

  initgraph(&gdriver, &gmode, "");

  errorcode = graphresult();

  if (errorcode != grOk)

    {

     cout<<"\n Graphics error \n Press any key to halt:";

     getch();

     exit(1);

    }

  int xc,yc;

  xc=getmaxx()/2;

  yc=getmaxy()/2;

  ARROW::setXY(xc,yc);

  arrow_sec strelka1;

  arrow_min strelka2;

  arrow_hour strelka3;

  strelka1.set_color(4);

  strelka2.set_color(8);

  strelka3.set_color(8);

  struct  time t;

  gettime(&t);

  int m,h,i;

  m=t.ti_min;

  if (t.ti_hour<12) h=t.ti_hour*5+m/12;

    else h=(t.ti_hour-12)*5+m/12;

  clock_face(xc,yc);

  do

   {

     strelka3.rotate(h);

     strelka2.rotate(m);

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

       {

        if (kbhit() != 0) break;

        strelka1.rotate(i);

        strelka3.draw(1);

        strelka2.draw(1);

        strelka1.draw(1);

        sleep(1);

        setfillstyle(1,15);

        setcolor(15);

        fillellipse(xc,yc,160,160);

       }

     m++;

     if (m==60)

       {

        m=0;

        h++;

       }

    if (h==24) h=0; 

   }

  while (kbhit()==0);

  closegraph();

} 

 

Приложение  B 
 
 
 

 
 
 
 

Информация о работе Разработка программы имитирующей работу обычных стрелочных часов