You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
727 B
C++
41 lines
727 B
C++
#include "shape.hpp" // Shape class interface
|
|
|
|
Shape::Shape(std::int16_t x0, std::int16_t y0)
|
|
: x(x0),
|
|
y(y0)
|
|
{
|
|
}
|
|
|
|
void Shape::moveBy(std::int16_t dx, std::int16_t dy) {
|
|
this->x += dx;
|
|
this->y += dy;
|
|
}
|
|
|
|
uint16_t Shape::distanceFrom(Shape const * other) const
|
|
{
|
|
std::int16_t dx = x - other->x;
|
|
std::int16_t dy = y - other->y;
|
|
if (dx < 0) {
|
|
dx = -dx;
|
|
}
|
|
if (dy < 0) {
|
|
dy = -dy;
|
|
}
|
|
return dx + dy;
|
|
}
|
|
|
|
void Shape::draw() const {
|
|
}
|
|
|
|
uint32_t Shape::area() const {
|
|
return 0U;
|
|
}
|
|
|
|
/* draw all shapes in a given array graph[] */
|
|
void drawGraph(Shape const *graph[]) {
|
|
for (std::uint8_t i = 0; graph[i] != (Shape *)0; ++i) {
|
|
graph[i]->draw(); /* polymorphism! */
|
|
}
|
|
}
|
|
|