hozer

[OOP]VyntuLab3 (P1)

Oct 23rd, 2014
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <cctype>
  3. using namespace std;
  4.  
  5. #define SCREEN_W 1024
  6. #define SCREEN_H 748
  7.  
  8. struct ModelWindow
  9. {
  10.     char *title;
  11.     int x, y, width, height, color, visible, border;
  12.  
  13.     void init()
  14.     {
  15.         title = new char[64];
  16.         x = 0; y = 0; width = 800; height = 600; color = 0;
  17.         visible = 1; border = 1;
  18.     }
  19.  
  20.     void input()
  21.     {
  22.         cout << "input x y: "; cin >> x >> y;
  23.         cout << "input width height: "; cin >> width >> height;
  24.         cout << "input color: "; cin >> color;
  25.         cout << "input visible mode: "; cin >> visible;
  26.         cout << "input border mode: "; cin >> border;
  27.     }
  28.  
  29.     void output()
  30.     {
  31.         cout << toPChar() << endl;
  32.     }
  33.  
  34.     char *toPChar()
  35.     {
  36.         char *r = new char[512];
  37.         char buffer[20];
  38.         strcpy(r, "x = "); strcat(r, itoa(x, buffer, 10));
  39.         strcat(r, " y = "); strcat(r, itoa(y, buffer, 10));
  40.         strcat(r, "\nwidth = "); strcat(r, itoa(width, buffer, 10));
  41.         strcat(r, " height = "); strcat(r, itoa(height, buffer, 10));
  42.         strcat(r, "\ncolor = "); strcat(r, itoa(color, buffer, 10));
  43.         strcat(r, "\nvisible = "); strcat(r, visible == 1 ? "true" : "false");
  44.         strcat(r, "\nborder = "); strcat(r, border == 1 ? "true" : "false");
  45.  
  46.         return r;
  47.     }
  48. };
  49.  
  50. void moveHorizontally(ModelWindow &m, int p)
  51. {
  52.     m.x = p;
  53.     if (m.x + m.width >= SCREEN_W) m.x = SCREEN_W - m.width;
  54.     else if (m.x + m.width <= 0) m.x = 0;
  55. }
  56.  
  57. void moveVertically(ModelWindow &m, int p)
  58. {
  59.     m.y = p;
  60.     if (m.y + m.height >= SCREEN_H) m.y = SCREEN_H - m.height;
  61.     else if (m.y + m.height <= 0) m.y = 0;
  62. }
  63.  
  64. void setSize(ModelWindow &m, int w)
  65. {
  66.     m.width = w;
  67.     if (m.x + m.width >= SCREEN_W) m.width -= m.x + m.width + SCREEN_W;
  68.     else if (m.x + m.width <= 0) m.width = 0;
  69. }
  70.  
  71. void setSize(ModelWindow &m, int w, int h)
  72. {
  73.     m.width = w;
  74.     m.height = h;
  75.     if (m.x + m.width >= SCREEN_W) m.width -= m.x + m.width + SCREEN_W;
  76.     else if (m.x + m.width <= 0) m.width = 0;
  77.  
  78.     if (m.y + m.height >= SCREEN_H) m.height -= m.y + m.height + SCREEN_H;
  79.     else if (m.y + m.height <= 0) m.height = 0;
  80. }
  81.  
  82. void setColor(ModelWindow &m, int color)
  83. {
  84.     m.color = color;
  85. }
  86.  
  87. void setVisibility(ModelWindow &m, int mode)
  88. {
  89.     m.visible = mode;
  90. }
  91.  
  92. int getVisibility(ModelWindow &m)
  93. {
  94.     return m.visible;
  95. }
  96.  
  97. void setBorder(ModelWindow &m, int mode)
  98. {
  99.     m.border = mode;
  100. }
  101.  
  102. int getBorder(ModelWindow m)
  103. {
  104.     return m.border;
  105. }
  106.  
  107. void main()
  108. {
  109.     ModelWindow m;
  110.     m.init();
  111.     m.input();
  112.     m.output();
  113.  
  114.     cin.ignore();
  115.     cin.get();
  116. }
  117.  
  118.  
  119. /*Визначити тип TModelWindow для роботи з моделями екранних вікон.
  120. Як поля задаються: заголовок вікна, координати верхнього лівого кута,
  121. розмір по горизонталі, розмір по вертикалі, колір вікна, стан "видиме/невидиме",
  122. стан "з рамкою/без рамки". Координати і розміри вказуються в цілих числах.
  123. Реалізувати операції: переміщення вікна по горизонталі, по вертикалі;
  124. зміна висоти та/або ширини вікна, зміна кольору; зміна стану, опитування стану.
  125. Операції переміщення та зміни розміру повинні виконувати перевірку на перетинання границь екрана.
  126. Функція виведення на екран має демонструвати стан полів об’єкта. */
Advertisement
Add Comment
Please, Sign In to add comment