Upload files to "/"

This commit is contained in:
Wolf 2025-09-24 14:22:47 +00:00
parent c898dd8996
commit 9fe18da843
5 changed files with 84 additions and 26 deletions

View file

@ -1,30 +1,28 @@
#include "player.hpp" // Включаємо заголовок класу Player, щоб компілятор знав про його методи та змінні.
using namespace std;
// Конструктор класу Player. Він автоматично викликається при створенні об'єкта Player.
Player::Player()
// Список ініціалізації: кращий спосіб задати початкові значення змінним.
// Тут ініціалізуємо `shape` (прямокутник) з розміром 50x50.
: shape(sf::Vector2f(50.f, 50.f)),
// Ініціалізуємо змінну `speed` значенням 200.
speed(500.f),
velocityY(0.f),
jumpStrength(600.f),
onGround(true),
gravity(1500.f),
groundLevel(1040.f)
: shape(sf::Vector2f(50.f, 50.f)), // тут лише "чисте" створення
speed(500.f), //швидкість
velocityY(0.f),
jumpStrength(700.f), // пиржок
onGround(true),
gravity(1500.f),
groundLevel(1040.f)
{
// Тіло конструктора: тут можна задавати додаткові параметри.
// Встановлюємо зелений колір для прямокутника.
// А тут уже викликаємо методи, які налаштовують shape
shape.setFillColor(sf::Color::Green);
// Встановлюємо початкову позицію гравця на екрані.
shape.setPosition(50.f, 1040.f);
}
// Закоментований метод `update` (робота на потім).
// Він призначений для оновлення логіки гравця у кожному кадрі гри.
// Усередині цього методу, ви будете обробляти рух, зіткнення, анімацію тощо.
// `deltaTime` — це час, що минув з попереднього кадру, і він забезпечує плавний рух незалежно від швидкості комп'ютера.
void Player::update(float deltaTime){ // Тут буде логіка руху гравця
void Player::update(float deltaTime, const std::vector<Platform>& platforms) { // Тут буде логіка руху гравця
float moveX = 0.f;
@ -52,6 +50,28 @@ void Player::update(float deltaTime){ // Тут буде логіка руху
}else{
onGround = false;
}
/////////////////////////////////////////////////////
sf::FloatRect playerBounds = shape.getGlobalBounds();
for (const auto& platform : platforms) {
sf::FloatRect platformBounds = platform.getBounds();
if (playerBounds.intersects(platformBounds)){
if (playerBounds.intersects(platformBounds)) {
// Додатковий if — перевіряємо, чи гравець зверху
if (playerBounds.top + playerBounds.height <= platformBounds.top + 20.f) {
shape.setPosition(shape.getPosition().x, platformBounds.top - shape.getSize().y);
velocityY = 0.f;
onGround = true;
}else if(playerBounds.top> platformBounds.top){shape.setPosition(shape.getPosition().x, platformBounds.top +platformBounds.height);
velocityY =0.f;}
}
}
}
/////////////////////////////////////////////////////