R0ut4 Temat założony przez niniejszego użytkownika |
SFML, Window, funkcje » 2020-07-13 13:27:33 Witajcie, dzisiaj zacząłem jeszcze raz tworzyć grę, jednak napotkałem przeszkodę, której ostatnim razem nie było. Może ktoś wyjaśnić o co chodzi? #include <SFML/Window.hpp> #include <SFML/Graphics.hpp>
enum Stan { Menu, Game, Pause, Eq };
int main() { sf::Window aplikacja( sf::VideoMode( 800, 600 ), "Project: MARS" ); aplikacja.setFramerateLimit( 60 ); sf::Texture grasstext; sf::Texture dirttext; grasstext.loadFromFile( "grass.png" ); dirttext.loadFromFile( "dirt.png" ); sf::Sprite grass( grasstext ); sf::Sprite dirt( dirttext ); Stan stan; sf::Event e; while( aplikacja.isOpen() ) { while( aplikacja.pollEvent( e ) ) { if( e.type == sf::Event::Closed ) { aplikacja.close(); } } switch( stan ) { case Menu: if( sf::Keyboard::isKeyPressed( sf::Keyboard::Enter ) ) { stan = Game; } break; case Game: break; case Pause: break; case Eq: break; } } aplikacja.clear(); switch( stan ) { case Menu: break; case Game: const float tilesize = 50.f; int maptile[ 5 ][ 5 ] = { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, }; for( int row = 0; row > 5; row++ ) { for( int col = 0; col > 5; col++ ) { if( maptile[ row ][ col ] = 0 ) { grass.setPosition( row * tilesize, col * tilesize ); aplikacja.draw( grass ); } else { dirt.setPosition( row * tilesize, col * tilesize ); aplikacja.draw( dirt ); } } } break; case Pause: break; case Eq: break; } aplikacja.display(); }
BŁĘDY: ||=== Build: Debug in Mars (compiler: GNU GCC Compiler) ===| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp||In function 'int main()':| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|53|error: 'class sf::Window' has no member named 'clear'; did you mean 'create'?| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|73|warning: suggest parentheses around assignment used as truth value [-Wparentheses]| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|76|error: 'class sf::Window' has no member named 'draw'| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|81|error: 'class sf::Window' has no member named 'draw'| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|87|error: jump to case label [-fpermissive]| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|61|note: crosses initialization of 'int maptile [5][5]'| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|60|note: crosses initialization of 'const float tilesize'| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|90|error: jump to case label [-fpermissive]| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|61|note: crosses initialization of 'int maptile [5][5]'| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|60|note: crosses initialization of 'const float tilesize'| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|54|warning: enumeration value 'Pause' not handled in switch [-Wswitch]| C:\Users\Leoshirei\Desktop\Mars\Mars\main.cpp|54|warning: enumeration value 'Eq' not handled in switch [-Wswitch]| ||=== Build failed: 5 error(s), 3 warning(s) (0 minute(s), 4 second(s)) ===| |
|
nanoant20 |
» 2020-07-13 14:11:53 sprawdź klamry {} while( aplikacja.isOpen() ) { code... }
aplikacja.clear(); switch( stan )
aplikacja.display(); } return 0; }
jeżeli używasz enum w switch powinno być np. tak enum Stan { Menu, Game, Pause, Eq }; Stan stan = Menu; switch( stan ) { case Menu: break; default: break; } sf::Window aplikacja( sf::VideoMode( 800, 600 ), "Project: MARS" );
sf::RenderWindow aplikacja( sf::VideoMode( 800, 600 ), "Project: MARS" );
|
|
R0ut4 Temat założony przez niniejszego użytkownika |
» 2020-07-13 16:31:40 po poprawieniu klamry: ||=== Build: Debug in Mars( compiler: GNU GCC Compiler ) === | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp || In function 'int main()':| C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 52 | error : 'class sf::Window' has no member named 'clear'; did you mean 'create' ?| C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 72 | warning: suggest parentheses around assignment used as truth value[ - Wparentheses ] | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 75 | error: 'class sf::Window' has no member named 'draw' | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 80 | error: 'class sf::Window' has no member named 'draw' | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 86 | error: jump to case label[ - fpermissive ] | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 60 | note: crosses initialization of 'int maptile [5][5]' | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 59 | note: crosses initialization of 'const float tilesize' | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 89 | error: jump to case label[ - fpermissive ] | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 60 | note: crosses initialization of 'int maptile [5][5]' | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 59 | note: crosses initialization of 'const float tilesize' | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 53 | warning: enumeration value 'Pause' not handled in switch[ - Wswitch ] | C:\U sers\Leoshirei\Desktop\Mars\Mars\main.cpp | 53 | warning: enumeration value 'Eq' not handled in switch[ - Wswitch ] | ||=== Build failed: 5 error( s ), 3 warning( s )( 0 minute( s ), 1 second( s ) ) === |
Edit: Już się kompiluje, ale nic się nie wyświetla i nic się nie dzieje. |
|
R0ut4 Temat założony przez niniejszego użytkownika |
» 2020-07-13 18:07:34 Poprzedni post do wywalenia xd Mam teraz taki kod, ale nic się nie dzieje. Ktoś coś? #include <SFML/Graphics.hpp> #include <SFML/Window.hpp> #include <SFML/System.hpp>
enum Stan { Menu, Gra };
int main() { sf::RenderWindow window( sf::VideoMode( 800, 600 ), "Projekt: MARS" ); Stan stan = Menu; while( window.isOpen() ) { sf::Event event; while( window.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) window.close(); switch( stan ) { case Menu: if( sf::Keyboard::isKeyPressed( sf::Keyboard::Enter ) ) { stan = Gra; } break; case Gra: break; } } window.clear(); switch( stan ) { case Menu: break; case Gra: const float Tilesize = 50; int Tilemap[ 5 ][ 5 ] = { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 1 }, { 0, 0, 1, 0, 0 }, { 0, 0, 1, 0, 0 } }; sf::Texture grasstext; sf::Texture dirttext; grasstext.loadFromFile( "grass.png" ); dirttext.loadFromFile( "dirt.png" ); sf::Sprite grass( grasstext ); sf::Sprite dirt( dirttext ); for( int row = 0; row > 5; row++ ) { for( int col = 0; col > 5; col++ ) { if( Tilemap[ row ][ col ] == 0 ) { grass.setPosition( row * Tilesize, col * Tilesize ); window.draw( grass ); } else { dirt.setPosition( row * Tilesize, col * Tilesize ); window.draw( dirt ); } } } break; } window.display(); } return 0; }
|
|
nanoant20 |
» 2020-07-13 18:26:26 sf::RenderWindow aplikacja( sf::VideoMode( 800, 600 ), "Project: MARS" ); aplikacja.setFramerateLimit( 60 );
sf::Texture grasstext; sf::Texture dirttext; grasstext.loadFromFile( "grass.png" ); dirttext.loadFromFile( "dirt.png" ); sf::Sprite grass( grasstext ); sf::Sprite dirt( dirttext );
Stan stan = Menu; while( aplikacja.isOpen() ) {
|
|
R0ut4 Temat założony przez niniejszego użytkownika |
» 2020-07-13 19:16:00 Nadal nic się nie dzieje
|
|
DejaVu |
» 2020-07-14 00:30:43 Co to znaczy 'nic się nie dzieje'? Może nie kompilujesz w ogóle projektu? W Code::Blocks takie rzeczy z tego co kojarzę to były możliwe. |
|
nanoant20 |
» 2020-07-14 12:25:33 błąd logiczny jest w pętlach for for( int row = 0; row > 5; row++ ) for( int col = 0; col > 5; col++ )
for( int row = 0; row < 5; row++ ) for( int col = 0; col < 5; col++ )
wersja skrócona:: #include <iostream>
#include <SFML/Graphics.hpp> #include <SFML/Window.hpp> #include <SFML/System.hpp> #include <SFML/Audio.hpp>
using namespace std; using namespace sf;
enum Stan { Menu, Gra, End };
int main() { sf::RenderWindow window( sf::VideoMode( 250, 250 ), "Projekt: MARS" ); sf::Texture grasstext; sf::Texture dirttext; grasstext.loadFromFile( "grass.png" ); dirttext.loadFromFile( "dirt.png" ); sf::Sprite grass( grasstext ); sf::Sprite dirt( dirttext ); const float Tilesize = 50; int Tilemap[ 5 ][ 5 ] = { { 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 0 }, { 0, 1, 1, 1, 1 }, { 0, 0, 1, 0, 0 }, { 0, 0, 1, 0, 0 } }; while( window.isOpen() ) { sf::Event event; while( window.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) window.close(); } window.clear( sf::Color::Yellow ); for( int row = 0; row < 5; ++row ) { for( int col = 0; col < 5; col++ ) { if( Tilemap[ row ][ col ] == 0 ) { dirt.setPosition( col * Tilesize, row * Tilesize ); window.draw( dirt ); } if( Tilemap[ row ][ col ] == 1 ) { grass.setPosition( col * Tilesize, row * Tilesize ); window.draw( grass ); } } } window.display(); } return 0; }
|
|
« 1 » 2 |