mis en place la PR de simon sur les couleurs
This commit is contained in:
72
src/Pieces/Position.h
Normal file
72
src/Pieces/Position.h
Normal file
@@ -0,0 +1,72 @@
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
|
||||
|
||||
/**
|
||||
* A position on a 2D grid
|
||||
*/
|
||||
struct Position {
|
||||
int x; // x position
|
||||
int y; // y position
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Addition operator
|
||||
* @return The sums of the coordinates of both positions
|
||||
*/
|
||||
inline Position operator+(const Position& left, const Position& right) {
|
||||
return Position{left.x + right.x, left.y + right.y};
|
||||
}
|
||||
|
||||
/**
|
||||
* Additive assignation operator, adds the coordinates of the right position to the left one
|
||||
* @return A reference to the left position
|
||||
*/
|
||||
inline Position& operator+=(Position& left, const Position& right) {
|
||||
left = left + right;
|
||||
return left;
|
||||
}
|
||||
|
||||
/**
|
||||
* Substraction operator
|
||||
* @return The difference of the coordinate between the left and right position
|
||||
*/
|
||||
inline Position operator-(const Position& left, const Position& right) {
|
||||
return Position{left.x - right.x, left.y - right.y};
|
||||
}
|
||||
|
||||
/**
|
||||
* Substractive assignation operator, substracts the coordinates of the right position from the left one
|
||||
* @return A reference to the left position
|
||||
*/
|
||||
inline Position& operator-=(Position& left, const Position& right) {
|
||||
left = left + right;
|
||||
return left;
|
||||
}
|
||||
|
||||
/**
|
||||
* Strict inferiority operator, a position is inferior to another if it is lower or at the same height and more to the left
|
||||
* @return If the left position is inferior to the right position
|
||||
*/
|
||||
inline bool operator<(const Position& left, const Position& right) {
|
||||
return (left.x == right.x) ? (left.y < right.y) : (left.x < right.x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Equality operator, two positions are equal if they have the same coordinates
|
||||
* @return If the two positions are equals
|
||||
*/
|
||||
inline bool operator==(const Position& left, const Position& right) {
|
||||
return (left.x == right.x) && (left.y == right.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stream output operator, adds the coordinates of the position to the stream
|
||||
* @return A reference to the output stream
|
||||
*/
|
||||
inline std::ostream& operator<<(std::ostream& os, const Position& position) {
|
||||
os << "x: " << position.x << " y: " << position.y;
|
||||
return os;
|
||||
}
|
||||
Reference in New Issue
Block a user