• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Funkcja push_back() powoduje crash programu

0 głosów
276 wizyt
pytanie zadane 7 września 2015 w C i C++ przez patryk16 Obywatel (1,080 p.)
edycja 8 września 2015 przez patryk16

Ten kod powoduje crash programu niewiem czemu

#include <TardiGrap.hpp>
#include "Bug.h"


void Robak::Ai(sf::RenderWindow *op,Gra *g)
{
int w;
w=rand()%20+1;

switch(w)
{
case 1:
if(!(cialo.getPosition().x-5<=op->getPosition().x))  for(int i=0;i<5;i++){cialo.setRotation(-90); Sleep(5); cialo.move(-speed,0);
}

    break;
    case 2:


if(!(cialo.getPosition().x>=op->getSize().y))  for(int i=0;i<5;i++){cialo.setRotation(90); Sleep(5);  cialo.move(speed,0);
}

    break;
    case 3:

if(!(cialo.getPosition().y-5<=op->getPosition().y)) for(int i=0;i<5;i++){cialo.setRotation(180); Sleep(5);cialo.move(0,-speed);
}

    break;
    case 4:

if(!(cialo.getPosition().y >= op->getPosition().y+op->getSize().y+15)) for(int i=0;i<5;i++){cialo.setRotation(0); Sleep(5);cialo.move(0,speed);
}

    break;
    case 10:


    break;
    default:
        for(int i=0;i<5;i++)
        {
        cialo.move(0,0);
        }

        break;
}
/*glod-=0.01;
if(glod<0)
{
    live-=0.1;
}
if(live<0)
{
    g->rob[position]=NULL;
}*/
}



void Robak::Idzi(int x,int y,sf::RenderWindow *op)
{
    if(Enabled)
{
if(x>cialo.getPosition().x)
{
        if(!(cialo.getPosition().x-240>=op->getSize().x)) cialo.setRotation(90); Sleep(5); cialo.move(speed,0);
}
   if(x<cialo.getPosition().x)
   {
       if(!(cialo.getPosition().x<=0))  cialo.setRotation(-90);Sleep(5); cialo.move(-speed,0);
   }
   if(y<cialo.getPosition().y)
    {
       if(!(cialo.getPosition().y<=0)) cialo.setRotation(180);Sleep(5);cialo.move(0,-speed);
   }
   if(y>cialo.getPosition().y)
   {
  if(!(cialo.getPosition().y >= op->getPosition().y+op->getSize().y+15))Sleep(5); cialo.setRotation(0);cialo.move(0,speed);
   }
}

}
void Gra::Go()
{

    Load();
    while(app.isOpen())
    {
        while(app.pollEvent(event))
        {
            if(event.type ==sf::Event::Closed)
            {

                Save();
                Clear();
app.close();
            }
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
            {

                Save();
                Clear();
                app.close();
            }
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::F9))
            {
                Save();
            }


                if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
                {
                     if(fizyka->Dotyk(point.getPosition().x,point.getPosition().y,click->GetBody().getPosition().x,click->GetBody().getPosition().y,
                     click->GetTex().getSize().y,click->GetTex().getSize().x))
                     {
                    if(money>0)
                    {
                    Robak *b=new Robak;
                     int o;
                     o=rob.size();
                      b->create(app.getSize().x/2,app.getSize().y/2,10,1,10,o);
                      rob.push_back(b);
                    money-=20;
                    }
                     }
                      for(int i=0;i<rob.size();i++)
           {
            if(fizyka->Dotyk(point.getPosition().x,point.getPosition().y,rob[i]->GetBody().getPosition().x,rob[i]->GetBody().getPosition().y,
                     rob[i]->GetTex().getSize().y,rob[i]->GetTex().getSize().x))
                     {

                             wy=i;
                             wy++;

                     }
           }
            if(wy>0)
           {

                 rob[wy--]->Ruch=true;
                 mx=point.getPosition().x;
                 my=point.getPosition().y;

           }
                }

        if(sf::Mouse::isButtonPressed(sf::Mouse::Right))
           {
               wy=0;
           }


        }
        kasa->SetText(IntToStr(money));
        app.clear();
        app.draw(pole.GetBody());
app.draw(click->GetBody());
        for(int i=0;i<rob.size();i++)
        {
app.draw(rob[i]->GetBody());
        }
app.draw(kasa->GetTex());
        app.display();
         for(int i=0;i<rob.size();i++)
        {
rob[i]->Ai(&app,this);
        }
       for(int i=0;i<rob.size();i++)
       {
           if((mx>0)&&(my>0))
           {
           rob[i]->Run(mx,my,rob[i]);
           }
       }
        Col();
    }
}
void Gra::Save()
{
    plik.open("Dane.obb",ios::trunc);
    plik1.open("Rodzaj.obb",ios::trunc);
    plik<<rob.size()<<endl;

    for(int i=0;i<rob.size();i++)
    {
    plik<<rob[i]->getLive()<<endl;
    plik<<rob[i]->getPlec()<<endl;
    plik<<rob[i]->getSpeed()<<endl;
    plik<<rob[i]->getGlod()<<endl;
    plik<<rob[i]->GetBody().getPosition().x<<endl;
    plik<<rob[i]->GetBody().getPosition().y<<endl;
    }
for(int i=0;i<rob.size();i++)
{
    plik1<<rob[i]->GetClass()<<endl;
}
    plik.close();
    plik.open("Money.obb");
    plik<<money<<endl;
    plik.close();
    plik1.close();

}
void Gra::Load()
{
    plik.open("Dane.obb");
    string l;
    getline(plik,l);
    int ile=StrToInt(l);
    Robak *mob[ile];
    for(int i=0;i<ile;i++)
    {
        mob[i]=new Robak;
    }
    for(int i=0;i<ile;i++)
    {
        mob[i]->create(0,0,0,0,0,i);
        for(int t=0;t<7;t++)
        {

            switch(t)
            {
           case 1:
            mob[i]->live=StrToInt(l);
            break;
           case 2:
            mob[i]->plec=l;
            break;
           case 3:
            mob[i]->speed=StrToInt(l);
            break;
           case 4:
            mob[i]->glod=StrToInt(l);
            break;
           case 5:
            mob[i]->cialo.move(StrToInt(l),0);
            break;
            case 6:
            mob[i]->cialo.move(0,StrToInt(l));
            break;
            }
           if(t<6) getline(plik,l);
        }


    }
    for(int i=0;i<ile;i++)
    {
        rob.push_back(mob[i]);

    }
    for(int i=0;i<rob.size();i++)
    {
        app.draw(rob[i]->GetBody());
    }
    plik.close();
    plik.open("Money.obb");
    plik>>money;
    plik.close();
}








 

1 odpowiedź

0 głosów
odpowiedź 7 września 2015 przez Rogargol Pasjonat (16,610 p.)
Przydalby sie caly kod.

Podobne pytania

0 głosów
2 odpowiedzi 257 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez patryk16 Obywatel (1,080 p.)
0 głosów
1 odpowiedź 424 wizyt
pytanie zadane 25 grudnia 2015 w C i C++ przez Kubax96 Nowicjusz (170 p.)
0 głosów
3 odpowiedzi 481 wizyt
pytanie zadane 22 listopada 2016 w C i C++ przez Michał Gawliczek Nowicjusz (190 p.)

93,731 zapytań

142,668 odpowiedzi

323,286 komentarzy

63,290 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...