From dbe41a2f77774ee716d3ff45db766d6400970f57 Mon Sep 17 00:00:00 2001 From: aleksav013 Date: Tue, 1 Jun 2021 21:03:32 +0200 Subject: Splitting code; Creating Makefile --- main.cpp | 557 --------------------------------------------------------------- 1 file changed, 557 deletions(-) delete mode 100644 main.cpp (limited to 'main.cpp') diff --git a/main.cpp b/main.cpp deleted file mode 100644 index 2e83c6e..0000000 --- a/main.cpp +++ /dev/null @@ -1,557 +0,0 @@ -#include -#include -#include -#define seseku(a,b) a.getGlobalBounds().intersects(b.getGlobalBounds()) -class Global -{ - public: - static std::mt19937 rng; -}; -std::mt19937 Global::rng = std::mt19937(time(0)); -class Entity -{ - public: - bool ziv=1; - float x,y; - sf::RectangleShape telo; - Entity() {} Entity(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); - void respawn(int sirina,int visina); -}; -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; -} -void Entity::respawn(int sirina,int visina) -{ - if(!ziv) - { - x=Global::rng()%sirina; - y=Global::rng()%visina; - ziv=1; - } -} -class Powerup:public Entity -{ - public: - static float time; - Powerup():Entity() {} - Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); -}; -float Powerup::time=20; -Powerup::Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja) -{ - -} -class Enemy1:public Entity -{ - private: - float vx,vy; - public: - static float time; - Enemy1():Entity() {} - Enemy1(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); - void izracunajbrzinu(float igracx,float igracy); - void izracunajpoz(float dt); -}; -float Enemy1::time=8; -Enemy1::Enemy1(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja) {} -void Enemy1::izracunajbrzinu(float igracx,float igracy) -{ - float k=(igracy-y)/(igracx-x); - float r=150.0; - float dx=r/std::sqrt(1+k*k); - if(igracx-x<0) dx=-dx; - float dy=k*dx; - vx=dx; - vy=dy; -} -void Enemy1::izracunajpoz(float dt) -{ - x+=vx*dt; - y+=vy*dt; -} -class Enemy2:public Entity -{ - private: - float vx,vy; - public: - static float time; - Enemy2():Entity() {} - Enemy2(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); - void izracunajbrzinu(float igracx,float igracy,float dt); - void izracunajpoz(float igracx,float igracy,float dt); -}; -float Enemy2::time=14; -Enemy2::Enemy2(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja) -{ - vx=vy=0; -} -void Enemy2::izracunajbrzinu(float igracx,float igracy,float dt) -{ - float k=(igracy-y)/(igracx-x); - float r=200.0*dt; - float dx=r/std::sqrt(1+k*k); - if(igracx-x<0) dx=-dx; - float dy=k*dx; - vx+=dx; - vy+=dy; -} -void Enemy2::izracunajpoz(float igracx,float igracy,float dt) -{ - if((x+vx-igracx)*(x+vx-igracx)+(y+vy-igracy)*(y+vy-igracy)<(x-igracx)*(x-igracx)+(y-igracy)*(y-igracy)) - { - x+=vx*dt*3; - y+=vy*dt*3; - } - else - { - x+=vx*dt; - y+=vy*dt; - } -} -class Enemy3:public Entity -{ - private: - float vx,vy; - public: - static float time; - Enemy3():Entity() {} - Enemy3(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); - void izracunajpoz(float dt); - void izracunajbrzinu(int sirina,int duzina); -}; -float Enemy3::time=10; -Enemy3::Enemy3(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja) -{ - vx=vy=500.0; -} -void Enemy3::izracunajpoz(float dt) -{ - x+=vx*dt; - y+=vy*dt; -} -void Enemy3::izracunajbrzinu(int sirina,int visina) -{ - if(x<0||x>sirina) vx=-vx; - if(y<0||y>visina) vy=-vy; -} -class Player:public Entity -{ - public: - int health,xp; - int stomprad=270; - float stomptime; - - Player():Entity() {} - Player(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); - void updatest(float dt); -}; -Player::Player(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja) -{ - health=100; - stomptime=0; - xp=0; -} -void Player::updatest(float dt) -{ - if(stomptime>0) stomptime-=dt; - else stomptime=0; -} -class Game -{ - private: - sf::Font font; - sf::Texture healthtex,neprijateljtex; - float dt; - sf::Clock sat,time; - - Player igrac; - std::vector nep1; - std::vector nep2; - std::vector nep3; - std::vector pow; - - int visina,sirina; - sf::RenderWindow *prozor; - - sf::CircleShape krug; - sf::RectangleShape health,healthblank,stomp,stompblank; - sf::Text healthtext,stomptext,fps,score; - - void keyboard(); - void run(); - void draw(); - void stompmain(); - - void updateui(); - void updatedt(); - bool gameover(); - void respawn(); - void position(); - void checkcollision(); - - void initshapes(); - void initui(); - void inittex(); - void initent(); - void updatewin(); - public: - Game() {} - Game(sf::RenderWindow *glprozor); - void loop(bool ischanged,bool pause); -}; -void Game::initshapes() -{ - krug.setRadius(igrac.stomprad); - krug.setFillColor(sf::Color::Black); - krug.setOutlineThickness(10); - krug.setOutlineColor(sf::Color::White); - krug.setOrigin(krug.getRadius(),krug.getRadius()); - - health.setSize(sf::Vector2f(sirina/3.0,50.0)); - health.setFillColor(sf::Color::Red); - healthblank.setSize(sf::Vector2f(sirina/3.0,50.0)); - healthblank.setFillColor(sf::Color::White); - - stomp.setSize(sf::Vector2f(sirina/3.0,50.0)); - stomp.setFillColor(sf::Color::Blue); - stomp.setPosition(0,50); - stompblank.setSize(sf::Vector2f(sirina/3.0,50.0)); - stompblank.setFillColor(sf::Color::White); - stompblank.setPosition(0,50); -} -void Game::initui() -{ - if(!font.loadFromFile("assets/fonts/LiberationMono-Regular.ttf")) - { - std::cerr<<"Font not found\n"; - } - healthtext.setFont(font); - healthtext.setString("Health"); - healthtext.setCharacterSize(24); - healthtext.setFillColor(sf::Color::Black); - stomptext.setFont(font); - stomptext.setString("Stomp"); - stomptext.setCharacterSize(24); - stomptext.setPosition(0,50); - stomptext.setFillColor(sf::Color::Black); - - fps.setFont(font); - fps.setCharacterSize(24); - fps.setFillColor(sf::Color::White); - fps.setPosition(sirina*5.0/6,0); - score.setFont(font); - score.setCharacterSize(24); - score.setFillColor(sf::Color::White); - score.setPosition(sirina*5.0/6,50); -} -void Game::inittex() -{ - if(!healthtex.loadFromFile("assets/images/healing.png")) - { - std::cerr<<"Texture not found\n"; - } - if(!neprijateljtex.loadFromFile("assets/images/nep.png")) - { - std::cerr<<"Texture not found\n"; - } - for(size_t i=0;igetSize().y; - sirina=prozor->getSize().x; - healthblank.setSize(sf::Vector2f(sirina/3.0,50.0)); - stompblank.setSize(sf::Vector2f(sirina/3.0,50.0)); - fps.setPosition(sirina*5.0/6,0); - score.setPosition(sirina*5.0/6,50); - updateui(); -} -Game::Game(sf::RenderWindow *glprozor) -{ - prozor=glprozor; - initui(); - updatewin(); - initent(); - initshapes(); - inittex(); -} -bool Game::gameover() -{ - if(igrac.health<=0) - { - prozor->close(); - std::cout<<"\n\nGame over. Wanna try again?\n"; - return 1; - } - return 0; -} -void Game::updatedt() -{ - dt=sat.restart().asMicroseconds()/1000000.0; -} -void Game::updateui() -{ - health.setSize(sf::Vector2f(sirina*igrac.health/300.0,50.0)); - stomp.setSize(sf::Vector2f(sirina*(5-igrac.stomptime)/15.0,50.0)); - fps.setString("fps: "+std::to_string((int)(1/dt))); - score.setString("xp: "+std::to_string(igrac.xp)); -} -void Game::stompmain() -{ - igrac.stomptime=5; - krug.setPosition(igrac.x,igrac.y); - for(size_t i=0;i0) igrac.y-=dist; - if((sf::Keyboard::isKeyPressed(sf::Keyboard::A)||sf::Keyboard::isKeyPressed(sf::Keyboard::Left))&&igrac.x>0) igrac.x-=dist; - if((sf::Keyboard::isKeyPressed(sf::Keyboard::S)||sf::Keyboard::isKeyPressed(sf::Keyboard::Down))&&igrac.yclear(); - if(igrac.stomptime>4.6) prozor->draw(krug); - prozor->draw(igrac.telo); - for(size_t i=0;idraw(nep1.at(i).telo); - for(size_t i=0;idraw(nep2.at(i).telo); - for(size_t i=0;idraw(nep3.at(i).telo); - for(size_t i=0;idraw(pow.at(i).telo); - - prozor->draw(healthblank); - prozor->draw(health); - prozor->draw(healthtext); - prozor->draw(stompblank); - prozor->draw(stomp); - prozor->draw(stomptext); - prozor->draw(fps); - prozor->draw(score); - - prozor->display(); -} -void Game::position() -{ - igrac.telo.setPosition(igrac.x,igrac.y); - for(size_t i=0;iloop(ischanged,pause); - if(ischanged) ischanged=0; - } -} -int main() -{ - State program; - program.loop(); - return 0; -} -- cgit v1.2.3