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

[SFML] Problem z mapą kafelkową

Ostatnio zmodyfikowano 2013-02-14 10:07
Autor Wiadomość
DanielSC
Temat założony przez niniejszego użytkownika
[SFML] Problem z mapą kafelkową
» 2012-11-04 17:55:53
co zrobilem zle?
C/C++
#include <SFML/Graphics.hpp>

int mapa[ 3 ][ 3 ] =
{
    { 1, 1, 1 },
    { 1, 1, 1 },
    { 1, 1, 1 }
};



int main()
{
    sf::Image obrazek;
    obrazek.LoadFromFile( "tlo.png" );
    sf::Sprite sprajt1;
    sprajt1.SetImage( obrazek );
   
    sf::RenderWindow aplikacja( sf::VideoMode( 800, 600, 32 ), "Mapa" );
    while( aplikacja.IsOpened() )
    {
        sf::Event zdarzenie;
        while( aplikacja.GetEvent( zdarzenie ) )
        {
            if( zdarzenie.Type == sf::Event::Closed )
                 aplikacja.Close();
           
        }
        for( int i = 0; i < 3; i++ )
        {
            for( int j = 0; j < 3; j++ )
            {
                if( map[ i ][ j ] == 1 )
               
                     aplikacja.Draw( sprajt1 );
               
            }
        }
       
        aplikacja.Clear();
        aplikacja.Display();
       
    }
    return 0;
}
P-68469
SeaMonster131
» 2012-11-04 18:10:15
Następnym razem wytłumacz na czym polega błąd.

W tym wypadku nie ustawiasz pozycji "sprajt1".
P-68471
Mrovqa
» 2012-11-04 18:11:22
co zrobilem zle?
Nie ująłeś kodu w znaczniki [cpp][/cpp] i nie napisałeś Twojego problemu.

@up widzę, iż mnie uprzedziłeś :)
P-68472
DanielSC
Temat założony przez niniejszego użytkownika
» 2012-11-04 21:11:28
C/C++
#include <SFML/Graphics.hpp>
int mapa[ 3 ][ 3 ] =
{
    { 1, 1, 2 },
    { 2, 1, 2 },
    { 2, 2, 1 }
};



int main()
{
   
   
   
    sf::Image obrazek;
    obrazek.LoadFromFile( "tlo.png" );
    sf::Sprite sprajt1;
    sprajt1.SetImage( obrazek );
   
    sf::RenderWindow aplikacja( sf::VideoMode( 800, 600, 32 ), "Mapa" );
    while( aplikacja.IsOpened() )
    {
        sf::Event zdarzenie;
        while( aplikacja.GetEvent( zdarzenie ) )
        {
            if( zdarzenie.Type == sf::Event::Closed )
                 aplikacja.Close();
           
        }
        for( int i = 0; i < 3; i++ )
        {
            for( int j = 0; j < 3; j++ )
            {
                if( mapa[ i ][ j ] == 2 )
                     sprajt1.SetPosition( 0, 0 );
               
                aplikacja.Draw( sprajt1 );
               
               
            }
        }
       
        aplikacja.Clear();
        aplikacja.Display();
       
    }
    return 0;
}

Program się otworzył i działa poprawnie.Ale chciałbym się was zapytać jak w miejsce tablicy np.mapa[0][1] wstawić
sprajt który by imitował dajmy to kawałek podłoża np. grunt .Jak by taki kod wyglądał i co trzeba by dopisać do
tego już istniejącego programu żeby po otworzeniu ukazało mi się okienko o wymiarach 800 na 600 z kawałkiem gruntu
w jakimś miejscu które było by określone przez tablice dwuwymiarową.
P-68489
Gabes
» 2012-11-05 14:15:45

C/C++
#include <SFML/Graphics.hpp>
using namespace sf;
int mapa[ 3 ][ 4 ] =
{
    { 1, 1, 1, 1 },
    { 1, 0, 0, 1 },
    { 1, 1, 1, 1 }
};
//szerokość i wysokość kafla
int szer = 60, wys = 60;
int main()
{
    Image obrazek;
    obrazek.LoadFromFile( "tlo.png" );
    Sprite sprajt1;
    sprajt1.SetImage( obrazek );
   
    RenderWindow aplikacja( VideoMode( 800, 600, 32 ), "Mapa" );
    aplikacja.SetFramerateLimit( 60 );
    while( aplikacja.IsOpened() )
    {
        Event zdarzenie;
        while( aplikacja.GetEvent( zdarzenie ) )
        {
            if( zdarzenie.Type == Event::Closed )
                 aplikacja.Close();
           
        }
        aplikacja.Clear( Color( 160, 160, 160 ) );
        for( int y = 0; y < 3; y++ )
        {
            for( int x = 0; x < 4; x++ )
            {
                if( mapa[ y ][ x ] == 1 )
                     sprajt1.SetPosition( szer * x, wys * y );
               
                aplikacja.Draw( sprajt1 );
            }
        }
        aplikacja.Display();
    }
    return 0;
}
P-68533
DanielSC
Temat założony przez niniejszego użytkownika
» 2012-11-05 17:39:17
Dzięki właśnie o to mi chodziło.A i co oznacza ta szerokość równa 60?

 
P-68559
Gabes
» 2012-11-05 17:45:05
//szerokość i wysokość kafla
int szer = 60, wys = 60;
to szerokość i wysokość obrazka "tlo.png"
to tylko przykładowe wymiary.
P-68560
m4tx
» 2012-11-05 17:45:26
Um... Śmiem twierdzić na podstawie komentarzy w kodzie, iż jest to szerokość pojedynczego kafla... :P Czegoś nie rozumiesz jeszcze?

EDIT:
Oj, widzę że mnie Gabes uprzedził :)
P-68561
« 1 » 2 3
  Strona 1 z 3 Następna strona