Rozny pocet spracovanych prvkov pola C++

Programovacie jazyky, rady, poradňa...
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Rozny pocet spracovanych prvkov pola C++

Príspevok od používateľa reDo »

V mojej hre by som chcel aby mi narastal pocet nepriatelov ale ked tam pridam riadok ktory pripocitava premennej pocet nepritelov ktorych spracuvava tak cely program spadne.
Tu je hlavny zdrojak, ak nestaci napiste a dam tu vsetky subory. Nazvy pred ktorymi je c su triedy
pls skuste to kuknut ze kde by mohla byt chyba :roll:

Kód: Vybrať všetko

 #include "ClassHeaders.hpp"
 #include "MainHeaders.hpp"
 #include <sstream>
 #include <string>
 #include <iostream>

 int main()
 {
     // vytvorenie okna
     sf::RenderWindow App(sf::VideoMode(640, 480), "CombatShooter");

     // nacitanie obrazkov
     cBullet::LoadPictures();
     cPlayer::LoadPictures();
     cEnemy::LoadPictures();
     cBonus::LoadPictures();
     cInterface::LoadPictures();

     cPlayer Player(320,340);
     int in = 0;
     int pocet = 20;
     int enemies = 5, bonus = 10;
     cEnemy Enemies[pocet];

     for(int i=0;i < enemies;i++)
        Enemies[i] = cEnemy(0,0,0);

     for (int i=0;i < enemies;i++)
        Enemies[i].Draw(App);

     cInterface Interface;
     cBonus Bonuses[bonus];

     // herny cyklus
     App.SetFramerateLimit(65);
     while(App.IsOpened())
     {
         if (Player.IsDeath())
            App.Close();

         // posunutie hracovych striel
         Player.Refresh();

         Player.Collision(Enemies,enemies,Bonuses,bonus);

         for(int i=0; i < enemies;i++)
            if (Enemies[i].IsActive() && Enemies[i].IsFreezed())
                {
                    Enemies[i].Move();
                    Enemies[i].MoveShoots();
                }

         for(int i=0; i < enemies;i++)
            if (Enemies[i].IsActive())
                Enemies[i].Collision(Player);

         /***************************************************************************/
         // vycistenie obrazovky
         App.Clear(sf::Color(80,165,255));

         for(int i=0; i < enemies;i++)
            if (Enemies[i].IsActive())
            {
                Enemies[i].Draw(App);
                Enemies[i].DrawShoots(App);

                if(Enemies[i].IsFreezed() && Enemies[i].GetType() != 3)
                    Enemies[i].Shoot();
            }

         for(int i=0; i < bonus;i++)
            if (Bonuses[i].IsActive())
            {
                Bonuses[i].Draw(App);
            }

         // vykreslenie hracovych striel
         Player.DrawShoots(App);

         // FPS
         float fps = 1/App.GetFrameTime();
         std::ostringstream oss;
         oss << fps;
         sf::String ret;
         ret.SetText(oss.str());
         App.Draw(ret);

         // vykreslenie hraca
         Player.Draw(App);

         // vykreslenie panelu
         Interface.Draw(App);

         // vykreslenie hracovych statistik
         Player.DrawStats(App);

         // zobrazenie obrazovky
         App.Display();
         /***************************************************************************/

         in++;

         if(in == 100 && enemies < pocet)
         {
            //enemies++; tu je problem, ak to enemies++; dam ako kod program spadne
            in = 0;
         }

         // pohyb hraca
         Player.Move(App);
     }

     return 0;
 }
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Rozny pocet spracovanych prvkov pola C++

Príspevok od používateľa BX »

No len so to prebehol... vidim, ze v poli Enemies inicializujes 5 prvkov a zrazu chces pouzit siesty... problem by mohol byt tam
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: Rozny pocet spracovanych prvkov pola C++

Príspevok od používateľa reDo »

diky :) ,problem bol tu ako si napisal

Kód: Vybrať všetko

for(int i=0;i < enemies;i++)
        Enemies[i] = cEnemy(0,0,0);
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Re: Rozny pocet spracovanych prvkov pola C++

Príspevok od používateľa johny3212 »

Skus si nastudovat STL vektory. Velmi ti to zjednudusi pracu s polom.
http://www.cplusplus.com/reference/stl/vector/
Pri takejto chybe sa nauc pouzivat dubuger. Ked ti spadne program v debug mode, tak ti vypise presnu chybu a aj na ktorom riadku nastala a preco.
Napísať odpoveď