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();
}