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

[SFML, C++] Mapa sie nie wyswietla

Ostatnio zmodyfikowano 2011-12-13 15:26
Autor Wiadomość
Rughailon
Temat założony przez niniejszego użytkownika
[SFML, C++] Mapa sie nie wyswietla
» 2011-12-12 16:04:16
Witam. Mam pewien problem. Chcialem stworzyć platformówke, lecz mapa nie chce sie wyswietlic.. Wyswietla sie tylko kilka kafelkow.
Zdjecie:
http://screenshooter.net/7731424/ijcwlov
Kod:
C/C++
#include <sfml/window.hpp>
#include <sfml/graphics.hpp>
#include <sfml/audio.hpp>
#include <fstream>

using namespace std;

int mapa[ 20 ][ 500 ];

int mapa_y = 20;
int mapa_x = 500;

template < class Tab >

void Load( Tab map )
{
    fstream file;
    file.open( "mapa.map", ios::in );
    for( int y = 0; y < 20; y++ )
    {
        for( int x = 0; x < 500; x++ )
        {
            file >> mapa[ y ][ x ];
        }
    }
    file.close();
}

int main()
{
    sf::RenderWindow OknoGry( sf::VideoMode( 1024, 768, 32 ), "BITree 1.0.0" );
    OknoGry.SetFramerateLimit( 120 );
   
    Load( mapa );
   
    sf::Image tlo;
    tlo.LoadFromFile( "Graphics/las.bmp" );
    sf::Sprite las;
    las.SetImage( tlo );
    las.SetPosition( - 2, - 253 );
    las.SetScale( 2, 2 );
   
    sf::Image gui;
    gui.LoadFromFile( "Graphics/gui.bmp" );
    sf::Sprite gui1;
    gui1.SetImage( gui );
    gui1.SetPosition( 85, - 70 );
    gui1.SetScale( 1.2, 1.2 );
   
    sf::Image obrazek;
    obrazek.LoadFromFile( "Graphics/Ludzik.bmp" );
    sf::Sprite Bohater;
    Bohater.SetImage( obrazek );
    Bohater.SetPosition( 250, 515 );
    Bohater.SetScale( 2, 2 );
   
    sf::Image pien;
    pien.LoadFromFile( "Pien.bmp" );
    sf::Sprite p;
    p.SetImage( pien );
   
    sf::Image liscie;
    liscie.LoadFromFile( "Liscie.bmp" );
    sf::Sprite l;
    l.SetImage( liscie );
   
    sf::Image trawa;
    trawa.LoadFromFile( "Trawa.bmp" );
    sf::Sprite t;
    t.SetImage( trawa );
   
    sf::Image trpi;
    trpi.LoadFromFile( "Trpi.bmp" );
    sf::Sprite tp;
    tp.SetImage( trpi );
   
    sf::Image ziemia;
    ziemia.LoadFromFile( "Ziemia.bmp" );
    sf::Sprite z;
    z.SetImage( ziemia );
   
    sf::Image kursor;
    kursor.LoadFromFile( "Kursor.bmp" );
    sf::Sprite kursorek;
    kursorek.SetImage( kursor );
   
   
    sf::Font mojaCzcionka;
    mojaCzcionka.LoadFromFile( "Stellina.ttf", 30 * 5 );
   
    while( OknoGry.IsOpened() )
    {
        sf::Event zdarzenie;
        while( OknoGry.GetEvent( zdarzenie ) )
        {
            if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape )
            {
                OknoGry.Close();
            }
           
            if( zdarzenie.Key.Code == sf::Key::F1 )
            {
                sf::Image zrzutEkranu = OknoGry.Capture();
                zrzutEkranu.SaveToFile( "Zrzut Ekranu.png" );
            }
        }
       
        const sf::Input & sterowanie = OknoGry.GetInput();
       
        sf::Vector2f mysz = OknoGry.ConvertCoords( sterowanie.GetMouseX(), sterowanie.GetMouseY() );
       
        if( sterowanie.IsKeyDown( sf::Key::Left ) )
             Bohater.Move( - 1.0, 0 );
       
        if( sterowanie.IsKeyDown( sf::Key::Right ) )
             Bohater.Move( + 1.0, 0 );
       
        if( sterowanie.IsKeyDown( sf::Key::Up ) )
             Bohater.Move( 0, - 1.6 );
       
        if( sterowanie.IsKeyDown( sf::Key::Down ) )
             Bohater.Move( 0, + 1.6 );
       
       
        //if( sterowanie.IsKeyDown( sf::Key::Right ) )
        //mapa.Move( - 0.1, 0 );
       
        //if( sterowanie.IsKeyDown( sf::Key::Left ) )
        //mapa.Move( + 0.1, 0 );
       
       
        for( int y = 0; y < 20; y++ )
        {
            for( int x = 0; x < 500; x++ )
            {
                if( mapa[ y ][ x ] == 1 )
                {
                    p.SetPosition( x * 31, y * 32 );
                    OknoGry.Draw( p );
                }
               
                if( mapa[ y ][ x ] == 2 )
                {
                    l.SetPosition( x * 31, y * 32 );
                    OknoGry.Draw( l );
                }
               
               
                if( mapa[ y ][ x ] == 3 )
                {
                    t.SetPosition( x * 31, y * 32 );
                    OknoGry.Draw( t );
                }
               
                if( mapa[ y ][ x ] == 4 )
                {
                    tp.SetPosition( x * 31, y * 32 );
                    OknoGry.Draw( tp );
                }
               
                if( mapa[ y ][ x ] == 5 )
                {
                    z.SetPosition( x * 31, y * 32 );
                    OknoGry.Draw( z );
                }
               
            }
        }
       
        OknoGry.Clear( sf::Color( 255, 255, 255 ) );
        OknoGry.Draw( las );
        //OknoGry.Draw( mapa() );
        OknoGry.Draw( Bohater );
        OknoGry.Draw( p );
        OknoGry.Draw( l );
        OknoGry.Draw( t );
        OknoGry.Draw( tp );
        OknoGry.Draw( z );
        OknoGry.Draw( gui1 );
        OknoGry.Draw( kursorek );
       
        sf::String tekst( L"Alpha 1.0.0" );
        tekst.SetSize( tekst.GetSize() * 1 );
        tekst.SetPosition( 650, 25 );
        tekst.SetFont( mojaCzcionka );
        OknoGry.Draw( tekst );
        OknoGry.Display();
    }
    return 0;
}


