#include #include #include "cloud.h" Cloud::Cloud(std::string player, float x, float y, float r) : player{player}, x{x}, y{y}, r{r} { } bool Cloud::overlaps(Cloud const& o) const { return (sq(x-o.x) + sq(y-o.y)) < sq(r+o.r); } void Cloud::consume(Cloud& o) { ++r; o.r = 0; } bool Cloud::operator>(Cloud const& rhs) const { return r > rhs.r; } std::string Cloud::to_string() const { return player + "(" + std::to_string(r) + ")"; } float Cloud::sq(float v) { return v*v; } std::ostream& operator<<(std::ostream& os, Cloud const& c) { return os << c.to_string(); }