Перемещение объектов.

Тема в разделе "WASM.BEGINNERS", создана пользователем Luna, 11 май 2010.

  1. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Дан класс "треугольник, вписанный в окружность". Как можно менять цвет созданного объекта и перемещать по экрану?

    Код (Text):
    1.  #include <math.h>
    2. #include <conio.h>
    3. #include <graphics.h>
    4.  //tre.cpp
    5.  class tre
    6.  {int xq, yq, lq;
    7.  public:
    8.  void drawtre()
    9.  
    10.    {int d=lq/2;
    11.  
    12.     line (xq-d, yq-d/sqrt(3), xq+d, yq-d/sqrt(3));
    13.     line (xq-d, yq-d/sqrt(3), xq, yq+d*2/sqrt(3));
    14.     line (xq+d, yq-d/sqrt(3), xq, yq+d*2/sqrt(3));
    15.     }
    16.  
    17.  tre(int xi,int yi,int li)
    18.   {xq=xi,yq=yi,lq=li;}
    19.  
    20.  void draw()
    21.  {drawtre();}
    22.  
    23.  void hide()
    24.  {int bk,cc;
    25.  bk=getbkcolor();
    26.  cc=getcolor();
    27.  setcolor(bk);
    28.  drawtre();
    29.  setcolor(cc);
    30.   }
    31.  
    32.  };
    33.  
    34.  
    35. //circ.cpp
    36.  
    37.  class circ
    38.  {int xc, yc, rc;
    39.  public:
    40.  
    41.  circ(int xi,int yi,int ri)
    42.   {xc=xi;yc=yi;rc=ri;}
    43.  
    44.  void draw()
    45.  {circle(xc,yc,rc);}
    46.  
    47.  void hide()
    48.  {int bk,cc;
    49.  bk=getbkcolor();
    50.  cc=getcolor();
    51.  setcolor(bk);
    52.  circle(xc,yc,rc);
    53.  setcolor(cc);
    54.   }
    55.  
    56.  };
    57.  
    58.  
    59.  class trecirc:public tre, public circ
    60.  
    61.   {public:
    62.   trecirc(int xi, int yi, int ri):
    63.   circ(xi,yi,ri),
    64.   tre(xi,yi,sqrt(3)*ri)
    65.   {} ;
    66.  
    67.  
    68.   void draw()
    69.   { circ::draw();
    70.     tre::draw();
    71.   }
    72.    void hide()
    73.   { circ::hide();
    74.     tre::hide();
    75.   }
    76.  
    77.   };
    78.  
    79.  
    80.   void main()
    81.   {
    82.    int dr=DETECT,
    83.   mod;
    84.   initgraph(&dr,&mod,"c:\\borlandc\\bgi");
    85.  
    86.   trecirc A1(150,150,60);
    87.   trecirc F4(400,300,50);
    88.  
    89.   A1.draw();
    90.   getch();
    91.  
    92.   F4.draw();
    93.   getch();
    94.  
    95.   F4.hide();
    96.   getch();  
    97.  
    98.   A1.hide();
    99.   getch();
    100.   closegraph();
    101.    }
     
  2. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Эта программа просто выводит треугольник, вписанный в окружность с заданными координатами центра, цвета, размером..А что из себя будет представлять тело метода, реализующего перемещение этого объекта по экрану?Наверное, это будет цикл, внутри которого каждую координату центра фигуры мы увеличиваем на одну и ту же величину..брр-но как это записать?

    Код (Text):
    1. for(i=0;i<10;i++)
    2.   trecirc(int xi+i, int yi+i, int r
    ):
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Забаньте уже её. Смотреть уже сил никаких на это нет.
     
  4. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Booster
    спасибо, Booster )Но я никогда бы в жизни и не сказала, что этот код правильный
     
  5. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    2 Luna
    А что сложного? Прячем объект (т.е закрашиваем его цветом фона, далее устанавливаем новые координаты, далее снова закрашиваем объект с новыми координатами, но уже цветом (foreground)
     
  6. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Microedition
    Сложно, так как надо организовать много перемещений..и непонятно, как программо написать в цикле изменение координат объекта..%)
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Luna
    Раз вы не понимаете, значит программу писали не вы. Раз так, то вам не возможно что-то объяснить, можно только сделать за вас. Вам дорога в комерц, это сбережёт ваше драгоценное время, которое вы потратите на более полезные занятия.