-
Notifications
You must be signed in to change notification settings - Fork 0
/
Cell.cpp
66 lines (57 loc) · 1.03 KB
/
Cell.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <SFML/Graphics.hpp>
#include <iostream>
#include "Headers/Grid.hpp"
#include "Headers/Cell.hpp"
Cell::Cell()
{
}
Cell::Cell(int i, int j, int base_x, int base_y, float size)
{
x = i;
y = j;
alive = rand() % 2;
shape = sf::RectangleShape(sf::Vector2f(size, size));
shape.setPosition(base_x + i * size, base_y + j * size);
shape.setOutlineThickness(2.0f);
shape.setOutlineColor(sf::Color(255, 255, 255));
}
void Cell::render()
{
if (alive)
{
shape.setFillColor(sf::Color(255, 255, 255, 150));
}
else
{
shape.setFillColor(sf::Color(0, 0, 0, 0));
}
}
void Cell::setNeighbors(int _neighbors)
{
neighbors = _neighbors;
}
void Cell::toggle()
{
alive = !alive;
render();
}
void Cell::kill()
{
alive = false;
render();
}
void Cell::update()
{
if (neighbors > 3 && alive)
{
alive = false;
}
else if (neighbors == 3 and !alive)
{
alive = true;
}
else if (neighbors < 2 && alive)
{
alive = false;
}
}