diff options
| author | aleksav013 <aleksav013@gmail.com> | 2021-06-01 21:03:32 +0200 |
|---|---|---|
| committer | aleksav013 <aleksav013@gmail.com> | 2021-06-01 21:03:32 +0200 |
| commit | dbe41a2f77774ee716d3ff45db766d6400970f57 (patch) | |
| tree | ec86f7305bcb2d3eec37bf8e123cb901f80a5a5d /src | |
| parent | 82d49a6825af009d950b3a6c18d609da2ef8486c (diff) | |
Splitting code; Creating Makefile
Diffstat (limited to 'src')
| -rw-r--r-- | src/Enemy1.cpp | 19 | ||||
| -rw-r--r-- | src/Enemy2.cpp | 30 | ||||
| -rw-r--r-- | src/Enemy3.cpp | 17 | ||||
| -rw-r--r-- | src/Entity.cpp | 19 | ||||
| -rw-r--r-- | src/Game.cpp | 282 | ||||
| -rw-r--r-- | src/Global.cpp | 2 | ||||
| -rw-r--r-- | src/Makefile | 15 | ||||
| -rw-r--r-- | src/Player.cpp | 13 | ||||
| -rw-r--r-- | src/Powerup.cpp | 7 | ||||
| -rw-r--r-- | src/State.cpp | 59 | ||||
| -rw-r--r-- | src/includes/Enemy1.hpp | 17 | ||||
| -rw-r--r-- | src/includes/Enemy2.hpp | 17 | ||||
| -rw-r--r-- | src/includes/Enemy3.hpp | 17 | ||||
| -rw-r--r-- | src/includes/Entity.hpp | 15 | ||||
| -rw-r--r-- | src/includes/Game.hpp | 54 | ||||
| -rw-r--r-- | src/includes/Global.hpp | 12 | ||||
| -rw-r--r-- | src/includes/Player.hpp | 17 | ||||
| -rw-r--r-- | src/includes/Powerup.hpp | 13 | ||||
| -rw-r--r-- | src/includes/State.hpp | 19 | ||||
| -rw-r--r-- | src/main.cpp | 8 |
20 files changed, 652 insertions, 0 deletions
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<iostream> +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;i<pow.size();i++) pow.at(i).telo.setTexture(&healthtex); + for(size_t i=0;i<nep1.size();i++) nep1.at(i).telo.setTexture(&neprijateljtex); + for(size_t i=0;i<nep2.size();i++) nep2.at(i).telo.setTexture(&neprijateljtex); + for(size_t i=0;i<nep3.size();i++) nep3.at(i).telo.setTexture(&neprijateljtex); +} +void Game::initent() +{ + igrac = Player(sf::Vector2f(sirina/2.0,visina/2.0),sf::Vector2f(100.0f,100.0f),sf::Color::White); + for(size_t i=0;i<20;i++) nep1.push_back(Enemy1(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::Red)); + for(size_t i=0;i<7;i++) nep2.push_back(Enemy2(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::Cyan));//(253,106,2))); + for(size_t i=0;i<4;i++) nep3.push_back(Enemy3(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::Yellow)); + pow.push_back(Powerup(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::White)); +} +void Game::updatewin() +{ + visina=prozor->getSize().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;i<nep1.size();i++) if(nep1.at(i).ziv) + { + if(seseku(nep1.at(i).telo,krug)) + { + igrac.xp+=5; + nep1.at(i).ziv=0; + } + } + for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv) + { + if(seseku(nep2.at(i).telo,krug)) + { + igrac.xp+=10; + nep2.at(i).ziv=0; + } + } + for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv) + { + if(seseku(nep3.at(i).telo,krug)) + { + igrac.xp+=20; + nep3.at(i).ziv=0; + } + } +} +void Game::keyboard() +{ + float dist=500.0*dt; + if((sf::Keyboard::isKeyPressed(sf::Keyboard::W)||sf::Keyboard::isKeyPressed(sf::Keyboard::Up))&&igrac.y>0) 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.y<visina) igrac.y+=dist; + if((sf::Keyboard::isKeyPressed(sf::Keyboard::D)||sf::Keyboard::isKeyPressed(sf::Keyboard::Right))&&igrac.x<sirina) igrac.x+=dist; + if(sf::Keyboard::isKeyPressed(sf::Keyboard::Space)) if(igrac.stomptime<=0) stompmain(); +} +void Game::draw() +{ + prozor->clear(); + if(igrac.stomptime>4.6) prozor->draw(krug); + prozor->draw(igrac.telo); + for(size_t i=0;i<nep1.size();i++) if(nep1.at(i).ziv) prozor->draw(nep1.at(i).telo); + for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv) prozor->draw(nep2.at(i).telo); + for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv) prozor->draw(nep3.at(i).telo); + for(size_t i=0;i<pow.size();i++) if(pow.at(i).ziv) prozor->draw(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;i<nep1.size();i++) if(nep1.at(i).ziv) + { + nep1.at(i).izracunajbrzinu(igrac.x,igrac.y); + nep1.at(i).izracunajpoz(dt); + nep1.at(i).telo.setPosition(nep1.at(i).x,nep1.at(i).y); + } + for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv) + { + nep2.at(i).izracunajbrzinu(igrac.x,igrac.y,dt); + nep2.at(i).izracunajpoz(igrac.x,igrac.y,dt); + nep2.at(i).telo.setPosition(nep2.at(i).x,nep2.at(i).y); + } + for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv) + { + nep3.at(i).izracunajbrzinu(sirina,visina); + nep3.at(i).izracunajpoz(dt); + nep3.at(i).telo.setPosition(nep3.at(i).x,nep3.at(i).y); + } + for(size_t i=0;i<pow.size();i++) if(pow.at(i).ziv) + { + pow.at(i).telo.setPosition(pow.at(i).x,pow.at(i).y); + } +} +void Game::checkcollision() +{ + for(size_t i=0;i<nep1.size();i++) if(nep1.at(i).ziv) + { + if(seseku(nep1.at(i).telo,igrac.telo)) + { + nep1.at(i).ziv=0; + igrac.health-=Global::rng()%4+1; // 1-4 dmg + } + } + for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv) + { + if(seseku(nep2.at(i).telo,igrac.telo)) + { + nep2.at(i).ziv=0; + igrac.health-=Global::rng()%8+1; // 1-8 dmg + } + } + for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv) + { + if(seseku(nep3.at(i).telo,igrac.telo)) + { + nep3.at(i).ziv=0; + igrac.health-=Global::rng()%12+1; // 1-12 dmg + } + } + for(size_t i=0;i<pow.size();i++) if(pow.at(i).ziv) + { + if(seseku(pow.at(i).telo,igrac.telo)) + { + pow.at(i).ziv=0; + igrac.health+=Global::rng()%20+21; // 20-40 heal + } + } +} +void Game::respawn() +{ + Enemy1::time-=dt; + Enemy2::time-=dt; + Enemy3::time-=dt; + Powerup::time-=dt; + + if(Enemy1::time<0) + { + Enemy1::time=8; + for(size_t i=0;i<nep1.size();i++) nep1.at(i).respawn(sirina,visina); + } + if(Enemy2::time<0) + { + Enemy2::time=14; + for(size_t i=0;i<nep2.size();i++) nep2.at(i).respawn(sirina,visina); + } + if(Enemy3::time<0) + { + Enemy3::time=10; + for(size_t i=0;i<nep3.size();i++) nep3.at(i).respawn(sirina,visina); + } + if(Powerup::time<0) + { + Powerup::time=20; + for(size_t i=0;i<pow.size();i++) pow.at(i).respawn(sirina,visina); + } +} +void Game::run() +{ + if(gameover()) return; + + updateui(); + igrac.updatest(dt); + + respawn(); + position(); + checkcollision(); +} +void Game::loop(bool ischanged,bool pause) +{ + if(ischanged) updatewin(); + if(!pause) + { + keyboard(); + run(); + } + updatedt(); + draw(); +} diff --git a/src/Global.cpp b/src/Global.cpp new file mode 100644 index 0000000..e95f785 --- /dev/null +++ b/src/Global.cpp @@ -0,0 +1,2 @@ +#include"includes/Global.hpp" +std::mt19937 Global::rng = std::mt19937(time(0)); diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..b4ed4bd --- /dev/null +++ b/src/Makefile @@ -0,0 +1,15 @@ +CXX = g++ +CXXFLAGS = --std=c++14 -g -O2 -Wall +SRC_DIR = src/ +OBJECTS = main.o State.o Game.o Global.o Enemy1.o Enemy2.o Enemy3.o Powerup.o Entity.o Player.o + +all: sfml-rpg + +sfml-rpg: $(OBJECTS) + $(CXX) $(CXXFLAGS) $(OBJECTS) -o sfml-rpg -lsfml-graphics -lsfml-window -lsfml-system + +%.o : %.cpp + $(CXX) $(CXXFLAGS) -c $< + +clean: + rm -f $(OBJECTS) sfml-rpg diff --git a/src/Player.cpp b/src/Player.cpp new file mode 100644 index 0000000..d73ead1 --- /dev/null +++ b/src/Player.cpp @@ -0,0 +1,13 @@ +#include"includes/Global.hpp" +#include"includes/Player.hpp" +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; +} 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<iostream> +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:"<<prozor.getSize().x<<'x'<<prozor.getSize().y<<std::endl; + ischanged=1; + visina=prozor.getSize().y; + sirina=prozor.getSize().x; + prozor.setView(sf::View(sf::FloatRect(0,0,sirina,visina))); + break; + case sf::Event::EventType::KeyPressed: + keyboard(); + break; + default: + break; + } + } +} +void State::keyboard() +{ + if(sf::Keyboard::isKeyPressed(sf::Keyboard::P)) + { + pause=1; + } + if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) + { + pause=0; + ischanged=1; + } +} +void State::loop() +{ + Game *igra=new Game(&prozor); + while(prozor.isOpen()) + { + events(); + igra->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<SFML/Graphics.hpp> +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<Enemy1> nep1; + std::vector<Enemy2> nep2; + std::vector<Enemy3> nep3; + std::vector<Powerup> 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<random> +#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<SFML/Graphics.hpp> +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; +} |
