Upload files to "/"

This commit is contained in:
Wolf 2025-09-13 20:42:57 +00:00
parent 3473670f67
commit c898dd8996
4 changed files with 147 additions and 0 deletions

79
player.cpp Normal file
View file

@ -0,0 +1,79 @@
#include "player.hpp" // Включаємо заголовок класу Player, щоб компілятор знав про його методи та змінні.
// Конструктор класу 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.setFillColor(sf::Color::Green);
// Встановлюємо початкову позицію гравця на екрані.
shape.setPosition(50.f, 1040.f);
}
// Закоментований метод `update` (робота на потім).
// Він призначений для оновлення логіки гравця у кожному кадрі гри.
// Усередині цього методу, ви будете обробляти рух, зіткнення, анімацію тощо.
// `deltaTime` — це час, що минув з попереднього кадру, і він забезпечує плавний рух незалежно від швидкості комп'ютера.
void Player::update(float deltaTime){ // Тут буде логіка руху гравця
float moveX = 0.f;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::A)){
moveX -= speed * deltaTime;} //рух вліво
if (sf::Keyboard::isKeyPressed(sf::Keyboard::D)){
moveX += speed * deltaTime;} //рух вправо
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W) && onGround==true) {
velocityY = -jumpStrength;
}
velocityY += gravity * deltaTime;
shape.move(moveX, 0.f);
shape.move(0.f , velocityY * deltaTime);
//перевірка чи є земля та обмеження щоб фігура не вилитіла
if(shape.getPosition().y + shape.getSize().y >= groundLevel){
shape.setPosition(shape.getPosition().x, groundLevel -shape.getSize().y);
velocityY = 0;
onGround = true;
}else{
onGround = false;
}
/////////////////////////////////////////////////////
if(shape.getPosition().x < 0.f)
shape.setPosition(0.f, shape.getPosition().y);
if(shape.getPosition().x+shape.getSize().x>1925.f)
shape.setPosition(1925.f - shape.getSize().x ,shape.getPosition().y);
if(shape.getPosition().y < 0.f)
shape.setPosition(shape.getPosition().x,0.f);
if(shape.getPosition().y+shape.getSize().y>1200.f)
shape.setPosition(shape.getPosition().x, 1200.f - shape.getSize().y);
}
// Метод `draw` для відмальовування гравця на екрані.
// Приймає посилання на вікно, щоб знати, де малювати.
void Player::draw(sf::RenderWindow& window)
{
// Викликаємо метод `draw` вікна, щоб намалювати наш об'єкт `shape`.
window.draw(shape);
}