Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.70 KB | None | 0 0
  1. #pragma once
  2. #include <SFML\Graphics\RectangleShape.hpp>
  3. class Cell: public sf::RectangleShape
  4. {
  5. public:
  6.     Cell(size_t width, size_t height, size_t row, size_t column, bool state);
  7.     void set_neighborhood(size_t width, size_t height);
  8.     const std::vector<int> get_neighborhood();
  9.     bool isAlive();
  10.     bool isNewAlive();
  11.     void setNewState(bool state);
  12.     void setState(bool state);
  13.     void updateState();
  14. private:
  15.     static size_t ID;
  16.     size_t number;
  17.     size_t row;
  18.     size_t column;
  19.     bool state;
  20.     bool newState;
  21.     std::vector<int> neighborhood;
  22. };
  23.  
  24. // from .cpp:
  25.  
  26. void Cell::set_neighborhood(size_t width, size_t height) {
  27.     if (row == 0 && column == 0) {
  28.         neighborhood.push_back(number + 1);
  29.         neighborhood.push_back(number + width);
  30.         neighborhood.push_back(number + (width + 1));
  31.  
  32.     }
  33.     else if (row == 0 && column == width-1) { //-1 becaouse we iterate from 0
  34.         neighborhood.push_back(number - 1);
  35.         neighborhood.push_back(number + (width-1));
  36.         neighborhood.push_back(number + width);
  37.     }
  38.     else if (row == height - 1 && column == 0) {
  39.         neighborhood.push_back(number - width);
  40.         neighborhood.push_back(number - (width-1));
  41.         neighborhood.push_back(number + 1);
  42.     }
  43.     else if (row == height - 1 && column == width-1) {
  44.         neighborhood.push_back(number - (width+1));
  45.         neighborhood.push_back(number - width);
  46.         neighborhood.push_back(number - 1);
  47.     }
  48.     else if (row == 0) {
  49.         neighborhood.push_back(number - 1);
  50.         neighborhood.push_back(number + 1);
  51.         neighborhood.push_back(number + (width - 1));
  52.         neighborhood.push_back(number + width);
  53.         neighborhood.push_back(number + (width + 1));
  54.     }
  55.     else if (column == 0) {
  56.         neighborhood.push_back(number - width);
  57.         neighborhood.push_back(number - (width - 1));
  58.         neighborhood.push_back(number + 1);
  59.         neighborhood.push_back(number + width);
  60.         neighborhood.push_back(number + (width + 1));
  61.     }
  62.     else if (column == height-1) {
  63.         neighborhood.push_back(number - (width + 1));
  64.         neighborhood.push_back(number - width);
  65.         neighborhood.push_back(number - 1);
  66.         neighborhood.push_back(number + (width - 1));
  67.         neighborhood.push_back(number + width);
  68.     }
  69.     else if (row == width - 1) {
  70.         neighborhood.push_back(number - (width + 1));
  71.         neighborhood.push_back(number - width);
  72.         neighborhood.push_back(number - (width - 1));
  73.         neighborhood.push_back(number - 1);
  74.         neighborhood.push_back(number + 1);
  75.     }
  76.     else {
  77.         neighborhood.push_back(number - (width + 1));
  78.         neighborhood.push_back(number - width);
  79.         neighborhood.push_back(number - (width - 1));
  80.         neighborhood.push_back(number - 1);
  81.         neighborhood.push_back(number + 1);
  82.         neighborhood.push_back(number + (width - 1));
  83.         neighborhood.push_back(number + width);
  84.         neighborhood.push_back(number + (width + 1));
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement