Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <SFML\Graphics\RectangleShape.hpp>
- class Cell: public sf::RectangleShape
- {
- public:
- Cell(size_t width, size_t height, size_t row, size_t column, bool state);
- void set_neighborhood(size_t width, size_t height);
- const std::vector<int> get_neighborhood();
- bool isAlive();
- bool isNewAlive();
- void setNewState(bool state);
- void setState(bool state);
- void updateState();
- private:
- static size_t ID;
- size_t number;
- size_t row;
- size_t column;
- bool state;
- bool newState;
- std::vector<int> neighborhood;
- };
- // from .cpp:
- void Cell::set_neighborhood(size_t width, size_t height) {
- if (row == 0 && column == 0) {
- neighborhood.push_back(number + 1);
- neighborhood.push_back(number + width);
- neighborhood.push_back(number + (width + 1));
- }
- else if (row == 0 && column == width-1) { //-1 becaouse we iterate from 0
- neighborhood.push_back(number - 1);
- neighborhood.push_back(number + (width-1));
- neighborhood.push_back(number + width);
- }
- else if (row == height - 1 && column == 0) {
- neighborhood.push_back(number - width);
- neighborhood.push_back(number - (width-1));
- neighborhood.push_back(number + 1);
- }
- else if (row == height - 1 && column == width-1) {
- neighborhood.push_back(number - (width+1));
- neighborhood.push_back(number - width);
- neighborhood.push_back(number - 1);
- }
- else if (row == 0) {
- neighborhood.push_back(number - 1);
- neighborhood.push_back(number + 1);
- neighborhood.push_back(number + (width - 1));
- neighborhood.push_back(number + width);
- neighborhood.push_back(number + (width + 1));
- }
- else if (column == 0) {
- neighborhood.push_back(number - width);
- neighborhood.push_back(number - (width - 1));
- neighborhood.push_back(number + 1);
- neighborhood.push_back(number + width);
- neighborhood.push_back(number + (width + 1));
- }
- else if (column == height-1) {
- neighborhood.push_back(number - (width + 1));
- neighborhood.push_back(number - width);
- neighborhood.push_back(number - 1);
- neighborhood.push_back(number + (width - 1));
- neighborhood.push_back(number + width);
- }
- else if (row == width - 1) {
- neighborhood.push_back(number - (width + 1));
- neighborhood.push_back(number - width);
- neighborhood.push_back(number - (width - 1));
- neighborhood.push_back(number - 1);
- neighborhood.push_back(number + 1);
- }
- else {
- neighborhood.push_back(number - (width + 1));
- neighborhood.push_back(number - width);
- neighborhood.push_back(number - (width - 1));
- neighborhood.push_back(number - 1);
- neighborhood.push_back(number + 1);
- neighborhood.push_back(number + (width - 1));
- neighborhood.push_back(number + width);
- neighborhood.push_back(number + (width + 1));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement