Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] Program Mapa.exe przestał działać.

Ostatnio zmodyfikowano 2013-07-03 01:12
Autor Wiadomość
akwes
» 2013-07-02 23:51:47
No to teraz niestety będziesz się musiał nauczyć debugować na tzw. ślepca.

Działasz na tym main.cpp.

C/C++
int main()
{
    RenderWindow MapaGry( VideoMode( 1280, 720, 32 ), "Mapa Gry" /*, Style::Fullscreen*/ );
    Zmienne MZ;
    //WczytajPlik( MZ );
    while( MapaGry.isOpen() )
    {
        //MZ.X_Myszy = MZ.Zdarzenie.mouseMove.x;
        //MZ.Y_Myszy = MZ.Zdarzenie.mouseMove.y;
       
        while( MapaGry.pollEvent( MZ.Zdarzenie ) ) {
           
            if( MZ.Zdarzenie.type == Event::KeyPressed && MZ.Zdarzenie.key.code == Keyboard::Escape ) { MapaGry.close(); }
           
            //if( MZ.Zdarzenie.type == Event::Resized ) { MapaGry.setSize( Vector2u( 1280, 720 ) ); }
           
            if( MZ.Zdarzenie.type == Event::Closed ) { MapaGry.close(); }
           
            //MZ.Najechano_Na_Pole = 0;
           
            // for( int y = 0; y <= 648; y = y + 72 )
            // {
            //for( int x = 0; x <= 648; x = x + 72, MZ.Najechano_Na_Pole++ )
            //{
           
            //  if(( MZ.X_Myszy > x && MZ.X_Myszy <=( x + 72 ) ) &&( MZ.Y_Myszy > y && MZ.Y_Myszy <=( y + 72 ) ) )
            // {
            //   MZ.Zaznaczenie.setPosition( x, y );
           
            // if( MZ.Zdarzenie.type == Event::MouseButtonPressed && MZ.Zdarzenie.mouseButton.button == Mouse::Left ) {
           
            // MZ.Kliknieto_N_Pole = MZ.Najechano_Na_Pole;
            // MZ.NumerNap.setString( IntToStr( MZ.Kliknieto_N_Pole ) );
           
            // MZ.CzyGraczaOdpNap.setString( MZ.Czy_Gracza[ MZ.Kliknieto_N_Pole ] );
            // MZ.CzyMAtakowacOdpNap.setString( MZ.Czy_M_Atakowac[ MZ.Kliknieto_N_Pole ] );
            // MZ.NazwaMisjiOdp.setString( MZ.Nazwa_Misji[ MZ.Kliknieto_N_Pole ] );
            // MZ.CzyWrogaOdpNap.setString( MZ.Czy_Wroga[ MZ.Kliknieto_N_Pole ] );
            // }
            //}
            //}
            // }
        }
       
        MapaGry.clear( sf::Color::White );
       
        // MapaGry.draw( MZ.TloMapy );
        // MapaGry.draw( MZ.Zaznaczenie );
       
        // MapaGry.draw( MZ.PoleNrNap ); MapaGry.draw( MZ.NumerNap );
        // MapaGry.draw( MZ.CzyGraczaNap ); MapaGry.draw( MZ.CzyGraczaOdpNap );
        //MapaGry.draw( MZ.CzyMAtakowacNap ); MapaGry.draw( MZ.CzyMAtakowacOdpNap );
        // MapaGry.draw( MZ.NazwaMisji ); MapaGry.draw( MZ.NazwaMisjiOdp );
        // MapaGry.draw( MZ.CzyWrogaOdpNap ); MapaGry.draw( MZ.CzyWrogaNap );
        MapaGry.display();
    }
    return 0;
}

I teraz usuwasz komentarz pojedynczo dla każdej linijki (chyba, że sens kodu wymaga więcej, np. przy pętli for odkomentujesz linię z for oraz pasujące do niej nawiasy {,} ).

Po usunięciu każdego komentarza, kompilujesz kod i sprawdzasz czy problem nadal występuje. Jeżeli nie to szukaj kolejnej linijki do odkomentowania*. W końcu błąd zacznie występować i będziesz wiedział, która linia go powoduje.

