#include #include #include class Global { public: static std::mt19937 rng; }; std::mt19937 Global::rng = std::mt19937(time(0)); class Entity { public: float x,y; sf::RectangleShape telo; Entity() {} Entity(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); }; Entity::Entity(sf::Vector2f pozicija, sf::Vector2f velicina,sf::Color boja) { telo.setSize(velicina); telo.setFillColor(boja); telo.setOrigin(sf::Vector2f(telo.getSize().x/2,telo.getSize().y/2)); x=pozicija.x; y=pozicija.y; } class Enemy:public Entity { public: bool ziv=1; Enemy():Entity() {} Enemy(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); void kaigracu(float igracx,float igracy,float dt); }; Enemy::Enemy(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja) {} void Enemy::kaigracu(float igracx,float igracy,float dt) { float k=(igracy-y)/(igracx-x); float r=100*dt; float dx=r/std::sqrt(1+k*k); if(igracx-x<0) dx=-dx; float dy=k*dx; x+=dx; y+=dy; } class Player:public Entity { public: int health,xp; int stomprad=300; float stomptime; Player():Entity() {} Player(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); }; Player::Player(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja) { health=100; stomptime=0; xp=0; } class Game { private: float dt; sf::Clock sat; float time; Player igrac; std::vector neprijatelj; int visina,sirina; sf::RenderWindow prozor; sf::CircleShape krug; void events(); void keyboard(); void run(); void draw(); void stompmain(); public: Game(); void loop(); }; Game::Game() { time=5; prozor.create(sf::VideoMode(1024,1024),"RPG igra"); visina=prozor.getSize().y; sirina=prozor.getSize().x; prozor.setFramerateLimit(60); igrac = Player(sf::Vector2f((float)sirina/2,(float)visina/2),sf::Vector2f(100.0f,100.0f),sf::Color::White); for(int i=0;i<20;i++) neprijatelj.push_back(Enemy(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::Red)); igrac.x=(float)prozor.getSize().x/2; igrac.y=(float)prozor.getSize().y/2; krug.setRadius(igrac.stomprad); krug.setFillColor(sf::Color::Black); krug.setOutlineThickness(10); krug.setOutlineColor(sf::Color::White); krug.setOrigin(krug.getRadius(),krug.getRadius()); } void Game::stompmain() { igrac.stomptime=5; krug.setPosition(igrac.x,igrac.y); for(int i=0;i0) igrac.y-=dist; if(sf::Keyboard::isKeyPressed(sf::Keyboard::A)&&igrac.x>0) igrac.x-=dist; if(sf::Keyboard::isKeyPressed(sf::Keyboard::S)&&igrac.y4.6) prozor.draw(krug); prozor.draw(igrac.telo); for(int i=0;i0) igrac.stomptime-=dt; igrac.telo.setPosition(igrac.x,igrac.y); for(int i=0;i