P-45546
pekfos
» 2011-12-12 16:51:15
bo rysujesz, czyścisz i rysujesz kilka. Piszesz bez zrozumienia?

Btw. live - żyć, life - życie.  Chyba się pomyliłeś..
P-45549
Rughailon
Temat założony przez niniejszego użytkownika
LOL
» 2011-12-12 20:29:09
Dzieki. Troche poprawilem kod.. Ale nadal terenu nie bylo. A wpadlo mi do glowy, ze moze tlo zakrywa cale kafelki. I mialem racje.. :D Ale pojawil sie nowy problem. Sa przerwy miedzy kafelkami.
Screen:
http://screenshooter.net/7731424/vdtjolx
P-45569
hincu
» 2011-12-12 21:03:16
zmniejsz szerokosc i wysokosc wyswietlania kafli o 1 : P
P-45572
m4tx
» 2011-12-12 22:03:52
Wyłącz antyaliasing.
P-45577
DejaVu
» 2011-12-12 22:13:55
True - to jest wina antyaliasingu (należy wyłączyć » SFML 1.6 » ImageSetSmooth).
P-45578
Rughailon
Temat założony przez niniejszego użytkownika
» 2011-12-13 15:26:10
Działa! Dzieki za pomoc. :)
P-45581
« 1 »
  Strona 1 z 1