Webmagister / beginning

Введение в программирование
0 stars 0 forks source link

Замечания по workshop2 #3

Open sergey-shambir opened 6 years ago

sergey-shambir commented 6 years ago

Стилевые замечания: по update в workshop2.7:

void update(const unsigned WINDOW_WIDTH, const unsigned WINDOW_HEIGHT, sf::Clock &clock, const float BALL_SIZE, std::vector<Ball> &balls)
{
    const float dt = clock.restart().asSeconds();
    for (float j = 0; j <= dt; j = j + (dt / 5))
    {
        checkBallCollision(balls, BALL_SIZE);
        for (size_t i = 0; i < balls.size(); ++i)
        {
            sf::Vector2f position = balls[i].ball.getPosition();
            balls[i].timer = updateBallLifetimes(balls[i].timer, dt / 5);
            auto it = std::remove_if(balls.begin(), balls.end(), removeDeathBalls);
            balls.erase(it, balls.end());
            checkWallCollision(WINDOW_WIDTH, WINDOW_HEIGHT, BALL_SIZE, balls[i].speed, position);

            balls[i].ball.setPosition(position + balls[i].speed * (dt / 5));
        }
    }
}
Webmagister commented 6 years ago

WINDOW_WIDTH, WINDOW_HEIGHT вынес в глобальные константы. "dt / 5" заменил на константу "количество интервалов".

sergey-shambir commented 6 years ago

В workshop2.8 не проверяется закон сохранения энергии, проверяется только сохранения импульса и только по оси X. Лучше считать импульс в виде вектора и сравнивать длины векторов.