diff options
| author | aleksav013 <aleksav013@gmail.com> | 2021-05-28 19:58:47 +0200 |
|---|---|---|
| committer | aleksav013 <aleksav013@gmail.com> | 2021-05-28 20:16:53 +0200 |
| commit | 9d0fa437f338b9e1616dc17ef4d0e5934c743380 (patch) | |
| tree | afcf3717c7082449a99070581bd4231451ac012e /main.cpp | |
| parent | 438c1fcc3a834f2863d2462301d3f1d8feee09d2 (diff) | |
Tidying up code
Diffstat (limited to 'main.cpp')
| -rw-r--r-- | main.cpp | 188 |
1 files changed, 111 insertions, 77 deletions
@@ -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;i<pow.size();i++) pow[i].telo.setTexture(&healthtex); - for(int i=0;i<nep.size();i++) nep[i].telo.setTexture(&neprijatelj); - for(int i=0;i<nep2.size();i++) nep2[i].telo.setTexture(&neprijatelj); - for(int i=0;i<nep3.size();i++) nep3[i].telo.setTexture(&neprijatelj); + + for(size_t i=0;i<pow.size();i++) pow[i].telo.setTexture(&healthtex); + for(size_t i=0;i<nep.size();i++) nep[i].telo.setTexture(&neprijatelj); + for(size_t i=0;i<nep2.size();i++) nep2[i].telo.setTexture(&neprijatelj); + for(size_t i=0;i<nep3.size();i++) nep3[i].telo.setTexture(&neprijatelj); +} +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() { @@ -263,7 +292,7 @@ void Game::stompmain() { igrac.stomptime=5; krug.setPosition(igrac.x,igrac.y); - for(int i=0;i<nep.size();i++) if(nep[i].ziv) + for(size_t i=0;i<nep.size();i++) if(nep[i].ziv) { if(seseku(nep[i].telo,krug)) { @@ -271,7 +300,7 @@ void Game::stompmain() nep[i].ziv=0; } } - for(int i=0;i<nep2.size();i++) if(nep2[i].ziv) + for(size_t i=0;i<nep2.size();i++) if(nep2[i].ziv) { if(seseku(nep2[i].telo,krug)) { @@ -279,7 +308,7 @@ void Game::stompmain() nep2[i].ziv=0; } } - for(int i=0;i<nep3.size();i++) if(nep3[i].ziv) + for(size_t i=0;i<nep3.size();i++) if(nep3[i].ziv) { if(seseku(nep3[i].telo,krug)) { @@ -323,10 +352,10 @@ void Game::draw() prozor.clear(); if(igrac.stomptime>4.6) prozor.draw(krug); prozor.draw(igrac.telo); - for(int i=0;i<nep.size();i++) if(nep[i].ziv) prozor.draw(nep[i].telo); - for(int i=0;i<nep2.size();i++) if(nep2[i].ziv) prozor.draw(nep2[i].telo); - for(int i=0;i<nep3.size();i++) if(nep3[i].ziv) prozor.draw(nep3[i].telo); - for(int i=0;i<pow.size();i++) if(pow[i].ziv) prozor.draw(pow[i].telo); + for(size_t i=0;i<nep.size();i++) if(nep[i].ziv) prozor.draw(nep[i].telo); + for(size_t i=0;i<nep2.size();i++) if(nep2[i].ziv) prozor.draw(nep2[i].telo); + for(size_t i=0;i<nep3.size();i++) if(nep3[i].ziv) prozor.draw(nep3[i].telo); + for(size_t i=0;i<pow.size();i++) if(pow[i].ziv) prozor.draw(pow[i].telo); //UserInterface prozor.draw(healthblank); @@ -339,90 +368,55 @@ void Game::draw() prozor.draw(score); prozor.display(); } -void Game::run() +void Game::position() { - //update - updateui(); - updatedt(); - igrac.updatest(dt); - - //game over - if(igrac.health<=0) - { - prozor.close(); - std::cout<<"\n\nGame over. Wanna try again?\n"; - return; - } - - //izracunajpoz - for(int i=0;i<nep2.size();i++) nep2[i].izracunajpoz(igrac.x,igrac.y,dt); - - //izracunaj poz i brzinu - for(int i=0;i<nep3.size();i++) - { - if(nep3[i].x<0||nep3[i].x>sirina) 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<nep.size();i++) if(nep[i].ziv) { - Enemy1::time=8; - for(int i=0;i<nep.size();i++) nep[i].respawn(sirina,visina); + nep[i].izracunajbrzinu(igrac.x,igrac.y); + nep[i].izracunajpoz(dt); + nep[i].telo.setPosition(nep[i].x,nep[i].y); } - if(Enemy2::time<0) + for(size_t i=0;i<nep2.size();i++) if(nep2[i].ziv) { - Enemy2::time=14; - for(int i=0;i<nep2.size();i++) nep2[i].respawn(sirina,visina); - } - if(Enemy3::time<0) - { - Enemy3::time=10; - for(int i=0;i<nep3.size();i++) nep3[i].respawn(sirina,visina); + nep2[i].izracunajbrzinu(igrac.x,igrac.y,dt); + nep2[i].izracunajpoz(igrac.x,igrac.y,dt); + nep2[i].telo.setPosition(nep2[i].x,nep2[i].y); } - if(Powerup::time<0) + for(size_t i=0;i<nep3.size();i++) if(nep3[i].ziv) { - Powerup::time=20; - for(int i=0;i<pow.size();i++) pow[i].respawn(sirina,visina); + nep3[i].izracunajbrzinu(sirina,visina); + nep3[i].izracunajpoz(dt); + nep3[i].telo.setPosition(nep3[i].x,nep3[i].y); } - igrac.telo.setPosition(igrac.x,igrac.y); - - //colliding with player - for(int i=0;i<nep.size();i++) if(nep[i].ziv) +} +void Game::checkcollision() +{ + for(size_t i=0;i<nep.size();i++) if(nep[i].ziv) { - nep[i].kaigracu(igrac.x,igrac.y,dt); - nep[i].telo.setPosition(nep[i].x,nep[i].y); if(seseku(nep[i].telo,igrac.telo)) { nep[i].ziv=0; igrac.health-=Global::rng()%4+1; // 1-4 dmg } } - for(int i=0;i<nep2.size();i++) if(nep2[i].ziv) + for(size_t i=0;i<nep2.size();i++) if(nep2[i].ziv) { - nep2[i].brzina(igrac.x,igrac.y,dt); - nep2[i].telo.setPosition(nep2[i].x,nep2[i].y); if(seseku(nep2[i].telo,igrac.telo)) { nep2[i].ziv=0; igrac.health-=Global::rng()%8+1; // 1-8 dmg } } - for(int i=0;i<nep3.size();i++) if(nep3[i].ziv) + for(size_t i=0;i<nep3.size();i++) if(nep3[i].ziv) { - nep3[i].telo.setPosition(nep3[i].x,nep3[i].y); if(seseku(nep3[i].telo,igrac.telo)) { nep3[i].ziv=0; igrac.health-=Global::rng()%12+1; // 1-12 dmg } } - for(int i=0;i<pow.size();i++) if(pow[i].ziv) + for(size_t i=0;i<pow.size();i++) if(pow[i].ziv) { pow[i].telo.setPosition(pow[i].x,pow[i].y); if(seseku(pow[i].telo,igrac.telo)) @@ -432,6 +426,46 @@ void Game::run() } } } +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<nep.size();i++) nep[i].respawn(sirina,visina); + } + if(Enemy2::time<0) + { + Enemy2::time=14; + for(size_t i=0;i<nep2.size();i++) nep2[i].respawn(sirina,visina); + } + if(Enemy3::time<0) + { + Enemy3::time=10; + for(size_t i=0;i<nep3.size();i++) nep3[i].respawn(sirina,visina); + } + if(Powerup::time<0) + { + Powerup::time=20; + for(size_t i=0;i<pow.size();i++) pow[i].respawn(sirina,visina); + } +} +void Game::run() +{ + if(gameover()) return; + + updateui(); + updatedt(); + igrac.updatest(dt); + + respawn(); + position(); + checkcollision(); +} void Game::loop() { while(prozor.isOpen()) |
