Advertisement
bubuzaka

наследование долбанное

May 31st, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include "graphics.h"
  4. #include <cstdlib>
  5. #include <ctime>
  6. #include <unistd.h>
  7. #include <cmath>
  8.  
  9. using namespace std;
  10.  
  11. class tPoint
  12. {
  13. protected:
  14. int x;
  15. int y;
  16. int color;
  17. public:
  18. tPoint();
  19. tPoint(int x1, int y1);
  20. tPoint(int x1, int y1, int col);
  21. //tPoint(tPoint &point);
  22. ~tPoint();
  23. void draw();
  24. void move (int dx, int dy);
  25. void hide();
  26. };
  27.  
  28. class tCircle : public tPoint
  29. {
  30. protected:
  31. double r;
  32. public:
  33. tCircle();
  34. tCircle(int x1, int y1, double r1);
  35. tCircle(int x1, int y1, double r1, int col);
  36. //tCircle(tCircle &circle);
  37. ~tCircle();
  38. void draw();
  39. void hide();
  40.  
  41. };
  42.  
  43. class tLine : public tPoint
  44. {
  45. protected:
  46. int dx;
  47. int dy;
  48. public:
  49. tLine();
  50. tLine(int x1, int y1, int dx1, int dy1);
  51. tLine(int x1, int y1, int dx1, int dy1, int col);
  52. //tLine(tLine &line);
  53. ~tLine();
  54. void draw();
  55. void hide();
  56. void rotate (double fi);
  57. };
  58.  
  59. class tSquare : public tLine
  60. {
  61. public:
  62. tSquare();
  63. tSquare(int x1, int y1, int dx1, int dy1);
  64. tSquare(int x1, int y1, int dx1, int dy1, int col);
  65. ~tSquare();
  66. void draw();
  67. void hide();
  68. // void rotate(double fi);
  69. };
  70.  
  71. class tRomb : public virtual tSquare
  72. {
  73. protected:
  74. double a;
  75. public:
  76. tRomb();
  77. tRomb (int x1, int y1, int dx1, int dy1, double fi);
  78. tRomb (int x1, int y1, int dx1, int dy1, double fi, int col);
  79. ~tRomb();
  80. void draw();
  81. void hide();
  82. };
  83.  
  84. class tRect : public virtual tSquare
  85. {
  86. protected:
  87. double b;
  88. public:
  89. tRect();
  90. tRect(int x1, int y1, int dx1, int dy1, double fi);
  91. tRect(int x1, int y1, int dx1, int dy1, double fi, int col);
  92. ~tRect();
  93. void draw();
  94. void hide();
  95. };
  96.  
  97. /*class tParallel : public tRomb, public tRect
  98. {
  99.  
  100. };*/
  101.  
  102. //tPoint operators
  103.  
  104. tPoint::tPoint(){
  105. x=0;
  106. y=0;
  107. color=13;
  108. }
  109.  
  110. tPoint::tPoint(int x1, int y1){
  111. x=x1;
  112. y=y1;
  113. }
  114.  
  115. tPoint::tPoint(int x1, int y1, int col){
  116. x=x1;
  117. y=y1;
  118. color=col;
  119. }
  120.  
  121. tPoint::~tPoint(){
  122. }
  123.  
  124. void tPoint::draw(){
  125. putpixel(x, y, color);
  126. }
  127.  
  128. void tPoint::hide(){
  129. putpixel(x,y,0);
  130. }
  131.  
  132. //tCircle operators
  133.  
  134. tCircle::tCircle():tPoint(){
  135. r=1;
  136. }
  137.  
  138. tCircle::tCircle(int x1, int y1, double r1):tPoint(x1, y1){
  139. r=r1;
  140. }
  141.  
  142. tCircle::tCircle(int x1, int y1, double r1, int col):tPoint(x1, y1, col){
  143. r=r1;
  144. }
  145.  
  146. tCircle::~tCircle(){
  147. }
  148.  
  149. void tCircle::draw(){
  150. setcolor(color);
  151. circle(x, y, r);
  152. }
  153.  
  154. void tCircle::hide(){
  155. setcolor(0);
  156. circle(x, y, r);
  157. }
  158.  
  159. //tLine operators
  160.  
  161. tLine::tLine():tPoint(){
  162. dx=10;
  163. dy=10;
  164. }
  165.  
  166. tLine::tLine(int x1, int y1, int dx1, int dy1):tPoint(x1, y1){
  167. dx=dx1;
  168. dy=dy1;
  169. }
  170.  
  171. tLine::tLine(int x1, int y1, int dx1, int dy1, int col):tPoint(x1, y1, col){
  172. dx=dx1;
  173. dy=dy1;
  174. }
  175.  
  176. tLine::~tLine(){
  177. }
  178.  
  179. void tLine::draw(){
  180. setcolor(color);
  181. line(x, y, x+dx, y+dy);
  182. }
  183.  
  184. void tLine::hide(){
  185. setcolor(0);
  186. line(x, y, x+dx, y+dy);
  187. }
  188.  
  189. void tLine::rotate (double fi){
  190. int dx1 = dx;
  191. int dy1 = dy;
  192. dx = (dx1*cos(fi) - dy1*sin(fi));
  193. dy = (dy1*cos(fi) + dx1*sin(fi));
  194. }
  195.  
  196. //tSquare operators
  197.  
  198. tSquare::tSquare():tLine(){};
  199. tSquare::tSquare(int x1, int y1, int dx1, int dy1):tLine(x1, y1, dx1, dy1){};
  200. tSquare::tSquare(int x1, int y1, int dx1, int dy1, int col):tLine(x1, y1, dx1, dy1, col){};
  201. tSquare::~tSquare(){};
  202.  
  203.  
  204. void tSquare::draw(){
  205. setcolor(color);
  206. line(x, y, x+dx, y+dy);
  207. line (x+dx, y+dy, x, y+dy+dy);
  208. line (x, y+dy+dy, x-dx, y+dy);
  209. line (x-dx, y+dy, x, y);
  210. }
  211.  
  212. void tSquare::hide(){
  213. setcolor(0);
  214. line(x, y, x+dx, y+dy);
  215. line (x+dx, y+dy, x, y+dy+dy);
  216. line (x, y+dy+dy, x-dx, y+dy);
  217. line (x-dx, y+dy, x, y);
  218. }
  219.  
  220. //tRomb operators
  221.  
  222. tRomb::tRomb():tSquare(){
  223. a=0.7345;
  224. }
  225.  
  226. tRomb::tRomb (int x1, int y1, int dx1, int dy1, double fi):tSquare(x1, y1, dx1, dy1){
  227. a=fi;
  228. }
  229.  
  230. tRomb::tRomb (int x1, int y1, int dx1, int dy1, double fi, int col):tSquare(x1, y1, dx1, dy1, col){
  231. a=fi;
  232. }
  233.  
  234. tRomb::~tRomb(){};
  235.  
  236. void tRomb::draw(){
  237. setcolor(color);
  238. int x1 = (dx)*cos(a) + (dy)*sin(a) + x;
  239. int y1 = (dy)*cos(a) - (dx)*sin(a) + y;
  240. int x2 = x1 + dx;
  241. int y2 = y1 + dy;
  242. line(x, y, x+dx, y+dy);
  243. line(x, y, x1, y1);
  244. line(x1, y1, x2, y2);
  245. line(x+dx, y+dy, x2, y2);
  246. }
  247.  
  248. void tRomb::hide(){
  249. setcolor(0);
  250. int x1 = (dx)*cos(a) + (dy)*sin(a) + x;
  251. int y1 = (dy)*cos(a) - (dx)*sin(a) + y;
  252. int x2 = x1 + dx;
  253. int y2 = y1 + dy;
  254. line(x, y, x+dx, y+dy);
  255. line(x, y, x1, y1);
  256. line(x1, y1, x2, y2);
  257. line(x+dx, y+dy, x2, y2);
  258. }
  259.  
  260. //tRect operators
  261.  
  262. tRect::tRect():tSquare(){
  263. b=3.14;
  264. }
  265.  
  266. tRect::tRect(int x1, int y1, int dx1, int dy1, double fi):tSquare(x1, y1, dx1, dy1){
  267. b=fi;
  268. }
  269.  
  270. tRect::tRect(int x1, int y1, int dx1, int dy1, double fi, int col):tSquare(x1, y1, dx1, dy1, col){
  271. b=fi;
  272. }
  273.  
  274. tRect::~tRect(){};
  275.  
  276. void tRect::draw(){
  277. setcolor(color);
  278. double delit = b/sqrt(dy*dy + dx*dx);
  279. int x1 = (int)(dy*delit*(-1));
  280. int y1 = (int)(dx*delit);
  281. x1 = x1 + x;
  282. y1 = y1 + y;
  283. int x2 = x1 + dx;
  284. int y2 = y1 + dy;
  285. line(x, y, x1, y1);
  286. line(x1, y1, x2, y2);
  287. line(x2, y2, x+dx, y+dy);
  288. line (x+dx, y+dy, x, y);
  289. }
  290.  
  291. void tRect::hide(){
  292. setcolor(0);
  293. double delit = b/sqrt(dy*dy + dx*dx);
  294. int x1 = (int)(dy*delit*(-1));
  295. int y1 = (int)(dx*delit);
  296. x1 = x1 + x;
  297. y1 = y1 + y;
  298. int x2 = x1 + dx;
  299. int y2 = y1 + dy;
  300. line(x, y, x1, y1);
  301. line(x1, y1, x2, y2);
  302. line(x2, y2, x+dx, y+dy);
  303. line (x+dx, y+dy, x, y);
  304. }
  305.  
  306. int main ()
  307. {
  308. int gddriver = DETECT, gmode, errorcode;
  309.  
  310. initgraph(&gddriver, &gmode, "");
  311.  
  312. /*tPoint A;
  313. A.draw();
  314.  
  315. tCircle B(150, 150, 50, 11);
  316. B.draw();
  317.  
  318. tLine C(300, 300, 50, 50, 10);
  319. C.draw();
  320. C.rotate(1.789);
  321. C.draw();
  322.  
  323. tSquare D(500, 500, 50, 50, 9);
  324. D.draw();
  325. D.rotate(3.14);
  326. D.draw();
  327.  
  328. tRomb E(200, 500, 50, 50, 0.7, 14);
  329. E.draw();
  330. E.rotate(3.14);
  331. E.draw();*/
  332.  
  333. tRect F(600, 150, 50, 70, 0.7, 13);
  334. F.draw();
  335. tRect F1(600, 150, 50,70, 0.7, 12);
  336. F1.rotate(0.7);
  337. F1.draw();
  338.  
  339. getch();
  340. closegraph();
  341.  
  342. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement