Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.76 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <iostream.h>
  3. #include <graphics.h>
  4.  
  5. class Fon
  6. {
  7.  public:
  8.   Fon();
  9. };
  10.  
  11. Fon::Fon()
  12. {
  13.   setfillstyle(6,GREEN);
  14.   bar(0,0,getmaxx(),getmaxy());
  15.  
  16.   setfillstyle(1,1);
  17.   bar(0,0,getmaxx(),150);
  18.   setfillstyle(1,14);
  19.   fillellipse(600,50,50,50);
  20.   setfillstyle(1,1);
  21.   fillellipse(500,390,200,50);
  22. };
  23.  
  24. class Tree
  25. {
  26.  
  27.  int x,y;
  28. public:
  29.    Tree(int X,int Y) {x=X;y=Y;}
  30.   void ShowTree();
  31. };
  32.  
  33. /*ДОБАВИЛИ КЛАСС ДОМ*/
  34. class Dom
  35. {
  36.  int x,y; //Координаты начала рисования дома
  37. public:
  38.   Dom(int X,int Y) {x=X;y=Y;} //Конструктор класса принимает параметры
  39.   void ShowHome(); //Метод класса, рисующий Дом
  40. };
  41.  
  42. void Tree::ShowTree()
  43. {
  44.   y=y+getmaxy();
  45. //Рисую ствол и ветви
  46.   moveto(x,y-150);                        lineto(x,y-300);
  47.   moveto(x,y-(150+75));               lineto(x+70,y-(150+75)-70);
  48.   moveto(x+20,y-(150+75)-20);    lineto(x+70,y-(150+75)-20);
  49.   moveto(x+40,y-(150+75)-40);    lineto(x+45,y-(150+75)-70);
  50.  
  51.   moveto(x,y-(150+75)-40);       lineto(x+20,y-(150+75)-65);
  52.   moveto(x,y-(150+75)-10);       lineto(x-30,y-(150+75)-20);
  53.   moveto(x,y-(150+75)-30);       lineto(x-25,y-(150+75)-40);
  54.   //Рисую листву
  55.  setfillstyle(1,GREEN);
  56.  fillellipse(x,y-300,5,5);
  57.  fillellipse(x+20,y-290,7,7);
  58.  fillellipse(x+45,y-300,3,7);
  59.  fillellipse(x+75,y-300,10,10);
  60.  fillellipse(x+20,y-255,5,10);
  61.  fillellipse(x+70,y-247,10,10);
  62.  fillellipse(x-30,y-247,10,10);
  63.  fillellipse(x-30,y-267,7,7);
  64.  fillellipse(x-15,y-270,5,9);
  65. }
  66.  
  67. /*МЕТОД РИСОВАНИЯ ДОМА ОПИСАН ВНЕ КЛАССА*/
  68. void Dom::ShowHome()
  69. {
  70.  
  71.  setfillstyle(3,3); //Установка стиля заливки
  72.  bar3d(x-150,y,x-50,y-120,2,1); //Рисую фасад дома
  73.  
  74.  //Треугольная часть крыши
  75.  int poly[8]; //3 вершины*2 = 6. Нужна точка замыкания 6+2 =8
  76.  poly[0]=x-155;   poly[1]=y-120;   //A(x,y)
  77.  poly[2]=x-100;   poly[3]=y-200;   //B(x,y)
  78.  poly[4]=x-45;    poly[5]=y-120;   //C(x,y)
  79.  poly[6]=poly[0];poly[7]=poly[1]; //Замыкание контура
  80.  
  81.  setfillstyle(5,1); //Установка стиля заливки
  82.  fillpoly(3,poly); //Рисую залитый треугольник
  83.  
  84.  //Параллелограммная часть крыши
  85.  
  86.  /*Поиск точек для параллелограмма
  87.  outtextxy(x-45,y-120,"A");
  88.  outtextxy(x+100,y-120,"B");
  89.  outtextxy(x-100,y-200,"C");
  90.  outtextxy(x+100-45,y-200,"D");  */
  91.  
  92.  int poly1[10]; //4 точки параллелограма*2=8 + точка для замыкания =8+2=10
  93.  poly1[0]=x-45;          poly1[1]=y-120; //A
  94.  poly1[2]=x+100;       poly1[3]=y-120; //B
  95.  poly1[4]=x+100-45;  poly1[5]=y-200; //D
  96.  poly1[6]=x-100;        poly1[7]=y-200; //C
  97.  poly1[8]=poly1[0];    poly1[9]=poly1[1]; //Замыкание контура
  98.  
  99.  setfillstyle(2,1);//Установка стиля заливки
  100.  fillpoly(4,poly1); //Рисование залитого четырехугольника
  101.  
  102.  /*БОКОВАЯ СТЕНА ДОМА*/
  103.  /*Поиск точек
  104.  outtextxy(x-45,y,"A");
  105.  outtextxy(x+100,y,"B");
  106.  outtextxy(x+100,y-120,"C");
  107.  outtextxy(x-45,y-120,"D");   */
  108.  
  109.  setfillstyle(10,2);  //Установка стиля заливки
  110.  bar3d(x-45,y,x+100,y-120,1,1); //Залитый прямоугольник
  111.  
  112.  //ПОИСК И РИСОВАНИЕ ОКОН
  113.  /*outtextxy(x-30,y-50,"A");
  114.  outtextxy(x-30,y-80,"B");
  115.  outtextxy(x,y-80,"C"); */
  116.  
  117.  setfillstyle(1,7); //Установка стиля заливки
  118.  bar3d(x-30,y-50,x,y-80,1,1); //Рисование первого окна
  119.  
  120.  /*outtextxy(x+15,y-50,"A");
  121.  outtextxy(x+45,y-80,"B");*/
  122.  bar3d(x+15,y-50,x+45,y-80,1,1); //Рисование второго окна
  123.  
  124.  /*outtextxy(x+60,y-50,"A");
  125.  outtextxy(x+90,y-80,"B"); */
  126.  setfillstyle(5,YELLOW); //Установка стиля заливки
  127.  bar3d(x+60,y-50,x+90,y-80,1,1); //Рисование третьего окна
  128.  
  129.  /*ПОИСК КООРДИНАТ И РИСОВАНИЕ ДВЕРЕЙ
  130.  outtextxy(x-70,y,"A");
  131.  outtextxy(x-100,y-70,"B");*/
  132. setfillstyle(2,6); //Установка стиля заливки
  133. bar3d(x-70,y,x-100,y-70,1,1); //Рисование двери
  134. }
  135.  
  136.                        
  137. void main()
  138. {
  139.   int gm,gd=DETECT;
  140.   initgraph(&gd,&gm,"");
  141.  
  142.   Fon Fon1; //Рисование фона с помощью конструктора
  143.  
  144.   Tree Derevo1(50,50); //Создание объекта типа Дерево
  145.   Derevo1.ShowTree(); //Рисования дерева
  146.  
  147.   Dom Dom1(400,300); //Создание объекта типа Дом
  148.   Dom1.ShowHome(); //Рисование дома
  149.  
  150.  
  151.   cin.get();
  152.   closegraph();
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement