pw1602 Temat założony przez niniejszego użytkownika |
[SFML] Access violation executing location 0x0 » 2015-09-25 17:30:45 Jeśli jest to zły dział to proszę o przeniesienie. Piszę grę w SFML i wszystko działało normalnie, po czym wyłączyłem Visuala i po pewnym czasie znowu go uruchomiłem i zmieniłem rzeczy do wyświetlenia w oknie po czym chciałem sprawdzić, jak to wszystko działa i za każdym razem wyskakuje mi taki komunikat: Unhandled exception at 0x0000000000000000 in Western.exe: 0xC0000005: Access violation executing location 0x0000000000000000. Przywrócenie poprzednich linii również nic nie daje. Szukałem rozwiązania, ale co z tego, jak każdy ma oddzielny błąd w kodzie, a ja mam wszystko takie samo, jak w poprzednim momencie kiedy gra działała normalnie. Jest ktoś w stanie pomóc? Jeśli coś pomoże to dodane log: 'Western.exe' (Win32): Loaded 'C:\Users\Admin\Documents\Visual Studio 2013\Projects\Western\x64\Debug\Western.exe'. Symbols loaded. 'Western.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Cannot find or open the PDB file. 'Western.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Cannot find or open the PDB file. 'Western.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Cannot find or open the PDB file. First-chance exception at 0x0000000000000000 in Western.exe: 0xC0000005: Access violation executing location 0x0000000000000000. Unhandled exception at 0x0000000000000000 in Western.exe: 0xC0000005: Access violation executing location 0x0000000000000000.
First-chance exception at 0x0000000000000000 in Western.exe: 0xC0000005: Access violation executing location 0x0000000000000000. Unhandled exception at 0x0000000000000000 in Western.exe: 0xC0000005: Access violation executing location 0x0000000000000000.
The program '[1688] Western.exe' has exited with code 0 (0x0).
|
|
pekfos |
» 2015-09-25 18:14:05 Bez kodu nic się nie poradzi. Jeśli jest to zły dział to proszę o przeniesienie. |
Tytuł jest zły. |
|
pw1602 Temat założony przez niniejszego użytkownika |
» 2015-09-25 18:34:38 Myślę, że tytuł teraz będzie dobry. Ten kod: Text imie( postac.Imie(), czcionka, 10 );
RectangleShape pasek_hp( Vector2f( 100, 10 ) ), pasek_hp_color( Vector2f( postac.Sprawdz( "zycie" ), 10 ) ); pasek_hp.setFillColor( Color::Transparent ); pasek_hp.setOutlineColor( Color::Green ); pasek_hp.setOutlineThickness( 1 ); pasek_hp.setPosition( 10, 20 ); pasek_hp_color.setFillColor( Color::Red ); pasek_hp_color.setPosition( 10, 20 );
imie.setPosition( pasek_hp.getGlobalBounds().width / 2 - imie.getGlobalBounds().width / 2 + 10, 2 ); imie.setColor( Color::Black );
window->draw( imie ); window->draw( pasek_hp ); window->draw( pasek_hp_color ); został zamieniony na ten: hud.setPosition( 10, window->getSize().y - hud.getGlobalBounds().height - 10 ); zycie_pasek.setPosition( hud.getGlobalBounds().width - 1, window->getSize().y - 11 );
window->draw( hud ); window->draw( zycie_pasek ); W konstruktorze: if( !hud_tekstura.loadFromFile( "data\\fonts\\Gracz_HUD.png" ) ) MessageBox( NULL, "Brak pliku Gracz_HUD.png!", "BLAD", NULL );
if( !zycie_pasek_tekstura.loadFromFile( "data\\fonts\\Gracz_zycie.png" ) ) MessageBox( NULL, "Brak pliku Gracz_zycie.png!", "BLAD", NULL );
hud.setTexture( hud_tekstura ); zycie_pasek.setTexture( zycie_pasek_tekstura ); W pliku nagłówkowym: Texture zycie_pasek_tekstura, hud_tekstura; Sprite zycie_pasek, hud; |
|
pekfos |
» 2015-09-25 18:36:57 Myślę, że tytuł teraz będzie dobry. |
Tylko 0 było dobre. Ten kod: [..] został zamieniony na ten: |
Znowu, masz talent do podawania bezużytecznych informacji. Przecież sam napisałeś, że przywrócenie poprzedniego stanu nic nie dało. Podaj cały kod. |
|
pw1602 Temat założony przez niniejszego użytkownika |
» 2015-09-25 18:42:59 main.cpp #include "Gra.h"
int main() { Gra gra; gra.Menu_Gry(); return EXIT_SUCCESS; } Gra.h #include <SFML\Graphics.hpp> #include <Windows.h> #include <string> #include "Silnik.h"
using namespace std; using namespace sf;
class Gra { public: Gra(); ~Gra(); void Menu_Gry(); private: Font czcionka; enum StanGry { MENU, GRA, KONIEC }; StanGry stangry; void menu(); void gra(); RenderWindow okno; }; Gra.cpp #include "Gra.h"
Gra::Gra() { stangry = KONIEC; if( !czcionka.loadFromFile( "data\\fonts\\arial.ttf" ) ) MessageBox( NULL, "Brak pliku airal.ttf!", "BLAD", NULL ); okno.create( VideoMode( 1024, 728, 32 ), "Western" ); okno.setFramerateLimit( 60 ); stangry = MENU; }
Gra::~Gra() { }
void Gra::Menu_Gry() { while( stangry != KONIEC ) { switch( stangry ) { case StanGry::MENU: menu(); break; case StanGry::GRA: gra(); break; } } }
void Gra::gra() { Silnik silnik( okno ); silnik.silnik(); stangry = MENU; }
void Gra::menu() { const int ile = 4; Text tytul( "Western", czcionka, 40 ), wybory_menu[ ile ]; tytul.setPosition( okno.getSize().x / 2 - tytul.getGlobalBounds().width / 2, 25 ); string str[] = { "Wyjdz", "Opcje", "Wczytaj", "Graj" }; for( int i = 0; i < ile; i++ ) { wybory_menu[ i ].setFont( czcionka ); wybory_menu[ i ].setCharacterSize( 20 ); wybory_menu[ i ].setString( str[ i ] ); wybory_menu[ i ].setPosition( 25, okno.getSize().y - 25 - wybory_menu[ i ].getGlobalBounds().height - i * 25 ); } while( stangry == MENU ) { Event wydarzenie; Vector2f mysz( Mouse::getPosition( okno ) ); if( okno.pollEvent( wydarzenie ) ) { if( wydarzenie.type == Event::KeyReleased && wydarzenie.key.code == Keyboard::Escape || wydarzenie.type == Event::Closed || wybory_menu[ 0 ].getGlobalBounds().contains( mysz ) && wydarzenie.type == Event::MouseButtonReleased && wydarzenie.key.code == Mouse::Left ) stangry = KONIEC; if( wybory_menu[ 3 ].getGlobalBounds().contains( mysz ) && wydarzenie.type == Event::MouseButtonReleased && wydarzenie.key.code == Mouse::Left ) stangry = GRA; } for( int i = 0; i < ile; i++ ) if( wybory_menu[ i ].getGlobalBounds().contains( mysz ) ) { wybory_menu[ i ].setColor( Color::Red ); wybory_menu[ i ].setPosition( 30, wybory_menu[ i ].getPosition().y ); } else { wybory_menu[ i ].setColor( Color::White ); wybory_menu[ i ].setPosition( 25, wybory_menu[ i ].getPosition().y ); } okno.clear(); okno.draw( tytul ); for( int i = 0; i < ile; i++ ) okno.draw( wybory_menu[ i ] ); okno.display(); } } Silnik.h #include <SFML\Graphics.hpp> #include <Windows.h> #include "Postac.h"
using namespace sf; using namespace std;
class Silnik { public: Silnik( RenderWindow & win ); ~Silnik(); void silnik(); private: RenderWindow * window; Font czcionka; String tekst = ""; Text nazwa; enum StanSilnika { GRA, TWORZENIE, KONIEC }; StanSilnika stansilnika; void Stworz_Postac(); void Uruchom_Silnik(); void Tworzenie_Mapy(); void Pauza(); void Rysuj(); void HUD(); Postac postac; }; Silnik.cpp #include "Silnik.h"
Silnik::Silnik( RenderWindow & win ) { stansilnika = KONIEC; window = & win; if( !czcionka.loadFromFile( "data\\fonts\\arial.ttf" ) ) MessageBox( NULL, "Brak pliku airal.ttf!", "BLAD", NULL ); stansilnika = TWORZENIE; }
Silnik::~Silnik() { }
void Silnik::silnik() { while( stansilnika != KONIEC ) { switch( stansilnika ) { case StanSilnika::GRA: Uruchom_Silnik(); break; case StanSilnika::TWORZENIE: Stworz_Postac(); } } }
void Silnik::Stworz_Postac() { while( stansilnika == TWORZENIE ) { Text wpisz( L"Wpisz nazwę swojej postaci:", czcionka, 30 ); wpisz.setPosition( window->getSize().x / 2 - wpisz.getGlobalBounds().width / 2, 100 ); Event event; if( window->pollEvent( event ) ) { if( event.type == Event::TextEntered ) { Uint32 unicode = event.text.unicode; if( unicode == '\b' && tekst.isEmpty() == false ) tekst.erase( tekst.getSize() - 1, 1 ); else if((( unicode >= 48 && unicode <= 57 ) ||( unicode >= 65 && unicode <= 90 ) ||( unicode >= 97 && unicode <= 122 ) ) && unicode != 8 && tekst.getSize() < 10 ) tekst += static_cast < char >( unicode ); nazwa.setString( tekst ); } if( event.type == Event::KeyPressed && event.key.code == Keyboard::Return ) { stansilnika = GRA; postac.Nadaj_Imie( tekst ); } if( event.type == Event::KeyReleased && event.key.code == Keyboard::Escape || event.type == Event::Closed ) stansilnika = KONIEC; } nazwa.setColor( Color::White ); nazwa.setFont( czcionka ); nazwa.setCharacterSize( 20 ); nazwa.setPosition( window->getSize().x / 2 - nazwa.getGlobalBounds().width / 2, wpisz.getPosition().y + wpisz.getGlobalBounds().height + 10 ); window->clear(); window->draw( wpisz ); window->draw( nazwa ); window->display(); } }
void Silnik::HUD() { Text imie( postac.Imie(), czcionka, 10 ); RectangleShape pasek_hp( Vector2f( 100, 10 ) ), pasek_hp_color( Vector2f( postac.Sprawdz( "zycie" ), 10 ) ); pasek_hp.setFillColor( Color::Transparent ); pasek_hp.setOutlineColor( Color::Green ); pasek_hp.setOutlineThickness( 1 ); pasek_hp.setPosition( 10, 20 ); pasek_hp_color.setFillColor( Color::Red ); pasek_hp_color.setPosition( 10, 20 ); imie.setPosition( pasek_hp.getGlobalBounds().width / 2 - imie.getGlobalBounds().width / 2 + 10, 2 ); imie.setColor( Color::Black ); window->draw( imie ); window->draw( pasek_hp ); window->draw( pasek_hp_color ); }
void Silnik::Uruchom_Silnik() { while( stansilnika == GRA ) { Event wydarzenie; Vector2f mysz( Mouse::getPosition( * window ) ); if( window->pollEvent( wydarzenie ) ) { if( wydarzenie.type == Event::KeyReleased && wydarzenie.key.code == Keyboard::Escape || wydarzenie.type == Event::Closed ) stansilnika = KONIEC; if( wydarzenie.type == Event::KeyPressed && wydarzenie.key.code == Keyboard::W ) postac.Ruch( 0, - 5 ); if( wydarzenie.type == Event::KeyPressed && wydarzenie.key.code == Keyboard::S ) postac.Ruch( 0, 5 ); if( wydarzenie.type == Event::KeyPressed && wydarzenie.key.code == Keyboard::A ) postac.Ruch( - 5, 0 ); if( wydarzenie.type == Event::KeyPressed && wydarzenie.key.code == Keyboard::D ) postac.Ruch( 5, 0 ); } window->clear( Color::White ); window->draw( postac ); HUD(); window->display(); } } Postac.h #include <SFML\Graphics.hpp> #include <Windows.h>
using namespace sf; using namespace std;
class Postac : public Drawable { public: Postac(); ~Postac(); void Nadaj_Imie( string im ); void Ruch( int x, int y ); int Sprawdz( string slowo ); string Imie(); private: int zycie, zrecznosc, sila, wytrzymalosc, szczescie, inteligencja, sprawnosc; string imie; Sprite sprajt, cien; Texture postac_tekstura, cien_tekstura; enum Ekwipunek { PRAWA_REKA, LEWA_REKA, GLOWA, TORS, NOGI, STOPY }; void draw( RenderTarget & target, RenderStates states ) const; }; Postac.cpp #include "Postac.h"
Postac::Postac() { if( !postac_tekstura.loadFromFile( "data\\imgs\\Gracz.png" ) ) MessageBox( NULL, "Brak pliku Gracz.png!", "BLAD", NULL ); if( !cien_tekstura.loadFromFile( "data\\imgs\\Cien.png" ) ) MessageBox( NULL, "Brak pliku Cien.png!", "BLAD", NULL ); sprajt.setTexture( postac_tekstura ); sprajt.setOrigin( 32, 48 ); sprajt.setTextureRect( IntRect( 0, 0, 64, 96 ) ); sprajt.setPosition( 100, 100 ); cien.setTexture( cien_tekstura ); cien.setPosition( sprajt.getPosition().x - 32, sprajt.getPosition().y - 48 ); zycie = 100; zrecznosc = 1; sila = 1; wytrzymalosc = 1; szczescie = 1; inteligencja = 1; sprawnosc = 1; imie = ""; }
Postac::~Postac() { }
void Postac::Ruch( int x, int y ) { sprajt.move( x, y ); cien.move( x, y ); }
void Postac::Nadaj_Imie( string _imie ) { imie = _imie; }
string Postac::Imie() { return imie; }
int Postac::Sprawdz( string slowo ) { if( slowo == "zycie" ) return zycie; else if( slowo == "zrecznosc" ) return zrecznosc; else if( slowo == "sila" ) return sila; else if( slowo == "wytrzymalosc" ) return wytrzymalosc; else if( slowo == "szczescie" ) return szczescie; else if( slowo == "inteligencja" ) return inteligencja; else if( slowo == "sprawnosc" ) return sprawnosc; else return 0; }
void Postac::draw( RenderTarget & target, RenderStates states ) const { target.draw( cien ); target.draw( sprajt ); } |
|
pekfos |
» 2015-09-25 18:55:38 Co robisz, by wywołać błąd? |
|
pw1602 Temat założony przez niniejszego użytkownika |
» 2015-09-25 18:57:32 Nic. Po prostu wciskam F5 i czekam, aż się skompiluje po czym wszystko przechodzi do uruchomienia gry i zamiast okna pojawia się ten błąd. |
|
pekfos |
» 2015-09-25 18:59:17 Spróbuj zrobić Rebuild Solution. |
|
« 1 » 2 |