Что делает этот фрагмент кода (игра SFML C++)?
Привет ребята,
Я пытаюсь сделать простую игру в пинг-понг с использованием SFML.
Я застрял с куском кода, который я достал из интернета, я не в состоянии понять работу в деталях, так что ребята, пожалуйста, объясните.
Ниже фрагмент кода состоит в том, чтобы переместить мяч в случайном направлении и заставить его подпрыгнуть, когда он ударится о границу или весло
<pre lang="c++"> void update(sf::Clock &clock, sf::Time &elapsed) { const float velocity = std::sqrt(direction.x * direction.x + direction.y * direction.y); elapsed += clock.restart(); while (elapsed >= update_ms) { const auto pos = ball.getPosition(); const auto delta = update_ms.asSeconds() * velocity; sf::Vector2f new_pos(pos.x + direction.x * delta, pos.y + direction.y * delta); if (new_pos.x - ball_radius < 0) { // left window edge direction.x *= -1; new_pos.x = 0 + ball_radius; } else if (new_pos.x + ball_radius >= 800) { // right window edge direction.x *= -1; new_pos.x = 800 - ball_radius; } else if (new_pos.y - ball_radius < 0) { // top of window direction.y *= -1; new_pos.y = 0 + ball_radius; } else if (new_pos.y + ball_radius >= 500) { // bottom of window direction.y *= -1; new_pos.y = 500 - ball_radius; } ball.setPosition(new_pos); elapsed -= update_ms; } }
Я немного отредактировал код в соответствии с моим желанием. Я дал ссылку на часы и направление vector2f частной переменной, которая заставит мяч стрелять в случайном направлении.
Что я уже пробовал:
Разбирался в коде немного, но не в деталях, поэтому нужна ваша помощь ребятам.