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

Mapa kafelkowa

Ostatnio zmodyfikowano 2011-04-25 23:39
Autor Wiadomość
skovv
Temat założony przez niniejszego użytkownika
Mapa kafelkowa
» 2011-04-25 09:54:06
Witam. Tworze pierwszą minigierke na moim silniku( http://warsztat.gd/projects.php?x=view&id=2026 ), wszystko działa więc chciałem zrobić mape kaflowe. Zobiłem sobie taklice:

int Mapa [32][24]={
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
                2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,2,3,0,0,0,0,0,2,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
            };
stworzyłem potrzebne mi zmienne:

LiczbaMurkow = 0;
            LiczbaBotow = 0;
            int murkekdododaniaX[999];
            int murkekdododaniaY[999];
            int botdododaniaX[999];
            int botdododaniaY[999];
            int przpozgraczax;
            int przpozgraczay;
czytam tablice:

for( int aX = 0; aX < 32; aX+=1 )
            {
                for( int aY = 0; aY < 24; aY+=1 )
                {
                    if( Mapa[ aX ][ aY ] == 1 ){ przpozgraczax = aX*32; przpozgraczay = aY*32; GrX = aX*32; GrY = aY*32; }
                    if( Mapa[ aX ][ aY ] == 2 ){ murkekdododaniaX[LiczbaMurkow]=aX*32; murkekdododaniaY[LiczbaMurkow]=aY*32; LiczbaMurkow+=1; }
                    if( Mapa[ aX ][ aY ] == 3 ){ botdododaniaX[LiczbaBotow]=aX*32; murkekdododaniaY[LiczbaMurkow]=aY*32; LiczbaBotow+=1; }
                }

            }
i tworze wszystkie obiekty:

GRACZ Gracz( przpozgraczax, przpozgraczay );
            MUREK *Mur[LiczbaMurkow];
            for(int u=0; u<=LiczbaMurkow; u++)
            {
                Mur[u] = new MUREK( murkekdododaniaX[u],murkekdododaniaY[u],1,3 );
            }
            BOT *Bot[LiczbaBotow];
            for(int z=0; z<=LiczbaBotow;z++)
            {
                Bot[z] = new BOT( botdododaniaX[z]+2, botdododaniaY[z]-2 );
            }

Obiekty się tworzą ale pionowo, z prawej strony i nie do końca dobrze. Screen: http://www.speedyshare.com/files/28133426/s.JPG
P-31916
SeaMonster131
» 2011-04-25 09:58:47
Może tak powinno być?
C/C++
int Mapa[ 5 ][ 10 ]
{
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};

for( int y = 0; y < 5; y++ )
{
    for( int x = 0; x < 10; x++ )
    {
        if( Mapa[ y ][ x ] == 0 ) { }
        //itd..
    }
}
P-31917
skovv
Temat założony przez niniejszego użytkownika
» 2011-04-25 10:19:54
Dzięki :] Wszystko działa :]
P-31919
skovv
Temat założony przez niniejszego użytkownika
» 2011-04-25 18:47:28
Chcę dodać czytanie map z pliku. Zrobiłem więc sobie strukturę która mi to ułatwi:

struct MAP_FROM_FILE{
    fstream plik;
    bool Good;
    short int Map[ 9999 ][ 9999 ];
    void Load( char* Sciezka, int x, int y )
    {
        plik.open( "plik.txt", std::ios::in );
        if(plik.is_open())
        {
            Good = true;
        }
        else Good = false;
        for( int a = 0; a < y; a++ )
        {
            for( int b = 0; b < x; b++ )
            {
                plik >> Map[ a ][ b ];
            }
        }
    }
    void Destroy( )
    {
        plik.close();
    }
};
W kodzie daje wtedy tylko:

MAP_FROM_FILE Mapka;
Mapka.Load( "Data/Mapa.txt", 5, 3 );//z tym 5 i 3 to już mi się wszystko pomieszało bo kombinowałem i tak, i tak i nie działa -.-
no i wczytywanie:

int LiczbaObiektow = 0;
int ObjX[999];
int ObjY[999];
int ObjS[999];
for(int MapX=0;MapX<5;MapX++)
                    {
                        for(int MapY=0;MapY<3;MapY++)
                        {
                            if( Mapka.Map[MapY][MapX] == 1 )
                            {
                                ObjX[LiczbaObiektow] = MapX*32;
                                ObjY[LiczbaObiektow] = MapY*32;
                                ObjS[LiczbaObiektow] = 1;
                                LiczbaObiektow += 1;
                            }
                            else if( Mapka.Map[MapY][MapX] == 2 )
                            {
                                ObjX[LiczbaObiektow] = MapX*32;
                                ObjY[LiczbaObiektow] = MapY*32;
                                ObjS[LiczbaObiektow] = 2;
                                LiczbaObiektow += 1;
                            }
                            else
                            {
                                ObjX[LiczbaObiektow] = MapX*32;
                                ObjY[LiczbaObiektow] = MapY*32;
                                ObjS[LiczbaObiektow] = 3;
                                LiczbaObiektow += 1;
                            }
                        }
                    }http://cpp0x.pl/jsRequired.php
Niestety nie działa. Tworzą się tylko SPRITE 3 :/


a... plik z maką wygląda tak:

00000
01210
00000
P-31965
ison
» 2011-04-25 19:59:11
zauważ że jeśli plik wygląda następująco:
00000
01210
00000
a w kodzie wczytujesz zmienną liczbową to za każdym razem wczytujesz całą linijkę, gdyż jest traktowana jako 1 liczba,
pooddzielaj je spacjami
P-31972
skovv
Temat założony przez niniejszego użytkownika
» 2011-04-25 21:23:00
dalej to samo :)
P-31979
malan
» 2011-04-25 21:31:13
C/C++
for( int a = 0; a < y; a++ )
{
    for( int b = 0; b < x; b++ )
    {
        //...
    }
}
Nie powinno być w pierwszej pętli
a < x
 a w drugiej
b < y
?
P-31981
skovv
Temat założony przez niniejszego użytkownika
» 2011-04-25 23:39:09
Ciągle to samo :| Chyba źle wczytuje te bajty, czy coś takiego ;/
P-31985
« 1 »
  Strona 1 z 1