Gra 2D biblioteka SFML błąd

0

Witam,
dzisiaj zacząłem swoją przygodę z biblioteką SFML 2.0. Stworzyłem już nawet swoją pierwszą grę 2D polegającą na uciekaniu na planszy 800x600 przed czerwonym kwadratem. Algorytm łapania wymyśliłem i zaimplementowałem, wyświetlanie obrazków także, obsługa klawiatury także jest, tylko jest pewien mały problem... Aplikacja nie chce działać. Tzn. działa na moim komputerze, ale gdy wysyłam plik innym osobom wyskakuje błąd aplikacji sys32 (na razie u 3 osób czyli 100% przypadków). Niby wszystkie .DLLki z biblioteki dołączyłem do folderu z .exe jednak nie wiem skąd ten błąd. Mógłby ktoś sprawdzić co jest nie tak i dlaczego błąd wyskakuje? Korzysta z Microsoft Visual Studio 2012
Rar: http://www.sendspace.pl/file/f034b0817c7290b5ad61e21/kwadraty
Gra to: projekt1.exe
I dodatkowo kod, jakby kogoś interesował.

#include<SFML/Window.hpp>
#include<SFML/Graphics.hpp>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<ctime>

//a - położenie czerwonego kwadratu
//b - położenie niebieskiego
float ruch_na_przestrzeni_x(float a,float b)
{
   if(a<=780 && a>=0)
   {
      if(b>a)
      {
         if(rand()%5==0)a-=0.2;
         if(rand()%5==1)a+=0.4;
         if(rand()%5==2)a+=0.6;
         if(rand()%5==3)a+=0.8;
         if(rand()%5==4)a-=1.0;
      }
      else
      {
         if(rand()%5==0)a+=0.2;
         if(rand()%5==1)a-=0.4;
         if(rand()%5==2)a-=0.6;
         if(rand()%5==3)a-=0.8;
         if(rand()%5==4)a+=1.0;
      }
   }
   else
   {
      if(a<10)
         a+=1;
      if(a>770)
         a-=1;
   }
   return a;
}

float ruch_na_przestrzeni_y(float a,float b)
{
   if(a<=580 && a>=0)
   {
      if(b>a)
      {
         if(rand()%5==0)a-=0.2;
         if(rand()%5==1)a+=0.4;
         if(rand()%5==2)a+=0.6;
         if(rand()%5==3)a+=0.8;
         if(rand()%5==4)a-=1.0;
      }
      else
      {
         if(rand()%5==0)a+=0.2;
         if(rand()%5==1)a-=0.4;
         if(rand()%5==2)a-=0.6;
         if(rand()%5==3)a-=0.8;
         if(rand()%5==4)a+=1.0;
      }
   }
   else
   {
      if(a<10)
         a+=1;
      if(a>570)
         a-=1;
   }
   return a;
}

int main(int argc, char ** argv)
{
   float graczszybkoscpoziom=8;
   float graczszybkoscpion=8;
   srand(time(NULL));
   sf::RenderWindow okno;
   sf::Texture tekstura,wrog,koniec;
   sf::Sprite obrazek,obrazekwroga,zakonczenie;
   float a=0,b=0;
   tekstura.loadFromFile("abc.jpg");
   wrog.loadFromFile("wrog.jpg");
   koniec.loadFromFile("koniec.jpg");
   obrazekwroga.setTexture(wrog);
   obrazek.setTexture(tekstura);
   zakonczenie.setTexture(koniec);
   okno.create(sf::VideoMode(800,600,32),"Gra");
   obrazek.setPosition(370,580);
   zakonczenie.setPosition(220,100);
   obrazekwroga.setPosition(0,0);

   while(okno.isOpen())
   {   
      sf::Event zdarzenie;
      okno.clear(sf::Color::Black);

      if(abs(obrazek.getPosition().x-a)<15  && abs(obrazek.getPosition().y-b)<15)
      {         
         while(okno.pollEvent(zdarzenie))
         {
            if(zdarzenie.type==sf::Event::Closed)
               okno.close();
            if(zdarzenie.type==sf::Event::KeyPressed && zdarzenie.key.code==sf::Keyboard::Escape)
               okno.close();
            if(zdarzenie.type==sf::Event::KeyPressed && zdarzenie.key.code==sf::Keyboard::Space)
            {
               a=0;
               b=0;
            }
         }
         okno.draw(zakonczenie);
      }
      else
      {
         obrazekwroga.setPosition(a,b);
         while(okno.pollEvent(zdarzenie))
         {
            if(zdarzenie.type==sf::Event::Closed)
               okno.close();
            if(zdarzenie.type==sf::Event::KeyPressed && zdarzenie.key.code==sf::Keyboard::Escape)
               okno.close();
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up) && sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
               obrazek.move(-(graczszybkoscpoziom),-(graczszybkoscpion));
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up) && sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
               obrazek.move((graczszybkoscpoziom),-(graczszybkoscpion));
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
               obrazek.move((graczszybkoscpoziom),(graczszybkoscpion));
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down) && sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
               obrazek.move(-(graczszybkoscpoziom),(graczszybkoscpion));
            if(zdarzenie.type==sf::Event::KeyPressed && zdarzenie.key.code==sf::Keyboard::Up)
               obrazek.move(0,-graczszybkoscpion);
            if(zdarzenie.type==sf::Event::KeyPressed && zdarzenie.key.code==sf::Keyboard::Left)
               obrazek.move(-graczszybkoscpoziom,0);
            if(zdarzenie.type==sf::Event::KeyPressed && zdarzenie.key.code==sf::Keyboard::Right)
               obrazek.move(graczszybkoscpoziom,0);
            if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
               obrazek.move(0,graczszybkoscpion);
         }
         a=ruch_na_przestrzeni_x(a,obrazek.getPosition().x);
         b=ruch_na_przestrzeni_y(b,obrazek.getPosition().y);
         okno.draw(obrazekwroga);
         okno.draw(obrazek);
      }      
      okno.display();
      std::cout<<obrazek.getPosition().x<<"    "<<obrazek.getPosition().y<<std::endl;
   }
   return 0;
}
0

Dodam, że wysyłałem plik po kompilacji Relase i Debug. Obydwie wywalały błędy u innych. Raz wołało błąd sys32, a czasem nie można było znaleźć MSVCR110D.dll. Te "D" to z trybu Debug, ale przy Relase jest chyba podobny komunikat.
Na pewno nikt nie ma pomysłu jak to naprawić?

0

Te "D" to z trybu Debug, ale przy Relase jest chyba podobny komunikat.

  1. na inne komputery przenoś wersję Release, nie Debug.
  2. na docelowym komputerze trzeba doinstalować Visual C++ 2012 Redistributable.

1 użytkowników online, w tym zalogowanych: 0, gości: 1