23 #ifndef SRC_TYPES_POSITION2D_HPP_
24 #define SRC_TYPES_POSITION2D_HPP_
61 Position2D(
size_t min_x_,
size_t max_x_,
size_t min_y_,
size_t max_y_) {
62 rand(min_x_, max_x_, min_y_, max_y_);
72 void rand(
size_t min_x_,
size_t max_x_,
size_t min_y_,
size_t max_y_) {
74 std::random_device rd;
75 std::mt19937_64 rng_mt19937_64(rd());
78 std::uniform_int_distribution<size_t> x_dist(min_x_, max_x_);
81 x = x_dist(rng_mt19937_64);
84 std::uniform_int_distribution<size_t> y_dist(min_y_, max_y_);
87 y = y_dist(rng_mt19937_64);
96 void set(
long x_,
long y_) {
108 new_pos.
x = this->
x + ac_.
dx;
109 new_pos.
y = this->
y + ac_.
dy;
120 if ((pos_.
x == this->x) && (pos_.
y == this->y))
148 if (circular_world_) {
150 x = (
x + width_ + ac_.
dx) % width_;
151 y = (
y + height_ + ac_.
dy) % height_;
155 if (((
x+ac_.
dx) < 0) || ((
x+ac_.
dx) >= (long)width_))
158 if (((
y+ac_.
dy) < 0) || ((
y+ac_.
dy) >= (long)height_))
176 os_ <<
"[x,y]: [" << pos_.
x <<
',' << pos_.
y <<
"]";
Class representing position in 2-D space.
void set(long x_, long y_)
int dy
Increment according to y axis.
mic::types::Position2D operator+(Action2DInterface ac_)
int dx
Increment according to x axis.
bool operator==(mic::types::Position2D pos_)
friend std::ostream & operator<<(std::ostream &os_, const Position2D &pos_)
Position2D(size_t min_x_, size_t max_x_, size_t min_y_, size_t max_y_)
void rand(size_t min_x_, size_t max_x_, size_t min_y_, size_t max_y_)
Interface class representing an action in 2-D space.
bool move(Action2DInterface ac_, size_t width_, size_t height_, bool circular_world_=true)
bool move(Action2DInterface ac_)
Position2D(long x_, long y_)