Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML/C++] Obrócona mapa i "Failed to retrieve pixel..."

Ostatnio zmodyfikowano 2021-04-21 17:58
Autor Wiadomość
R0ut4
Temat założony przez niniejszego użytkownika
[SFML/C++] Obrócona mapa i "Failed to retrieve pixel..."
» 2021-04-21 16:44:11
Yo, otóż tym razem zwracam się do was z pytaniami:
1. Dlaczego przy takim ustawieniu mapy:
C/C++
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 1, 1, 1, 2, 2, 2 },
{ 0, 0, 1, 1, 1, 1, 1, 2, 2, 2 },
{ 0, 0, 3, 1, 3, 1, 3, 3, 0, 0 },
{ 0, 0, 3, 3, 3, 1, 3, 3, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
0-woda 1-trawa 2-most 3-drzewo(projekt)
drzewa, które powinny być na dole są na górzę?

2. Przed dodaniem drzew miałem problem z mostem. Zamiast być po prawej był na dole to spróbowałem obrócić kamerę kamera.setRoptation(90.f); (chyba tak), i to załatwilo sprawę z mostem, ale teraz jest taki problem z drzewami. Dlaczego?

3. O co chodzi z problemem "Failed to retrieve pixel format information: Opracja ukończona pomyślnie." szukałem w internecie i nic nie wynalazłem.

kod main.cpp
C/C++
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>

enum Stan
{
   
Menu, Game, Eq
};

int main()
{
   
sf::RenderWindow window( sf::VideoMode( 1280, 720 ), "Game" );
   
window.setFramerateLimit( 60 );
   
   
sf::Texture player;
   
sf::Texture water;
   
sf::Texture grass;
   
sf::Texture most;
   
sf::Texture iglaste;
   
   
player.loadFromFile( "player.png" );
   
water.loadFromFile( "water.png" );
   
grass.loadFromFile( "grass.png" );
   
most.loadFromFile( "most.png" );
   
iglaste.loadFromFile( "iglaste.png" );
   
   
sf::Sprite spPlayer( player );
   
sf::Sprite spWater( water );
   
sf::Sprite spGrass( grass );
   
sf::Sprite spMost( most );
   
sf::Sprite spIglaste( iglaste );
   
   
spPlayer.setOrigin( 25.f, 25.f );
   
spPlayer.setPosition( 640, 360 );
   
sf::View kamera;
   
kamera.setCenter( spPlayer.getPosition() );
   
kamera.setSize( 1280.f, 720.f ); //(640.f, 360.f);
   
kamera.setRotation( 90.f );
   
Stan stan;
   
sf::Event e;
   
while( window.isOpen() )
   
{
       
while( window.pollEvent( e ) )
       
{
           
if( e.type == sf::Event::Closed )
           
{
               
window.close();
           
}
        }
       
//WYDARZENIA
       
switch( stan )
       
{
       
case Menu:
           
{
               
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Enter ) )
               
{
                   
stan = Game;
               
}
            }
           
break;
       
case Game:
           
{
               
if( sf::Keyboard::isKeyPressed( sf::Keyboard::W ) )
               
{
                   
spPlayer.move( 2, 0 );
                   
kamera.move( 2, 0 );
               
}
               
if( sf::Keyboard::isKeyPressed( sf::Keyboard::S ) )
               
{
                   
spPlayer.move( - 2, 0 );
                   
kamera.move( - 2, 0 );
               
}
               
if( sf::Keyboard::isKeyPressed( sf::Keyboard::A ) )
               
{
                   
spPlayer.move( 0, - 2 );
                   
kamera.move( 0, - 2 );
               
}
               
if( sf::Keyboard::isKeyPressed( sf::Keyboard::D ) )
               
{
                   
spPlayer.move( 0, 2 );
                   
kamera.move( 0, 2 );
               
}
            }
//game wydarzenia
           
break;
       
case Eq:
           
           
break;
       
} //switch wydarzenia
        //WYŒWIETLANIE
       
window.clear();
       
switch( stan )
       
{
       
case Menu:
           
           
break;
       
case Game:
           
{
               
const float tilesize = 100;
               
int maptile[ 10 ][ 10 ] =
               
{
                    {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                   
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                   
{ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0 },
                   
{ 0, 0, 1, 1, 1, 1, 1, 1, 0, 0 },
                   
{ 0, 0, 1, 1, 1, 1, 1, 2, 2, 2 },
                   
{ 0, 0, 1, 1, 1, 1, 1, 2, 2, 2 },
                   
{ 0, 0, 3, 1, 3, 1, 3, 3, 0, 0 },
                   
{ 0, 0, 3, 3, 3, 1, 3, 3, 0, 0 },
                   
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
                   
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
                }
;
               
for( int row = 0; row < 10; row++ )
               
{
                   
for( int col = 0; col < 10; col++ )
                   
{
                       
if( maptile[ row ][ col ] == 0 )
                       
{
                           
spWater.setPosition( row * tilesize, col * tilesize );
                           
window.draw( spWater );
                       
}
                       
if( maptile[ row ][ col ] == 1 )
                       
{
                           
spGrass.setPosition( row * tilesize, col * tilesize );
                           
window.draw( spGrass );
                       
}
                       
if( maptile[ row ][ col ] == 2 )
                       
{
                           
spMost.setPosition( row * tilesize, col * tilesize );
                           
window.draw( spMost );
                       
}
                       
if( maptile[ row ][ col ] == 3 )
                       
{
                           
spIglaste.setPosition( row * tilesize, col * tilesize );
                           
window.draw( spIglaste );
                       
}
                    }
                }
               
window.draw( spPlayer );
               
window.setView( kamera );
           
} //case Game wyswietlanie
           
break;
       
case Eq:
           
           
break;
       
} //switch wyswietalnie
       
window.display();
   
}
}
P-178462
DejaVu
» 2021-04-21 16:47:23
Nie obracaj kamery. Obróć sprajta, jeżeli wyświetla się w złym kierunku.
P-178463
pekfos
» 2021-04-21 17:34:13
C/C++
spWater.setPosition( row * tilesize, col * tilesize );
Pozycją X jest numer kolumny, nie numer wiersza.

3. O co chodzi z problemem "Failed to retrieve pixel format information: Opracja ukończona pomyślnie." szukałem w internecie i nic nie wynalazłem.
Jaka wersja SFML? Jeśli najnowsza, możesz próbować stawiać breakpointy żeby wiedzieć co dokładnie idzie źle. Jest więcej niż jedno miejsce które wypisuje ten błąd.
https://github.com/SFML/SFML/blob/master/src/SFML/Window/Win32/WglContext.cpp#L325
https://github.com/SFML/SFML/blob/master/src/SFML/Window/Win32/WglContext.cpp#L463
https://github.com/SFML/SFML/blob/master/src/SFML/Window/Win32/WglContext.cpp#L479
P-178464
R0ut4
Temat założony przez niniejszego użytkownika
» 2021-04-21 17:58:24
Dzięki Pekfos. Zadziałało xd
I dzięki DejaVu za chęci :D

Co do alertu w konsoli, jakieś pomysły?
Zachciało mi się wrócić do programowania i nadal nie umiem zrobić kolizji z np Tilem 0 (wodą) XD

EDIT:
Wczoraj ściągałem (chyba) najnowszą wersję z oficjalnej strony

EDIT 2:
Komunikat pojawia się tylko w konsoli
P-178465
« 1 »
  Strona 1 z 1