diff options
| -rw-r--r-- | assets/images/clear.png | bin | 0 -> 7213 bytes | |||
| -rw-r--r-- | assets/images/vampiric.png | bin | 0 -> 18810 bytes | |||
| -rw-r--r-- | src/Enemy1.cpp | 1 | ||||
| -rw-r--r-- | src/Enemy2.cpp | 1 | ||||
| -rw-r--r-- | src/Enemy3.cpp | 1 | ||||
| -rw-r--r-- | src/Entity.cpp | 1 | ||||
| -rw-r--r-- | src/Game.cpp | 76 | ||||
| -rw-r--r-- | src/Global.cpp | 1 | ||||
| -rw-r--r-- | src/Player.cpp | 7 | ||||
| -rw-r--r-- | src/Powerup.cpp | 10 | ||||
| -rw-r--r-- | src/State.cpp | 23 | ||||
| -rw-r--r-- | src/includes/Enemy1.hpp | 2 | ||||
| -rw-r--r-- | src/includes/Enemy2.hpp | 2 | ||||
| -rw-r--r-- | src/includes/Enemy3.hpp | 2 | ||||
| -rw-r--r-- | src/includes/Game.hpp | 1 | ||||
| -rw-r--r-- | src/includes/Player.hpp | 3 | ||||
| -rw-r--r-- | src/includes/Powerup.hpp | 4 | ||||
| -rw-r--r-- | src/main.cpp | 1 |
18 files changed, 107 insertions, 29 deletions
diff --git a/assets/images/clear.png b/assets/images/clear.png Binary files differnew file mode 100644 index 0000000..9e58435 --- /dev/null +++ b/assets/images/clear.png diff --git a/assets/images/vampiric.png b/assets/images/vampiric.png Binary files differnew file mode 100644 index 0000000..d978147 --- /dev/null +++ b/assets/images/vampiric.png diff --git a/src/Enemy1.cpp b/src/Enemy1.cpp index fc1e87d..ddcc882 100644 --- a/src/Enemy1.cpp +++ b/src/Enemy1.cpp @@ -1,5 +1,6 @@ #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) diff --git a/src/Enemy2.cpp b/src/Enemy2.cpp index 98de1a6..e89fbb2 100644 --- a/src/Enemy2.cpp +++ b/src/Enemy2.cpp @@ -1,5 +1,6 @@ #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) { diff --git a/src/Enemy3.cpp b/src/Enemy3.cpp index 0ed8726..c9ba26c 100644 --- a/src/Enemy3.cpp +++ b/src/Enemy3.cpp @@ -1,5 +1,6 @@ #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) { diff --git a/src/Entity.cpp b/src/Entity.cpp index cc9f418..5759b94 100644 --- a/src/Entity.cpp +++ b/src/Entity.cpp @@ -1,5 +1,6 @@ #include"includes/Global.hpp" #include"includes/Entity.hpp" + Entity::Entity(sf::Vector2f pozicija, sf::Vector2f velicina,sf::Color boja) { telo.setSize(velicina); diff --git a/src/Game.cpp b/src/Game.cpp index 04599e3..2991f88 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -36,12 +36,29 @@ void Game::initui() score.setFillColor(sf::Color::White); score.setPosition(sirina*5.0/6,50); } +void Game::pwptex() +{ + for(size_t i=0;i<pow.size();i++) switch(pow.at(i).type) + { + case 1: + pow.at(i).telo.setTexture(tex["health"]); + break; + case 2: + pow.at(i).telo.setTexture(tex["clear"]); + break; + case 3: + pow.at(i).telo.setTexture(tex["vampiric"]); + break; + default: + break; + } +} void Game::inittex() { - for(size_t i=0;i<pow.size();i++) pow.at(i).telo.setTexture(tex["health"]); for(size_t i=0;i<nep1.size();i++) nep1.at(i).telo.setTexture(tex["neprijatelj"]); for(size_t i=0;i<nep2.size();i++) nep2.at(i).telo.setTexture(tex["neprijatelj"]); for(size_t i=0;i<nep3.size();i++) nep3.at(i).telo.setTexture(tex["neprijatelj"]); + pwptex(); } void Game::initent() { @@ -49,7 +66,7 @@ void Game::initent() 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)); + pow.push_back(Powerup(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::White,Global::rng()%3+1)); } void Game::updatewin() { @@ -85,6 +102,7 @@ bool Game::gameover() void Game::updatedt() { dt=sat.restart().asMicroseconds()/1000000.0; + if(dt>1) dt=0; } void Game::updateui() { @@ -103,6 +121,7 @@ void Game::stompmain() { igrac.xp+=5; nep1.at(i).ziv=0; + if(igrac.vampirictime>0) igrac.health+=5; } } for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv) @@ -111,6 +130,7 @@ void Game::stompmain() { igrac.xp+=10; nep2.at(i).ziv=0; + if(igrac.vampirictime>0) igrac.health+=10; } } for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv) @@ -119,6 +139,7 @@ void Game::stompmain() { igrac.xp+=20; nep3.at(i).ziv=0; + if(igrac.vampirictime>0) igrac.health+=20; } } } @@ -133,7 +154,12 @@ void Game::keyboard() } void Game::draw() { - if(igrac.stomptime>4.6) prozor->draw(igrac.krug); + if(igrac.stomptime>4.6) + { + if(igrac.vampirictime>0) igrac.krug.setOutlineColor(sf::Color::Red); + else igrac.krug.setOutlineColor(sf::Color::White); + prozor->draw(igrac.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); @@ -182,7 +208,7 @@ void Game::checkcollision() if(seseku(nep1.at(i).telo,igrac.telo)) { nep1.at(i).ziv=0; - igrac.health-=Global::rng()%4+1; // 1-4 dmg + igrac.health-=Global::rng()%4+1; } } for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv) @@ -190,7 +216,7 @@ void Game::checkcollision() if(seseku(nep2.at(i).telo,igrac.telo)) { nep2.at(i).ziv=0; - igrac.health-=Global::rng()%8+1; // 1-8 dmg + igrac.health-=Global::rng()%8+1; } } for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv) @@ -198,7 +224,7 @@ void Game::checkcollision() if(seseku(nep3.at(i).telo,igrac.telo)) { nep3.at(i).ziv=0; - igrac.health-=Global::rng()%12+1; // 1-12 dmg + igrac.health-=Global::rng()%12+1; } } for(size_t i=0;i<pow.size();i++) if(pow.at(i).ziv) @@ -206,7 +232,37 @@ void Game::checkcollision() if(seseku(pow.at(i).telo,igrac.telo)) { pow.at(i).ziv=0; - igrac.health+=Global::rng()%20+21; // 20-40 heal + switch(pow.at(i).type) + { + case 1: + //health + igrac.health+=Global::rng()%20+21; + break; + case 2: + //clear + for(size_t i=0;i<nep1.size();i++) if(nep1.at(i).ziv) + { + nep1.at(i).ziv=0; + igrac.xp+=5; + } + for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv) + { + nep2.at(i).ziv=0; + igrac.xp+=10; + } + for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv) + { + nep3.at(i).ziv=0; + igrac.xp+=20; + } + break; + case 3: + //vampiric + igrac.vampirictime=12; + break; + default: + break; + } } } } @@ -235,18 +291,21 @@ void Game::respawn() if(Powerup::time<0) { Powerup::time=20; - for(size_t i=0;i<pow.size();i++) pow.at(i).respawn(sirina,visina); + for(size_t i=0;i<pow.size();i++) pow.at(i).respawn(sirina,visina,Global::rng()%3+1); + pwptex(); } } void Game::run() { igrac.updatest(dt); + igrac.updatevt(dt); respawn(); position(); checkcollision(); } void Game::loop(bool ischanged,bool pause) { + updatedt(); if(ischanged) updatewin(); if(!pause) { @@ -254,5 +313,4 @@ void Game::loop(bool ischanged,bool pause) run(); } updateui(); - updatedt(); } diff --git a/src/Global.cpp b/src/Global.cpp index e95f785..ee9f2ed 100644 --- a/src/Global.cpp +++ b/src/Global.cpp @@ -1,2 +1,3 @@ #include"includes/Global.hpp" + std::mt19937 Global::rng = std::mt19937(time(0)); diff --git a/src/Player.cpp b/src/Player.cpp index 19f6539..d5c4cc3 100644 --- a/src/Player.cpp +++ b/src/Player.cpp @@ -1,9 +1,11 @@ #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; + vampirictime=0; xp=0; krug.setRadius(stomprad); @@ -17,3 +19,8 @@ void Player::updatest(float dt) if(stomptime>0) stomptime-=dt; else stomptime=0; } +void Player::updatevt(float dt) +{ + if(vampirictime>0) vampirictime-=dt; + else vampirictime=0; +} diff --git a/src/Powerup.cpp b/src/Powerup.cpp index 53bbb57..786a02d 100644 --- a/src/Powerup.cpp +++ b/src/Powerup.cpp @@ -1,7 +1,13 @@ #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) +Powerup::Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja,int vrsta):Entity(pozicija,velicina,boja) { - + type=vrsta; +} +void Powerup::respawn(int sirina,int visina,int vrsta) +{ + Entity::respawn(sirina,visina); + type=vrsta; } diff --git a/src/State.cpp b/src/State.cpp index a8f7aea..8a74331 100644 --- a/src/State.cpp +++ b/src/State.cpp @@ -1,7 +1,7 @@ #include"includes/Global.hpp" #include"includes/State.hpp" - #include"includes/Game.hpp" + #include<iostream> State::State() { @@ -21,18 +21,15 @@ void State::initassets() font["default"] = new sf::Font; tex["neprijatelj"] = new sf::Texture; tex["health"] = new sf::Texture; - if(!font["default"]->loadFromFile("assets/fonts/LiberationMono-Regular.ttf")) - { - std::cerr<<"Font not found\n"; - } - if(!tex["health"]->loadFromFile("assets/images/healing.png")) - { - std::cerr<<"Texture not found\n"; - } - if(!tex["neprijatelj"]->loadFromFile("assets/images/nep.png")) - { - std::cerr<<"Texture not found\n"; - } + tex["clear"] = new sf::Texture; + tex["vampiric"] = new sf::Texture; + //tex["djule"] = new sf::Texture; + font["default"]->loadFromFile("assets/fonts/LiberationMono-Regular.ttf"); + tex["health"]->loadFromFile("assets/images/healing.png"); + tex["neprijatelj"]->loadFromFile("assets/images/nep.png"); + tex["clear"]->loadFromFile("assets/images/clear.png"); + tex["vampiric"]->loadFromFile("assets/images/vampiric.png"); + //tex["djule"]->loadFromFile("assets/images/djule.png"); } void State::events() { sf::Event evnt; diff --git a/src/includes/Enemy1.hpp b/src/includes/Enemy1.hpp index 0405365..9c7f7f3 100644 --- a/src/includes/Enemy1.hpp +++ b/src/includes/Enemy1.hpp @@ -5,7 +5,7 @@ class Enemy1:public Entity { private: - float vx,vy; + float vx=0,vy=0; public: static float time; Enemy1():Entity() {} diff --git a/src/includes/Enemy2.hpp b/src/includes/Enemy2.hpp index 25555a4..c619c54 100644 --- a/src/includes/Enemy2.hpp +++ b/src/includes/Enemy2.hpp @@ -5,7 +5,7 @@ class Enemy2:public Entity { private: - float vx,vy; + float vx=0,vy=0; public: static float time; Enemy2():Entity() {} diff --git a/src/includes/Enemy3.hpp b/src/includes/Enemy3.hpp index e1498bf..c1e1227 100644 --- a/src/includes/Enemy3.hpp +++ b/src/includes/Enemy3.hpp @@ -5,7 +5,7 @@ class Enemy3:public Entity { private: - float vx,vy; + float vx=0,vy=0; public: static float time; Enemy3():Entity() {} diff --git a/src/includes/Game.hpp b/src/includes/Game.hpp index 765fa2c..b04b1c3 100644 --- a/src/includes/Game.hpp +++ b/src/includes/Game.hpp @@ -40,6 +40,7 @@ class Game void initshapes(); void initui(); void inittex(); + void pwptex(); void initent(); void updatewin(); public: diff --git a/src/includes/Player.hpp b/src/includes/Player.hpp index ff094e9..2c6a776 100644 --- a/src/includes/Player.hpp +++ b/src/includes/Player.hpp @@ -7,13 +7,14 @@ class Player:public Entity public: int health,xp; int stomprad=270; - float stomptime; + float stomptime,vampirictime; sf::CircleShape krug; Player():Entity() {} Player(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); void updatest(float dt); + void updatevt(float dt); }; #endif diff --git a/src/includes/Powerup.hpp b/src/includes/Powerup.hpp index 2b6ec72..8a4d7db 100644 --- a/src/includes/Powerup.hpp +++ b/src/includes/Powerup.hpp @@ -6,8 +6,10 @@ class Powerup:public Entity { public: static float time; + int type; Powerup():Entity() {} - Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); + Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja,int vrsta); + void respawn(int sirina,int visina,int vrsta); }; #endif diff --git a/src/main.cpp b/src/main.cpp index dbb1610..0a0856a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ #include"includes/Global.hpp" #include"includes/State.hpp" + int main() { State program; |
