Punchcard

tile.h

Mar 27th, 2024
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.98 KB | Source Code | 0 0
  1. #pragma once
  2. #include <array>
  3. #include <cassert>
  4. #include <string>
  5.  
  6. #include "geom.h"
  7.  
  8. class Tile {
  9. public:
  10.     // Размер тайла 8*8 пикселей.
  11.     constexpr static int SIZE = 8;
  12.  
  13.     // Конструктор по умолчанию. Заполняет тайл указанным цветом.
  14.     Tile(char color = ' ') noexcept {
  15.         /* Реализуйте недостающий код самостоятельно. */
  16.         std::string s(SIZE, color);
  17.         pixels_ = {SIZE, s};
  18.         // -------------- не удалять ------------
  19.         assert(instance_count_ >= 0);
  20.         ++instance_count_;  // Увеличиваем счётчик тайлов (для целей тестирования).
  21.         // -------------- не удалять ------------
  22.     }
  23.  
  24.     Tile(const Tile& other) {
  25.         /* Реализуйте недостающий код самостоятельно. */
  26.         pixels_ = other.pixels_;
  27.         // -------------- не удалять ------------
  28.         assert(instance_count_ >= 0);
  29.         ++instance_count_;  // Увеличиваем счётчик тайлов (для целей тестирования).
  30.         // -------------- не удалять ------------
  31.     }
  32.  
  33.     ~Tile() {
  34.         // -------------- Не удалять ------------
  35.         --instance_count_;  // Уменьшаем счётчик тайлов.
  36.         assert(instance_count_ >= 0);
  37.         // -------------- не удалять ------------
  38.     }
  39.  
  40.     /**
  41.      * Изменяет цвет пикселя тайла.
  42.      * Если координаты выходят за пределы тайла, метод ничего не делает.
  43.      */
  44.     void SetPixel(Point p, char color) noexcept {
  45.         /* Реализуйте недостающий код самостоятельно. */
  46.         if (IsPointInSize(p, {SIZE, SIZE})) {
  47.             pixels_.at(p.y).at(p.x) = color;       
  48.         }
  49.     }
  50.  
  51.     /**
  52.      * Возвращает цвет пикселя. Если координаты выходят за пределы тайла, возвращается пробел.
  53.      */
  54.     char GetPixel(Point p) const noexcept {
  55.         /* Реализуйте недостающий функционал самостоятельно. */
  56.         if (!IsPointInSize(p, {SIZE, SIZE})) return ' ';
  57.         return pixels_.at(p.y).at(p.x);
  58.     }
  59.  
  60.     // Возвращает количество экземпляра класса Tile в программе.
  61.     static int GetInstanceCount() noexcept {
  62.         // -------------- не удалять ------------
  63.         return instance_count_;
  64.         // -------------- не удалять ------------
  65.     }
  66.  
  67. private:
  68.     // -------------- не удалять ------------
  69.     inline static int instance_count_ = 0;
  70.     // -------------- не удалять ------------
  71.  
  72.     /* Разместите здесь поля для хранения пикселей тайла. */
  73.     std::vector<std::string> pixels_;
  74.  
  75. };
Advertisement
Add Comment
Please, Sign In to add comment