1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| class Ball {
public:
int x, y, speedX, speedY;
void update(float dt) {
x += speedX * dt;
y += speedY * dt;
}
Ball() { }
Ball(int x, int y, int sx, int sy) : x(x), y(y), speedX(sx), speedY(sy) { }
Ball(const Ball& b) : x(b.x), y(b.y), speedX(b.speedX), speedY(b.speedY) { }
Ball& operator=(const Ball& b) {
x = b.x;
y = b.y;
speedX = b.speedX;
speedY = b.speedY;
return *this;
}
};
class BallArray {
public:
typedef std::array<Ball, 2> array_type;
typedef array_type::const_iterator const_iterator;
void updateBall(unsigned int n, float dt) {
if(n < m_array.size()) {
m_array[n].update(dt);
}
}
void updateAllBall(float dt) {
for(auto& b: m_array) {
b.update(dt);
}
}
const_iterator begin() const { return m_array.begin(); }
const_iterator end() const { return m_array.end(); }
private:
array_type m_array;
};
class HeartGame {
public:
void HeartGame::routine () {
m_balls.updateAllBall(/* dt */);
std::foreach(m_balls.begin, m_balls.end(), [](const Ball& b) {
HeartGraphics::drawSmallSprite(b.x, b.y, 0, 0 );
}
}
private:
BallArray m_balls;
}; |
Partager