bingo009 Temat założony przez niniejszego użytkownika |
[SFML 2.0] Białe, niewidoczne okno » 2013-04-11 21:39:50 Witam was serdecznie, piszę sobię prostą grę na refleks i utknąłem właściwie na początku. Najpierw pliki" Headers.h #include <iostream> #include <ctime>
#include <SFML/Graphics.hpp> #include <SFML/Window/Keyboard.hpp>
#include "Game.h"
using namespace std; using namespace sf;
Game.h: #ifndef GAME_H #define GAME_H
class Game : public sf::RenderWindow { public: Game(); int StartGame(); static Game & returnInstance(); };
#endif
main.cpp: #include "Headers.h"
int main() { return Game::returnInstance().StartGame(); }
Game.cpp: #include "Headers.h"
Game::Game() : RenderWindow( VideoMode( 1024, 1024, 32 ), "Reflect Game" ) { }
Game & Game::returnInstance() { static Game instance; return instance; }
int Game::StartGame() { Event event; CircleShape shape( 100.f ); shape.setFillColor( sf::Color::Green ); while( isOpen() ) { while( pollEvent( event ) ) { if( event.type == Event::Closed ) close(); if( event.type == Event::KeyPressed && event.key.code == Keyboard::Escape ) close(); } clear(); draw( shape ); display(); } return 0; }
Otóż po uruchomieniu gry pojawia się konsola, na pasku zadań jest widoczne inne okno, ale jest jakby zminimalizowane, nie mogę go zmaksymalizować a w podglądzie jest tylko białe tło. Pętla główna działa, w miejsce rysowania koła dałem funkcję cout i konsola pokazywała wyniki tej funkcji. Ten sam kod działał bez zarzutu w VS 2010, przepisywałem go właściwie. Kompilator MinGW najnowszy, biblioteka SFML skompilowana samodzielne ze źródeł, także najnowsza, pobrana z repozytorium git. Nie mam pojęcia o co może chodzić, proszę więc o pomoc. |
|
hincu |
» 2013-04-13 20:14:55 smigaj na forum sfml i zapoznaj sie z dokumentacja lepiej |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2013-04-14 20:38:15 Z dokumentacją się zapoznaje, ale i tak nie widze nic złego w tym kodzie. Tym bardziej, że śmigał na VS2010. |
|
pekfos |
» 2013-04-14 20:42:18 Po co dziedziczysz po sf::RenderWindow? Spróbuj zmienić rozdzielczość ekranu. |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2013-04-15 00:15:03 Faktycznie, problemem była niestandardowa rozdzielczość. Po zmianie na jakąś standardową(np. 1024x768) program ruszył. A co do dziedziczenia, to podlukałem to w jakimś kodzie i tak jakoś sam zacząłem tak robić. Jeżeli to źle i lepiej byłoby inaczej, to proszę o oświecenie, dopiero się uczę programować obiektowo, wcześniej tylko było strukturalnie i przez to ciężko mi idzie na razie pojmowanie OOP. |
|
pekfos |
» 2013-04-15 14:09:03 A co do dziedziczenia, to podlukałem to w jakimś kodzie i tak jakoś sam zacząłem tak robić. |
Pewnie ten kod dotyczył modyfikowania/rozszerzania sf::RenderWindow, a nie tworzenia czegoś zupełnie innego (jak w twoim kodzie). Powinieneś raczej użyć kompozycji (definiujesz obiekt sf::RenderWindow w klasie), chociaż dziedziczenie też jest poprawne (ale może prowadzić do małych komplikacji w kodzie). |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2013-04-15 20:58:00 Bynajmniej w tamtym kodzie także chodziło o napisanie gry. Ale żeby nie zaśmiecać, założe potem drugi temat, a tą grę dokończę tym sposobem. Dziękuję i pozdrawiam, zamykam temat. |
|
« 1 » |