Скачиваний:
4
Добавлен:
25.05.2014
Размер:
4.4 Кб
Скачать
#ifndef LAB1_CPP_TA_1223423535356wr45
#define LAB1_CPP_TA_1223423535356wr45

#include <conio.h>
#include <graphics.h>
#include <dos.h>
#include <math.h>
#include <STDLIB.H>
#include "smiley.h"

TSmiley::TSmiley(int a, int b, int r, int c, int d, float vx, float vy)
{
  SetX(a);
  SetY(b);
  SetVx(vx);
  SetVy(vy);
  SetCondition(c);
  SetColor(d);
  SetR(r);
}
int TSmiley::SetR(int c)
{
   if (c>=10 && c<=50)
   {
     r=c;
     return 0;
   }
   else
   {
     r=30;
     return 1;
   }
}
int TSmiley::SetX (int c)
{
   if (c>=0 && c<getmaxx() )
   {
     x=c;
     return 0;
   }
   else
   {
     x=0;
     return 1;
   }
}
int TSmiley::SetY (int c)
{
   if (c<getmaxy() )
   {
     y=c;
     return 0;
   }
   else
   {
     y=0;
     return 1;
   }
}
int TSmiley::SetCondition (int c)
{
   if (c>=0 && c<=MaxCondition )
   {
     condition=c;
     return 0;
   }
   else
   {
     condition=0;
     return 1;
   }
}
int TSmiley::SetVx(float c)
{
   vx=c;
   return 0;
}
int TSmiley::SetVy(float c)
{
   vy=c;
   return 0;
}
int TSmiley::SetAll(int a, int b, int r, int c, int d, float vx, float vy)
{
  int k=0;
  SetVx(vx);
  SetVy(vy);
  k=SetX(a);
  k=k|SetY(b);
  k=k|SetCondition(c);
  k=k|SetColor(d);
  k=k|SetR(r);
  return k;
}
int TSmiley::GetX() const
{
  return x;
}
int TSmiley::GetY() const
{
  return y;
}
int TSmiley::GetCondition() const
{
  return condition;
}
int TSmiley::SetColor(int c)
{
  if (c>=0 && c<getmaxcolor() )
   {
     color=c;
     return 0;
   }
   else
   {
     color=0;
     return 1;
   }
}

void End()
{
  closegraph();
  cout<<"Lab1V7: Created by Tishka17";
  getch();
  while (kbhit()) {getch();}
}
void Begin()
{
   int gdriver =9 , gmode=1;
  initgraph(&gdriver, &gmode, "c:\\cpp\\bgi\\");
  while (kbhit()) {getch();}
}

int TSmiley::GetColor() const
{
   return color;
}
void TSmiley::Paint()
{
  setcolor(color);
  setfillstyle(1,color);
  fillellipse(x,y,30*r/30,30*r/30);
  setfillstyle(1,0);
  fillellipse(x-12*r/30,y-10*r/30,5*r/30,5*r/30);
  fillellipse(x+12*r/30,y-10*r/30,5*r/30,5*r/30);
  setcolor(0);
  switch (condition)
  {
     case 0:
       ellipse(x,y+5*r/30,180,0,20*r/30,20*r/30);
       ellipse(x,y+5*r/30,180,0,20*r/30,15*r/30);
       break;
     case 1:
       ellipse(x,y+10*r/30,180,0,20*r/30,10*r/30);
     break;
     case 2:
       line(x-17*r/30,y+12*r/30,x+17*r/30,y+12*r/30);
     break;
     case 3:
       ellipse(x,y+15*r/30,0,180,20*r/30,10*r/30);
     break;
     case 4:
/*       ellipse(x,y+15*r/30,0,180,20*r/30,8*r/30);
       line(x-18*r/30,y+13*r/30,x-16*r/30,y+20*r/30);
       line(x-14*r/30,y+11*r/30,x-16*r/30,y+20*r/30);
       line(x+14*r/30,y+11*r/30,x+16*r/30,y+20*r/30);
       line(x+18*r/30,y+13*r/30,x+16*r/30,y+20*r/30);*/
       line(x-18*r/30,y+13*r/30,x-12*r/30,y+18*r/30);
       line(x-2*r/30,y+11*r/30,x-12*r/30,y+18*r/30);
       line(x-2*r/30,y+13*r/30,x,y+20*r/30);
       line(x+10*r/30,y+11*r/30,x,y+20*r/30);
       line(x+10*r/30,y+11*r/30,x+20*r/30,y+15*r/30);

     break;
     case 5:
       line(x-17*r/30,y+12*r/30,x+17*r/30,y+12*r/30);
       line(x-15*r/30,y+10*r/30,x-15*r/30,y+14*r/30);
       line(x-10*r/30,y+10*r/30,x-10*r/30,y+14*r/30);
       line(x-5*r/30,y+10*r/30,x-5*r/30,y+14*r/30);
       line(x,y+10*r/30,x,y+14*r/30);
       line(x+5*r/30,y+10*r/30,x+5*r/30,y+14*r/30);
       line(x+10*r/30,y+10*r/30,x+10*r/30,y+14*r/30);
       line(x+15*r/30,y+10*r/30,x+15*r/30,y+14*r/30);
       setcolor((color+8)%getmaxcolor());
       line(x-30*r/30,y-30*r/30,x+30*r/30,y+30*r/30);
       line(x+30*r/30,y-30*r/30,x-30*r/30,y+30*r/30);

  }
}
TSmiley TSmiley::Move()
{
  x+=vx*dt;
  y+=vy*dt+4.9*dt*dt;
  vy+=9.8*dt;
  if (y>=getmaxy()-r-5 && vy>0 && condition<MaxCondition)
     {
       vy=-0.8*vy;
       condition++;
     }
  if (condition>=MaxCondition && y>getmaxy()+r)
     {
        r=random(40)+10;
        x=random(getmaxx()-r)+r;
        y=-r;
        vx=random(100)-50;
        vy=0;
        color=random(getmaxcolor())+1;
        condition=0;
     }
  if (x<r+5 && vx<0)  { vx=-0.8*vx;}
  if (x>getmaxx()-r-5 && vx>0)  { vx=-0.8*vx;}

  return *this;
}


#pragma startup Begin
#pragma exit End

#endif // LAB1_CPP_TA_1223423535356wr45
Соседние файлы в папке Для специальностей ПМИ-ПМ. Лаба 1 вариант 7