[C++, SFML]Crash aplikacji
Ostatnio zmodyfikowano 2012-10-10 20:22
Rughailon Temat założony przez niniejszego użytkownika |
[C++, SFML]Crash aplikacji » 2012-10-10 20:10:05 Witam. Postanowiłem sobie napisać gierkę. Niestety spotkałem się z dziwnym problemem, przez którego crashuje mi gra.
Najgorsze jest, że nie potrafię znaleść błędu. Kiedy porównuję swój dawniejszy projekt z aktualnym, tak samo go nie znajduję.
Nic nie pomogło. Kilkukrotne sprawdzanie kodu, usunięcie zbędnych rzeczy i zostawienie tych najważniejszych itp. Crash cały czas jest.
Pojawia się konsola, a po włączeniu gry pojawia się rama okna aplikacji.
Zdjęcie:
http://scr.hu/0y75/ba9d0
Kod:
#include <SFML/Window.hpp> #include <SFML/System.hpp> #include <SFML/Graphics.hpp> #include <iostream> #include <fstream>
using namespace std; using namespace sf; int MapaTeren[ 20 ][ 20 ];
template < class Tab > void Load( Tab map ) { fstream file; file.open( "mapa.map", ios::in ); for( int y = 0; y < 20; y++ ) { for( int x = 0; x < 20; x++ ) { file >> MapaTeren[ y ][ x ]; } } file.close(); }
int main() { cout << "Menu:" << endl << "1 = Nowa gra\n" << "2 = Sterowanie\n" << "3 = Wyjscie\n"; int opcja; cin >> opcja; if( opcja == 1 ) { RenderWindow OknoGry( VideoMode( 800, 600, 32 ), "NoName - Alpha 0.1" ); int zmienna = 10; int promieniowanie = 0; int ScrollX = 0; int ScrollY = 0; Load( MapaTeren ); Image KafleTeren; KafleTeren.LoadFromFile( "MapaKafle.bmp" ); Sprite chodnik; chodnik.SetImage( KafleTeren ); chodnik.SetSubRect( IntRect( 0, 0, 50, 50 ) ); while( OknoGry.IsOpened() ) { Event zdarzenie; while( OknoGry.GetEvent( zdarzenie ) ) { if( zdarzenie.Type == Event::Closed ) OknoGry.Close(); } } OknoGry.Clear(); for( int y = 0; y < 20; y++ ) { for( int x = 0; x < 20; x++ ) { if( MapaTeren[ y ][ x ] == 1 ) { chodnik.SetPosition( y * 50 + ScrollY, x * 50 + ScrollX ); OknoGry.Draw( chodnik ); } } OknoGry.Display(); } return 0; } if( opcja == 2 ) { cout << "Fatal Error!. :/\n"; return 0; } if( opcja == 3 ) { cout << "Milego dnia. :)\n"; return 0; } if( opcja > 3 || opcja < 1 ) { cout << "Nie znana opcja! Wylaczam program!\n"; return 0; } }
Pewno dziwicie się, dlaczego zrobiłem takie proste menu, w dodatku w konsoli. Są to tylko takie eksperymenty, ale to nie przez nie występuje crash. |
|
DejaVu |
» 2012-10-10 20:16:42 Sprawdź najpierw czy najprostsze kody z tutoriala działają. Poza tym ten kod jest niepoprawny patrząc z punktu widzenia architektury aplikacji SFML. |
|
SeaMonster131 |
» 2012-10-10 20:21:15 Według mnie, to: OknoGry.Clear(); for( int y = 0; y < 20; y++ ) { for( int x = 0; x < 20; x++ ) { if( MapaTeren[ y ][ x ] == 1 ) { chodnik.SetPosition( y * 50 + ScrollY, x * 50 + ScrollX ); OknoGry.Draw( chodnik ); } } OknoGry.Display(); }
powinno być w pętli while( OknoGry.IsOpened() ) { Event zdarzenie; while( OknoGry.GetEvent( zdarzenie ) ) { if( zdarzenie.Type == Event::Closed ) OknoGry.Close(); } }
? :) |
|
Rughailon Temat założony przez niniejszego użytkownika |
» 2012-10-10 20:22:54 @SeaMonster131 & DejaVu
Macie racje. Jak ja mogłem to przegapić. :D Bardzo dziękuje za pomoc. :) |
|
« 1 » |