* staraj się wybierać jak najprostsze linijki. I tak aby wymagały jak najmniej usuniętych komentarzy (czasami aby kod się kompilował trzeba będzie odkomentować więcej linii, ale należy dbać o to, by odkomentowywać w takiej kolejności aby robić to jak najmniejszymi partiami kodu.
P-86876
Alan468
Temat założony przez niniejszego użytkownika
» 2013-07-02 23:59:42
Mówisz tylko o usuwaniu komentarzy .... a co z dodawaniem ich .... błąd mimo "okomętowania" większości poleceń błąd dalej występuje
P-86877
akwes
» 2013-07-03 00:05:42
No to w takim razie dodawaj. Na tym ten sposób debuggowania. Tutaj dodajesz komentarz, tam odejmujesz. Aż dojdziesz do momentu kiedy wiesz, która linijka konkretnie coś psuje.

Ewentualnie sprawdź jeszcze

C/C++
int main()
{
    RenderWindow MapaGry( VideoMode( 1280, 720, 32 ), "Mapa Gry" /*, Style::Fullscreen*/ );
    //Zmienne MZ;
    //WczytajPlik( MZ );
    while( MapaGry.isOpen() )
    {
        sf::Event ev;
        while( MapaGry.pollEvent( ev ) ) {
           
            if( ev.type == Event::KeyPressed && ev.key.code == Keyboard::Escape ) { MapaGry.close(); }
            if( ev.type == Event::Closed ) { MapaGry.close(); }
           
        }
       
        MapaGry.clear( sf::Color::White );
        MapaGry.display();
    }
    return 0;
}

oraz

C/C++
int main()
{
    RenderWindow MapaGry( VideoMode( 1280, 720, 32 ), "Mapa Gry" /*, Style::Fullscreen*/ );
    Zmienne MZ;
    //WczytajPlik( MZ );
    while( MapaGry.isOpen() )
    {
        sf::Event ev;
        while( MapaGry.pollEvent( ev ) ) {
           
            if( ev.type == Event::KeyPressed && ev.key.code == Keyboard::Escape ) { MapaGry.close(); }
            if( ev.type == Event::Closed ) { MapaGry.close(); }
           
        }
       
        MapaGry.clear( sf::Color::White );
        MapaGry.display();
    }
    return 0;
}

Bo te kody od tego pierwszego co podałem, różnią się właściwie tylko o Zmienne ZM.
P-86878
Alan468
Temat założony przez niniejszego użytkownika
» 2013-07-03 00:37:49
ok mam błędu nie ma gdy dam w komentarz te linijki w zmienne.h:
C/C++
//PoleNrNap.setString("Pole nr.: ");
PoleNrNap.setPosition( 750, 200 );
//CzyGraczaNap.setString("Czy gracza: ");
CzyGraczaNap.setPosition( 750, 250 );
//CzyWrogaNap.setString("Czy wroga: ");
CzyWrogaNap.setPosition( 750, 300 );

//CzyMAtakowacNap.setString("Czy mozna zatakowac: ");
CzyMAtakowacNap.setPosition( 750, 350 );
//NazwaMisji.setString("Nazwa misji: ");
NazwaMisji.setPosition( 750, 400 );

i to z main.cpp
C/C++
MapaGry.draw( MZ.PoleNrNap ); MapaGry.draw( MZ.NumerNap );
MapaGry.draw( MZ.CzyGraczaNap ); MapaGry.draw( MZ.CzyGraczaOdpNap );
MapaGry.draw( MZ.CzyMAtakowacNap ); MapaGry.draw( MZ.CzyMAtakowacOdpNap );
MapaGry.draw( MZ.NazwaMisji ); MapaGry.draw( MZ.NazwaMisjiOdp );
MapaGry.draw( MZ.CzyWrogaOdpNap ); MapaGry.draw( MZ.CzyWrogaNap );
dziwna zbieżność ,że dotyczy to tylko zmiennych przechowujący tekst do wyświetlenia na ekranie
Text
P-86880
akwes
» 2013-07-03 00:52:26
Hm... Dziwne. U mnie nic się nie dzieje w związku z napisami. Możesz jeszcze spróbować poustawiać wszystkim sf::Text czcionkę:
C/C++
// np.
PoleNrNap.setFont( czcionka );

Ale wątpię żeby to coś dało.
P-86882
Alan468
Temat założony przez niniejszego użytkownika
» 2013-07-03 00:59:17
"Ale wątpię żeby to coś dało." to jakaś ironia ?? zadziałało ..... :O Dzięki :)
P-86883
akwes
» 2013-07-03 01:06:03
Nie, to nie była ironia. Wątpiłem aby to cokolwiek zmieniło, no ale jak widać warto było spróbować :)
P-86884
Alan468
Temat założony przez niniejszego użytkownika
» 2013-07-03 01:12:03
aha .... jeszcze raz dzięki ,w końcu bd spał spokojnie :)
P-86885
1 2 « 3 »
Poprzednia strona Strona 3 z 3