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
» 2012-11-05 19:21:01
Już wszystko rozumiem bardzo dziękuje.
//edit

Napisałem program w którym możemy poruszać kwadratem po mapie kafelkowej .Program wykrywa kolizje miedzy kwadratem a kafelkami.Natknęłem się na taki błąd est mapa zaluszmy :


1,1,1,1,1,1,
1,1,1,1,1,1,
2,2,2,2,2,2,
2,2,2,2,2,2,
2,2,2,2,2,2,
2,2,2,2,2,2,

i jest ona odpowiednio kolorowana jesli 1 to na niebiesko jesli 2 to  czerwono . Po otworzeniu Aplikacji  rysuje mi cos takiego :

1,1,1,1,1,1,
2,2,2,2,2,2, -------jeden pasek czerwieni wiecej niż byc powinno
2,2,2,2,2,2,
2,2,2,2,2,2,
2,2,2,2,2,2,
2,2,2,2,2,2,


mape tak rysuje :

C/C++
for( int i = 0; i < 6; i++ )
{
    for( int j = 0; j < 6; j++ )
    {
        if( mapa1[ j ][ i ] == 2 )
             Aplikacja.Draw( czerwony );
       
        trawa.SetPosition( i * s2, j * w2 );
        if( mapa1[ j ][ i ] == 1 )
             Aplikacja.Draw( niebieski );
       
        powietrze.SetPosition( i * s2, j * w2 );
       
    }
}

gdzie s2 to szerokosc kafla a w2 to wysokosc kafla.
Proszę o pomoc.
P-68570
Wasilek
» 2013-01-22 21:07:49
Brak {} ?
I chyba wypadałoby najpierw ustalić pozycję kafla, a dopiero później go narysować :)
P-74725
DanielSC
Temat założony przez niniejszego użytkownika
» 2013-01-23 16:43:49
Ok dzieki działa tak dal przykladu narysowalem te liczby takie odbicie tablicy. A problem związany z tym co mówiłeś że pierw czeba pozycje potem ryswać
Dzieki ci!
///
edit:
Siemka mam taki problem , że mapa rysuje śię z widoczną kratką mimo ,że sprajt jest szerszy od szerokości kafla:

http://zapodaj.net/9b5113c186d84.png.html

link do screena jak wygląda mapa
P-74818
polkom21
» 2013-02-05 15:39:48
Wygląda jak byś źle podawał pozycję każdego rysowanego kafla. Podaj jakiś większy kod jak to robisz.
P-75766
DanielSC
Temat założony przez niniejszego użytkownika
» 2013-02-05 17:42:08
C/C++
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
using namespace std;
int main()
{
   
   
   
   
    RenderWindow Aplikacja( VideoMode( 900, 900, 32 ), "Aplikacja" ); //Style::Fullscreen );
    double s2 = 40, w2 = 40;
   
   
   
   
   
   
    int mapa1[ 40 ][ 40 ];
    for( int i = 0; i < 20; i++ )
    {
        for( int j = 0; j < 40; j++ )
             mapa1[ i ][ j ] = 1;
       
    }
    for( int i = 20; i < 40; i++ )
    {
        for( int j = 0; j < 40; j++ )
        {
            mapa1[ i ][ j ] = 2;
        }
    }
   
   
   
    Image obrazek1, obrazek2;
    obrazek1.LoadFromFile( "trawa.png" );
    obrazek2.LoadFromFile( "powietrze.png" );
   
    Sprite trawa, powietrze, menu, avatar1, avatar2, avatar3, avatar4, avatar5, avatar6;
    trawa.SetImage( obrazek1 );
    powietrze.SetImage( obrazek2 );
   
    while( Aplikacja.IsOpened() )
    {
        Event zdarzenie;
        while( Aplikacja.GetEvent( zdarzenie ) )
        {
            if( zdarzenie.Type == Event::Closed )
                 Aplikacja.Close();
           
            if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape )
                 Aplikacja.Close();
           
           
           
           
           
           
           
            Aplikacja.Clear( Color::Blue );
           
           
           
            for( int i = 0; i < 40; i++ )
            {
                for( int j = 0; j < 40; j++ )
                {
                    if( mapa1[ j ][ i ] == 2 )
                         trawa.SetPosition( i * s2, j * w2 );
                   
                    Aplikacja.Draw( trawa );
                   
                    if( mapa1[ j ][ i ] == 1 )
                         powietrze.SetPosition( i * s2, j * w2 );
                   
                    Aplikacja.Draw( powietrze );
                   
                   
                }
               
            }
           
           
            Aplikacja.Display();
           
        }
    }
    return 0;
}
[/i]
P-75769
polkom21
» 2013-02-05 23:30:01
No to chyba nie jest cały kod. Skąd się bierze to Twoje s2 i w2? Jaką masz szerokość obrazków?
P-75792
DanielSC
Temat założony przez niniejszego użytkownika
» 2013-02-06 17:23:43
szerokość 40 i wysokość również.
Jest definicja tej zmiennej na początku typu duble.
P-75806
polkom21
» 2013-02-07 01:05:14
No tak lepiej korzystać s double, które ma 8 bitów niż spokojnie z int, który ma 4 bity.
A w obrazkach czasem nie masz z każdej strony szerokość na 1 pixel?
P-75886
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona