Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <iostream.h>
- #include <graphics.h>
- class Fon
- {
- public:
- Fon();
- };
- Fon::Fon()
- {
- setfillstyle(6,GREEN);
- bar(0,0,getmaxx(),getmaxy());
- setfillstyle(1,1);
- bar(0,0,getmaxx(),150);
- setfillstyle(1,14);
- fillellipse(600,50,50,50);
- setfillstyle(1,1);
- fillellipse(500,390,200,50);
- };
- class Tree
- {
- int x,y;
- public:
- Tree(int X,int Y) {x=X;y=Y;}
- void ShowTree();
- };
- /*ДОБАВИЛИ КЛАСС ДОМ*/
- class Dom
- {
- int x,y; //Координаты начала рисования дома
- public:
- Dom(int X,int Y) {x=X;y=Y;} //Конструктор класса принимает параметры
- void ShowHome(); //Метод класса, рисующий Дом
- };
- void Tree::ShowTree()
- {
- y=y+getmaxy();
- //Рисую ствол и ветви
- moveto(x,y-150); lineto(x,y-300);
- moveto(x,y-(150+75)); lineto(x+70,y-(150+75)-70);
- moveto(x+20,y-(150+75)-20); lineto(x+70,y-(150+75)-20);
- moveto(x+40,y-(150+75)-40); lineto(x+45,y-(150+75)-70);
- moveto(x,y-(150+75)-40); lineto(x+20,y-(150+75)-65);
- moveto(x,y-(150+75)-10); lineto(x-30,y-(150+75)-20);
- moveto(x,y-(150+75)-30); lineto(x-25,y-(150+75)-40);
- //Рисую листву
- setfillstyle(1,GREEN);
- fillellipse(x,y-300,5,5);
- fillellipse(x+20,y-290,7,7);
- fillellipse(x+45,y-300,3,7);
- fillellipse(x+75,y-300,10,10);
- fillellipse(x+20,y-255,5,10);
- fillellipse(x+70,y-247,10,10);
- fillellipse(x-30,y-247,10,10);
- fillellipse(x-30,y-267,7,7);
- fillellipse(x-15,y-270,5,9);
- }
- /*МЕТОД РИСОВАНИЯ ДОМА ОПИСАН ВНЕ КЛАССА*/
- void Dom::ShowHome()
- {
- setfillstyle(3,3); //Установка стиля заливки
- bar3d(x-150,y,x-50,y-120,2,1); //Рисую фасад дома
- //Треугольная часть крыши
- int poly[8]; //3 вершины*2 = 6. Нужна точка замыкания 6+2 =8
- poly[0]=x-155; poly[1]=y-120; //A(x,y)
- poly[2]=x-100; poly[3]=y-200; //B(x,y)
- poly[4]=x-45; poly[5]=y-120; //C(x,y)
- poly[6]=poly[0];poly[7]=poly[1]; //Замыкание контура
- setfillstyle(5,1); //Установка стиля заливки
- fillpoly(3,poly); //Рисую залитый треугольник
- //Параллелограммная часть крыши
- /*Поиск точек для параллелограмма
- outtextxy(x-45,y-120,"A");
- outtextxy(x+100,y-120,"B");
- outtextxy(x-100,y-200,"C");
- outtextxy(x+100-45,y-200,"D"); */
- int poly1[10]; //4 точки параллелограма*2=8 + точка для замыкания =8+2=10
- poly1[0]=x-45; poly1[1]=y-120; //A
- poly1[2]=x+100; poly1[3]=y-120; //B
- poly1[4]=x+100-45; poly1[5]=y-200; //D
- poly1[6]=x-100; poly1[7]=y-200; //C
- poly1[8]=poly1[0]; poly1[9]=poly1[1]; //Замыкание контура
- setfillstyle(2,1);//Установка стиля заливки
- fillpoly(4,poly1); //Рисование залитого четырехугольника
- /*БОКОВАЯ СТЕНА ДОМА*/
- /*Поиск точек
- outtextxy(x-45,y,"A");
- outtextxy(x+100,y,"B");
- outtextxy(x+100,y-120,"C");
- outtextxy(x-45,y-120,"D"); */
- setfillstyle(10,2); //Установка стиля заливки
- bar3d(x-45,y,x+100,y-120,1,1); //Залитый прямоугольник
- //ПОИСК И РИСОВАНИЕ ОКОН
- /*outtextxy(x-30,y-50,"A");
- outtextxy(x-30,y-80,"B");
- outtextxy(x,y-80,"C"); */
- setfillstyle(1,7); //Установка стиля заливки
- bar3d(x-30,y-50,x,y-80,1,1); //Рисование первого окна
- /*outtextxy(x+15,y-50,"A");
- outtextxy(x+45,y-80,"B");*/
- bar3d(x+15,y-50,x+45,y-80,1,1); //Рисование второго окна
- /*outtextxy(x+60,y-50,"A");
- outtextxy(x+90,y-80,"B"); */
- setfillstyle(5,YELLOW); //Установка стиля заливки
- bar3d(x+60,y-50,x+90,y-80,1,1); //Рисование третьего окна
- /*ПОИСК КООРДИНАТ И РИСОВАНИЕ ДВЕРЕЙ
- outtextxy(x-70,y,"A");
- outtextxy(x-100,y-70,"B");*/
- setfillstyle(2,6); //Установка стиля заливки
- bar3d(x-70,y,x-100,y-70,1,1); //Рисование двери
- }
- void main()
- {
- int gm,gd=DETECT;
- initgraph(&gd,&gm,"");
- Fon Fon1; //Рисование фона с помощью конструктора
- Tree Derevo1(50,50); //Создание объекта типа Дерево
- Derevo1.ShowTree(); //Рисования дерева
- Dom Dom1(400,300); //Создание объекта типа Дом
- Dom1.ShowHome(); //Рисование дома
- cin.get();
- closegraph();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement