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 --- .gitignore | 2 + main.cpp | 557 ----------------------------------------------- src/Enemy1.cpp | 19 ++ src/Enemy2.cpp | 30 +++ src/Enemy3.cpp | 17 ++ src/Entity.cpp | 19 ++ src/Game.cpp | 282 ++++++++++++++++++++++++ src/Global.cpp | 2 + src/Makefile | 15 ++ src/Player.cpp | 13 ++ src/Powerup.cpp | 7 + src/State.cpp | 59 +++++ src/includes/Enemy1.hpp | 17 ++ src/includes/Enemy2.hpp | 17 ++ src/includes/Enemy3.hpp | 17 ++ src/includes/Entity.hpp | 15 ++ src/includes/Game.hpp | 54 +++++ src/includes/Global.hpp | 12 + src/includes/Player.hpp | 17 ++ src/includes/Powerup.hpp | 13 ++ src/includes/State.hpp | 19 ++ src/main.cpp | 8 + 22 files changed, 654 insertions(+), 557 deletions(-) delete mode 100644 main.cpp create mode 100644 src/Enemy1.cpp create mode 100644 src/Enemy2.cpp create mode 100644 src/Enemy3.cpp create mode 100644 src/Entity.cpp create mode 100644 src/Game.cpp create mode 100644 src/Global.cpp create mode 100644 src/Makefile create mode 100644 src/Player.cpp create mode 100644 src/Powerup.cpp create mode 100644 src/State.cpp create mode 100644 src/includes/Enemy1.hpp create mode 100644 src/includes/Enemy2.hpp create mode 100644 src/includes/Enemy3.hpp create mode 100644 src/includes/Entity.hpp create mode 100644 src/includes/Game.hpp create mode 100644 src/includes/Global.hpp create mode 100644 src/includes/Player.hpp create mode 100644 src/includes/Powerup.hpp create mode 100644 src/includes/State.hpp create mode 100644 src/main.cpp diff --git a/.gitignore b/.gitignore index c08a326..a1556de 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ +sfml-rpg +*.o *.out *.exe 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; -} diff --git a/src/Enemy1.cpp b/src/Enemy1.cpp new file mode 100644 index 0000000..fc1e87d --- /dev/null +++ b/src/Enemy1.cpp @@ -0,0 +1,19 @@ +#include"includes/Global.hpp" +#include"includes/Enemy1.hpp" +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; +} diff --git a/src/Enemy2.cpp b/src/Enemy2.cpp new file mode 100644 index 0000000..fc65942 --- /dev/null +++ b/src/Enemy2.cpp @@ -0,0 +1,30 @@ +#include"includes/Global.hpp" +#include"includes/Enemy2.hpp" +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; + } +} diff --git a/src/Enemy3.cpp b/src/Enemy3.cpp new file mode 100644 index 0000000..0ed8726 --- /dev/null +++ b/src/Enemy3.cpp @@ -0,0 +1,17 @@ +#include"includes/Global.hpp" +#include"includes/Enemy3.hpp" +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; +} diff --git a/src/Entity.cpp b/src/Entity.cpp new file mode 100644 index 0000000..cc9f418 --- /dev/null +++ b/src/Entity.cpp @@ -0,0 +1,19 @@ +#include"includes/Global.hpp" +#include"includes/Entity.hpp" +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; + } +} diff --git a/src/Game.cpp b/src/Game.cpp new file mode 100644 index 0000000..fdb5f54 --- /dev/null +++ b/src/Game.cpp @@ -0,0 +1,282 @@ +#include"includes/Global.hpp" +#include"includes/Game.hpp" + +#include +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;i0) stomptime-=dt; + else stomptime=0; +} diff --git a/src/Powerup.cpp b/src/Powerup.cpp new file mode 100644 index 0000000..53bbb57 --- /dev/null +++ b/src/Powerup.cpp @@ -0,0 +1,7 @@ +#include"includes/Global.hpp" +#include"includes/Powerup.hpp" +float Powerup::time=20; +Powerup::Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja) +{ + +} diff --git a/src/State.cpp b/src/State.cpp new file mode 100644 index 0000000..510e8ca --- /dev/null +++ b/src/State.cpp @@ -0,0 +1,59 @@ +#include"includes/Global.hpp" +#include"includes/State.hpp" + +#include"includes/Game.hpp" +#include +State::State() +{ + prozor.create(sf::VideoMode::getFullscreenModes()[0],"RPG igra"); + prozor.setFramerateLimit(60); + visina=prozor.getSize().y; + sirina=prozor.getSize().x; +} +void State::events() +{ + sf::Event evnt; + while(prozor.pollEvent(evnt)) + { + switch(evnt.type) + { + case sf::Event::EventType::Closed: + prozor.close(); + break; + case sf::Event::EventType::Resized: + std::cout<<"Nova velicina prozora je:"<loop(ischanged,pause); + if(ischanged) ischanged=0; + } +} diff --git a/src/includes/Enemy1.hpp b/src/includes/Enemy1.hpp new file mode 100644 index 0000000..0405365 --- /dev/null +++ b/src/includes/Enemy1.hpp @@ -0,0 +1,17 @@ +#ifndef ENEMY1_H +#define ENEMY1_H + +#include"Entity.hpp" +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); +}; + +#endif diff --git a/src/includes/Enemy2.hpp b/src/includes/Enemy2.hpp new file mode 100644 index 0000000..25555a4 --- /dev/null +++ b/src/includes/Enemy2.hpp @@ -0,0 +1,17 @@ +#ifndef ENEMY2_H +#define ENEMY2_H + +#include"Entity.hpp" +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); +}; + +#endif diff --git a/src/includes/Enemy3.hpp b/src/includes/Enemy3.hpp new file mode 100644 index 0000000..e1498bf --- /dev/null +++ b/src/includes/Enemy3.hpp @@ -0,0 +1,17 @@ +#ifndef ENEMY3_H +#define ENEMY3_H + +#include"Entity.hpp" +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); +}; + +#endif diff --git a/src/includes/Entity.hpp b/src/includes/Entity.hpp new file mode 100644 index 0000000..7f83c98 --- /dev/null +++ b/src/includes/Entity.hpp @@ -0,0 +1,15 @@ +#ifndef ENTITY_H +#define ENTITY_H + +#include +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); +}; + +#endif diff --git a/src/includes/Game.hpp b/src/includes/Game.hpp new file mode 100644 index 0000000..4418ab3 --- /dev/null +++ b/src/includes/Game.hpp @@ -0,0 +1,54 @@ +#ifndef GAME_H +#define GAME_H + +#include"Player.hpp" +#include"Enemy1.hpp" +#include"Enemy2.hpp" +#include"Enemy3.hpp" +#include"Powerup.hpp" + +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); +}; + +#endif diff --git a/src/includes/Global.hpp b/src/includes/Global.hpp new file mode 100644 index 0000000..bfb808a --- /dev/null +++ b/src/includes/Global.hpp @@ -0,0 +1,12 @@ +#ifndef GLOBAL_H +#define GLOBAL_H + +#include +#define seseku(a,b) a.getGlobalBounds().intersects(b.getGlobalBounds()) +class Global +{ + public: + static std::mt19937 rng; +}; + +#endif diff --git a/src/includes/Player.hpp b/src/includes/Player.hpp new file mode 100644 index 0000000..3a2a040 --- /dev/null +++ b/src/includes/Player.hpp @@ -0,0 +1,17 @@ +#ifndef PLAYER_H +#define PLAYER_H + +#include"Entity.hpp" +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); +}; + +#endif diff --git a/src/includes/Powerup.hpp b/src/includes/Powerup.hpp new file mode 100644 index 0000000..2b6ec72 --- /dev/null +++ b/src/includes/Powerup.hpp @@ -0,0 +1,13 @@ +#ifndef POWRUP_H +#define POWERUP_H + +#include"Entity.hpp" +class Powerup:public Entity +{ + public: + static float time; + Powerup():Entity() {} + Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); +}; + +#endif diff --git a/src/includes/State.hpp b/src/includes/State.hpp new file mode 100644 index 0000000..fdde7b8 --- /dev/null +++ b/src/includes/State.hpp @@ -0,0 +1,19 @@ +#ifndef STATE_H +#define STATE_H + +#include +class State +{ + private: + sf::RenderWindow prozor; + int visina,sirina; + bool ischanged=0,pause=0; + + void events(); + void keyboard(); + public: + State(); + void loop(); +}; + +#endif diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..dbb1610 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,8 @@ +#include"includes/Global.hpp" +#include"includes/State.hpp" +int main() +{ + State program; + program.loop(); + return 0; +} -- cgit v1.2.3