diff --git a/Conways/Node.h b/Conways/Node.h index 30866e6..cbcc1c1 100644 --- a/Conways/Node.h +++ b/Conways/Node.h @@ -4,8 +4,8 @@ class Node { public: - static const int x_bound = 150; - static const int y_bound = 150; + static const int x_bound = 1000; + static const int y_bound = 1000; Node(sf::Vector2i position_); ~Node(); diff --git a/Conways/main.cpp b/Conways/main.cpp index 0bb3662..04bbc23 100644 --- a/Conways/main.cpp +++ b/Conways/main.cpp @@ -1,13 +1,13 @@ #include #include -#include #include #include #include "Node.h" +#include #include -const int WINDOW_X = 600; -const int WINDOW_Y = 800; +const int WINDOW_X = 1000; +const int WINDOW_Y = 1000; float elap_time() { static __int64 start = 0; @@ -24,14 +24,20 @@ float elap_time() { return (float)((counter - start) / double(frequency)); } +void updateRange(std::vector *node_vec, int start_range_, int end_range_) { + for (int i = start_range_; i < end_range_; i++) { + node_vec->operator[](i).Update(node_vec); + } +} + + + int main() { std::mt19937 rng(time(NULL)); std::uniform_int_distribution rgen(0, 4); std::vector node_vec; - std::stack* front_stack = new std::stack(); - std::stack* back_stack = new std::stack(); // Init nodes, random value, push to front_stack for (int x = 0; x < Node::x_bound; x++) { @@ -39,21 +45,14 @@ int main() { node_vec.push_back(Node(sf::Vector2i(x, y))); if (rgen(rng) == 1) { node_vec.at(node_vec.size() - 1).Revive(); - front_stack->push(&node_vec.at(node_vec.size() - 1)); } } } // Spites for drawing, probably where the biggest slowdown is sf::RectangleShape live_node; - sf::RectangleShape dead_node; - - live_node.setFillColor(sf::Color::Blue); - dead_node.setFillColor(sf::Color::Green); - + live_node.setFillColor(sf::Color(145, 181, 207)); live_node.setSize(sf::Vector2f(WINDOW_X / Node::x_bound, WINDOW_Y / Node::y_bound)); - dead_node.setSize(sf::Vector2f(WINDOW_X / Node::x_bound, WINDOW_Y / Node::y_bound)); - // Init window, and loop data sf::RenderWindow window(sf::VideoMode(WINDOW_X, WINDOW_Y), "Classic Games"); @@ -62,6 +61,7 @@ int main() { double frame_time = 0.0, elapsed_time = 0.0, delta_time = 0.0, accumulator_time = 0.0, current_time = 0.0; int frame_count = 0; + std::stack thread_stack; while (window.isOpen()) { @@ -86,14 +86,22 @@ int main() { } // Implicit dead node color - window.clear(sf::Color::Black); + window.clear(sf::Color(49, 68, 72)); - for (int i = 0; i < node_vec.size(); i++) { - node_vec.at(i).Update(&node_vec); + for (int i = 0; i < 12; i++) { + thread_stack.emplace(updateRange, &node_vec, (node_vec.size() / 12)* i, (node_vec.size() / 12)* (i + 1)); } + while (!thread_stack.empty()) { + thread_stack.top().join(); + thread_stack.pop(); + } + + //for (int i = 0; i < node_vec.size(); i++) { + // node_vec.at(i).Update(&node_vec); + //} for (int i = 0; i < node_vec.size(); i++) { - node_vec.at(i).ShiftState(); + node_vec[i].ShiftState(); } for (int i = 0; i < node_vec.size(); i++) { diff --git a/Screeny.png b/Screeny.png index f423883..dc7ced7 100644 Binary files a/Screeny.png and b/Screeny.png differ