bingo009 Temat założony przez niniejszego użytkownika |
» 2012-11-13 16:21:43 Za to odpowiada klasa Game. W konstruktorze tworzy się okno, a w metodzie StartGame() jest cała logika(i między innymi próba narysowania). Niżej kod konstruktora i tej metody: Game::Game() : RenderWindow( VideoMode( 640, 480, 32 ), "XDStory -- Under Construction" ) { }
int Game::StartGame() { Event event; Test * test1 = new Test( "Data/obrazek.bmp" ); while( isOpen() ) { while( pollEvent( event ) ) { if( event.type == Event::Closed ) close(); if( event.type == Event::KeyPressed && event.key.code == Keyboard::Escape ) close(); } clear(); test1->drawTest(); display(); } return 0; }
Obiekt tworzony jest tutaj dynamicznie, ale to nie ma nic do rzeczy chyba. |
|
DejaVu |
» 2012-11-13 16:35:29 Jeżeli bitmapa istnieje to teoretycznie kod, który zamieściłeś powinien działać. Nie widzę bowiem nigdzie wywołania konstruktora kopiującego dla obiektu typu Test, oraz dla obiektu typu sf::Texture. |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2012-11-13 16:46:08 Obrazek napewno istnieje, bo jak wywołam metodę draw klay RenderWindow podając jako argument ten obiekt, to działa, no i wiem, że obrazek naprawdę istnieje.
Edit: Dziwna sprawa, bo gra po uruchomieniu pokazuje 2 okna. Jedno z białym erkanem, inne z czarnym. To okno z białym ekranem, jest jakby zablokowane, nie mogę go zamknąć(X na pasku tytułowym), zminimalizować, ani przesunąc. Wykasowanie wywołania metody drawTest rozwiązuje problem. |
|
DejaVu |
» 2012-11-13 17:08:47 Cóż... coś zdrowo nakopałeś :) |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2012-11-13 17:17:00 Cały kod dałem wam, nie mam naprawdę pojęcia co to może być. Poza klasą Object, Test i Game nic nie ma, klasa Object nie ma żadnego obiektu, więc ona niz nie może namieszać. Więc gdzie siedzi błąd? |
|
DejaVu |
» 2012-11-13 17:45:42 #include <SFML/Graphics.hpp> #include <sstream> #include <vector> using namespace sf;
class Game : public RenderWindow { public: Game(); int StartGame(); static Game & returnInstance(); };
Game::Game() : RenderWindow( VideoMode( 640, 480, 32 ), "XDStory -- Under Construction" ) { }
Game & Game::returnInstance() { static Game instance; return instance; }
class Test : public sf::Sprite { private: sf::Texture tex; public: Test( const char * tex2 ); void drawTest(); };
Test::Test( const char * tex2 ) { tex.loadFromFile( tex2 ); setTexture( tex ); }
void Test::drawTest() { Game::returnInstance().draw( * this ); }
int Game::StartGame() { Event event; Test * test1 = new Test( "img.jpg" ); while( isOpen() ) { while( pollEvent( event ) ) { if( event.type == Event::Closed ) close(); if( event.type == Event::KeyPressed && event.key.code == Keyboard::Escape ) close(); } clear(); test1->drawTest(); display(); } return 0; }
int main() { return Game::returnInstance().StartGame(); }
Cóż... skopiowałem Twój kod, zmieniłem nazwę wczytywanego pliku z teksturą i... działa. |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2012-11-13 22:09:47 U mnie też zaczęło działać. Jak to zrobiłem? Zmieniłem funckję main, na taką jak jest u ciebie. Miałem tak: #include "Headers.h"
int main() { Game XDStory; XDStory.StartGame(); return 0; }
Dziękuję bardzo za pomoc i poświecony czas. Muszę się jeszcze dużo nauczyć o programowaniu obiektowym. |
|
1 « 2 » |