aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraleksav013 <aleksav013@gmail.com>2021-06-01 21:03:32 +0200
committeraleksav013 <aleksav013@gmail.com>2021-06-01 21:03:32 +0200
commitdbe41a2f77774ee716d3ff45db766d6400970f57 (patch)
treeec86f7305bcb2d3eec37bf8e123cb901f80a5a5d
parent82d49a6825af009d950b3a6c18d609da2ef8486c (diff)
Splitting code; Creating Makefile
-rw-r--r--.gitignore2
-rw-r--r--src/Enemy1.cpp19
-rw-r--r--src/Enemy2.cpp30
-rw-r--r--src/Enemy3.cpp17
-rw-r--r--src/Entity.cpp19
-rw-r--r--src/Game.cpp (renamed from main.cpp)287
-rw-r--r--src/Global.cpp2
-rw-r--r--src/Makefile15
-rw-r--r--src/Player.cpp13
-rw-r--r--src/Powerup.cpp7
-rw-r--r--src/State.cpp59
-rw-r--r--src/includes/Enemy1.hpp17
-rw-r--r--src/includes/Enemy2.hpp17
-rw-r--r--src/includes/Enemy3.hpp17
-rw-r--r--src/includes/Entity.hpp15
-rw-r--r--src/includes/Game.hpp54
-rw-r--r--src/includes/Global.hpp12
-rw-r--r--src/includes/Player.hpp17
-rw-r--r--src/includes/Powerup.hpp13
-rw-r--r--src/includes/State.hpp19
-rw-r--r--src/main.cpp8
21 files changed, 378 insertions, 281 deletions
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/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/main.cpp b/src/Game.cpp
index 2e83c6e..fdb5f54 100644
--- a/main.cpp
+++ b/src/Game.cpp
@@ -1,209 +1,7 @@
-#include<iostream>
-#include<SFML/Graphics.hpp>
-#include<random>
-#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)
-{
+#include"includes/Global.hpp"
+#include"includes/Game.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);
-};
-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<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);
-};
+#include<iostream>
void Game::initshapes()
{
krug.setRadius(igrac.stomprad);
@@ -226,7 +24,7 @@ void Game::initshapes()
}
void Game::initui()
{
- if(!font.loadFromFile("assets/fonts/LiberationMono-Regular.ttf"))
+ if(!font.loadFromFile("../assets/fonts/LiberationMono-Regular.ttf"))
{
std::cerr<<"Font not found\n";
}
@@ -251,11 +49,11 @@ void Game::initui()
}
void Game::inittex()
{
- if(!healthtex.loadFromFile("assets/images/healing.png"))
+ if(!healthtex.loadFromFile("../assets/images/healing.png"))
{
std::cerr<<"Texture not found\n";
}
- if(!neprijateljtex.loadFromFile("assets/images/nep.png"))
+ if(!neprijateljtex.loadFromFile("../assets/images/nep.png"))
{
std::cerr<<"Texture not found\n";
}
@@ -482,76 +280,3 @@ void Game::loop(bool ischanged,bool pause)
updatedt();
draw();
}
-class State
-{
- private:
- sf::RenderWindow prozor;
- int visina,sirina;
- bool ischanged=0,pause=0;
-
- void events();
- void keyboard();
- public:
- State();
- void loop();
-};
-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=true;
- }
- if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
- {
- pause=false;
- ischanged=1;
- }
-}
-void State::loop()
-{
- Game *igra=new Game(&prozor);
- while(prozor.isOpen())
- {
- events();
- igra->loop(ischanged,pause);
- if(ischanged) ischanged=0;
- }
-}
-int main()
-{
- State program;
- program.loop();
- return 0;
-}
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;
+}