From 9d0fa437f338b9e1616dc17ef4d0e5934c743380 Mon Sep 17 00:00:00 2001 From: aleksav013 Date: Fri, 28 May 2021 19:58:47 +0200 Subject: Tidying up code --- .gitignore | 2 +- main.cpp | 188 ++++++++++++++++++++++++++++++++++++------------------------- 2 files changed, 112 insertions(+), 78 deletions(-) diff --git a/.gitignore b/.gitignore index 249eac7..c08a326 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -a.out +*.out *.exe diff --git a/main.cpp b/main.cpp index 1d83fc6..657634f 100644 --- a/main.cpp +++ b/main.cpp @@ -11,7 +11,7 @@ std::mt19937 Global::rng = std::mt19937(time(0)); class Entity { public: - int ziv=1; + bool ziv=1; float x,y; sf::RectangleShape telo; Entity() {} Entity(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); @@ -48,23 +48,31 @@ Powerup::Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Ent } 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 kaigracu(float igracx,float igracy,float dt); + 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::kaigracu(float igracx,float igracy,float dt) +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; - x+=dx*dt; - y+=dy*dt; + vx=dx; + vy=dy; +} +void Enemy1::izracunajpoz(float dt) +{ + x+=vx*dt; + y+=vy*dt; } class Enemy2:public Entity { @@ -74,7 +82,7 @@ class Enemy2:public Entity static float time; Enemy2():Entity() {} Enemy2(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja); - void brzina(float igracx,float igracy,float dt); + void izracunajbrzinu(float igracx,float igracy,float dt); void izracunajpoz(float igracx,float igracy,float dt); }; float Enemy2::time=14; @@ -82,7 +90,7 @@ Enemy2::Enemy2(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entit { vx=vy=0; } -void Enemy2::brzina(float igracx,float igracy,float dt) +void Enemy2::izracunajbrzinu(float igracx,float igracy,float dt) { float k=(igracy-y)/(igracx-x); float r=200.0*dt; @@ -113,6 +121,7 @@ class Enemy3:public Entity 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) @@ -124,6 +133,11 @@ 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: @@ -175,6 +189,10 @@ class Game void stompmain(); void updateui(); void updatedt(); + void position(); + void checkcollision(); + void respawn(); + bool gameover(); public: Game(); void loop(); @@ -186,9 +204,9 @@ Game::Game() sirina=prozor.getSize().x; prozor.setFramerateLimit(60); igrac = Player(sf::Vector2f((float)sirina/2,(float)visina/2),sf::Vector2f(100.0f,100.0f),sf::Color::White); - for(int i=0;i<20;i++) nep.push_back(Enemy1(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::Red)); - for(int 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(int 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)); + for(size_t i=0;i<20;i++) nep.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)); igrac.x=(float)prozor.getSize().x/2; igrac.y=(float)prozor.getSize().y/2; @@ -243,10 +261,21 @@ Game::Game() { std::cout<<"Texture not found\n"; } - for(int i=0;i4.6) prozor.draw(krug); prozor.draw(igrac.telo); - for(int i=0;isirina) nep3[i].vx=-nep3[i].vx; - if(nep3[i].y<0||nep3[i].y>visina) nep3[i].vy=-nep3[i].vy; - nep3[i].izracunajpoz(dt); - } - - //respawn - Enemy1::time-=dt; - Enemy2::time-=dt; - Enemy3::time-=dt; - Powerup::time-=dt; - if(Enemy1::time<0) + igrac.telo.setPosition(igrac.x,igrac.y); + for(size_t i=0;i