Upload files to "/"
This commit is contained in:
parent
3473670f67
commit
c898dd8996
4 changed files with 147 additions and 0 deletions
31
game.cpp
Normal file
31
game.cpp
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#include <SFML/Graphics.hpp>
|
||||||
|
#include "vokzal.hpp"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// Створюємо вікно 800x600
|
||||||
|
sf::RenderWindow window(sf::VideoMode(1950, 1200), "Test Game Window");
|
||||||
|
|
||||||
|
|
||||||
|
window.setFramerateLimit(90); //вище 200 не рокимендую піднімати частоту після 600 буде чути писк дроселів
|
||||||
|
|
||||||
|
Player player;
|
||||||
|
// Простий квадрат для гравця
|
||||||
|
|
||||||
|
sf::Clock clock;
|
||||||
|
while (window.isOpen()) {
|
||||||
|
sf::Event event;
|
||||||
|
while (window.pollEvent(event)) {
|
||||||
|
if (event.type == sf::Event::Closed)
|
||||||
|
window.close();}
|
||||||
|
|
||||||
|
//if(event.type== sf::Event::Resized){}
|
||||||
|
float deltaTime = clock.restart().asSeconds();
|
||||||
|
|
||||||
|
player.update(deltaTime); // викликаємо логіку гравця
|
||||||
|
window.clear(sf::Color::Black); // очистка вікна
|
||||||
|
player.draw(window); // малюємо квадрат
|
||||||
|
window.display(); // відображення
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
79
player.cpp
Normal file
79
player.cpp
Normal 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);
|
||||||
|
}
|
31
player.hpp
Normal file
31
player.hpp
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <SFML/Graphics.hpp>
|
||||||
|
|
||||||
|
//float velocityY;
|
||||||
|
//float gravity;
|
||||||
|
//float jumpStrength;
|
||||||
|
//bool isOnGround;
|
||||||
|
|
||||||
|
|
||||||
|
class Player {
|
||||||
|
|
||||||
|
private:
|
||||||
|
sf::RectangleShape shape; // форма гравця
|
||||||
|
float speed; //швидкість гравця
|
||||||
|
float velocityY; // швидкість по вертикалі
|
||||||
|
float jumpStrength; // сила стрибка
|
||||||
|
bool onGround; //чи стоїть на землі
|
||||||
|
float gravity; // сила гравітації
|
||||||
|
float groundLevel; // висота "землі"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
Player(); // порожній конструктор
|
||||||
|
void update(float deltaTime);
|
||||||
|
|
||||||
|
void draw(sf::RenderWindow& window);
|
||||||
|
|
||||||
|
};
|
6
vokzal.hpp
Normal file
6
vokzal.hpp
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "player.hpp"
|
||||||
|
#include "enemy.hpp"
|
||||||
|
#include "platform.hpp"
|
||||||
|
#include "bullet.hpp"
|
Loading…
Reference in a new issue