Create simpleengine::Random class, remove simpleengine::random namespace
This commit is contained in:
parent
f63d596438
commit
62ade4de04
|
@ -154,8 +154,11 @@ public:
|
|||
target->draw(shape);
|
||||
}
|
||||
|
||||
// Find a new location for the snake food.
|
||||
void Relocate() {
|
||||
sf::Vector2f pos(simpleengine::random::RandomInt(0, window_size.x), simpleengine::random::RandomInt(0, window_size.y));
|
||||
simpleengine::Random<int> random;
|
||||
sf::Vector2f pos(random.NextInRange(0, window_size.x), random.NextInRange(0, window_size.y));
|
||||
|
||||
// Make sure its on the 15 pixel grid.
|
||||
pos.x -= (int) pos.x % 15;
|
||||
pos.y -= (int) pos.y % 15;
|
||||
|
@ -293,7 +296,7 @@ int main(int argc, char *argv[]) {
|
|||
score_text.setString("0");
|
||||
score_text.setCharacterSize(24);
|
||||
score_text.setFillColor(sf::Color::Green);
|
||||
score_text.setPosition(window_size.x - 50, 0);
|
||||
score_text.setPosition(window_size.x - 50, 5);
|
||||
|
||||
auto snake_player = std::make_shared<SnakePlayerEntity>(window_size, score_text, std::ref(game));
|
||||
auto snake_food = std::make_shared<SnakeFoodEntity>(window_size, snake_player);
|
||||
|
|
|
@ -56,7 +56,7 @@ namespace simpleengine {
|
|||
cond_var.notify_all();
|
||||
}
|
||||
|
||||
virtual void Render(sf::RenderTarget* target) = 0;
|
||||
virtual void Render(sf::RenderTarget* target) { };
|
||||
protected:
|
||||
std::mutex mutex;
|
||||
std::condition_variable cond_var;
|
||||
|
|
|
@ -20,11 +20,6 @@
|
|||
namespace simpleengine {
|
||||
class Event;
|
||||
|
||||
/* template<typename F>
|
||||
auto Deduce(F f) -> std::void_t<decltype(std::function{f})>{
|
||||
std::function{f};
|
||||
} */
|
||||
|
||||
class Game {
|
||||
public:
|
||||
Game(int w, int h, const std::string& window_name);
|
||||
|
|
|
@ -8,10 +8,25 @@
|
|||
#define SIMPLEENGINE_RANDOM_H
|
||||
|
||||
#include <limits>
|
||||
#include <random>
|
||||
namespace simpleengine {
|
||||
namespace random {
|
||||
int RandomInt(int min = std::numeric_limits<int>::min(), int max = std::numeric_limits<int>::max());
|
||||
}
|
||||
template<typename T, class RandomDevice = std::random_device, class Generator = std::mt19937>
|
||||
class Random {
|
||||
private:
|
||||
RandomDevice rd;
|
||||
Generator gen;
|
||||
public:
|
||||
Random() {
|
||||
this->gen = Generator(rd());
|
||||
}
|
||||
|
||||
template<class Dist = std::uniform_int_distribution<>>
|
||||
T NextInRange(T min, T max) {
|
||||
Dist dist(min, max);
|
||||
|
||||
return dist(gen);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#endif //SIMPLEENGINE_RANDOM_H
|
|
@ -1,13 +0,0 @@
|
|||
#include "random.h"
|
||||
|
||||
#include <random>
|
||||
|
||||
namespace simpleengine {
|
||||
int random::RandomInt(int min, int max) {
|
||||
std::random_device rd;
|
||||
std::mt19937 gen(rd());
|
||||
std::uniform_int_distribution<> distr(min, max);
|
||||
|
||||
return distr(gen);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue