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

[SDL] Kafelkowanie mapy

Ostatnio zmodyfikowano 2011-04-09 20:48
Autor Wiadomość
mundzio123
Temat założony przez niniejszego użytkownika
[SDL] Kafelkowanie mapy
» 2011-04-09 17:57:59
Witam. Mam maly problem z ukladaniem kafelkow na mapie. Duzo szukalem o tym w internecie i na lazyfoo jest to troszke malo zrozumiale (jezyk angielski), i na DarkCult lecz tam bylo calkowicie da mnie nie zrozumiale. Wiec prosze was o wytlumaczenie najlepiej razem z kodem jak mam to zrobic.
P-30495
yoogi
» 2011-04-09 18:46:58
Witaj, ja to kiedyś tak napisałem:

for(int i=0;i<24;i++)
{
for(int j=0;j<32;j++)
{
if(pole[i][j]==0)
{
SDL_BlitSurface(nic, NULL, ekran, &rPole);
}
if(pole[i][j]==1)
{
SDL_BlitSurface(ziemia, NULL, ekran, &rPole);
}
if(pole[i][j]==2)
{
SDL_BlitSurface(skala, NULL, ekran, &rPole);
}
if(pole[i][j]==3)
{
SDL_BlitSurface(ziemia, NULL, ekran, &rPole);
SDL_BlitSurface(kula, NULL, ekran, &rPole);
}
if(pole[i][j]==4)
{
SDL_BlitSurface(ziemia, NULL, ekran, &rPole);
SDL_BlitSurface(gem, NULL, ekran, &rPole);
}
rPole.x=rPole.x+32;
}
rPole.y=rPole.y+32;
rPole.x=0;
}
P-30500
mundzio123
Temat założony przez niniejszego użytkownika
» 2011-04-09 19:28:05
Dziekuje :) I o to mi chodzilo. Mysle ze sobie teraz poradze :) Wielki +
P-30506
yoogi
» 2011-04-09 20:13:56
Bardzo proszę, polecam się na przyszłość ;]
P-30511
mundzio123
Temat założony przez niniejszego użytkownika
» 2011-04-09 20:22:58
Heh... mógłbyś jeszcze pomóc ze scrollowaniem tego xD Narazie takie coś mi wyszło

#include <SDL/SDL.h>

SDL_Surface * ekran = NULL;
SDL_Surface * ludek = NULL;
SDL_Surface * grass = NULL;

SDL_Rect rPole, MapaDestination;


SDL_Event zdarzenie;

int  map_x=0, map_y=0;
bool koniec = false;
Uint8 * keystate = SDL_GetKeyState (NULL);
int x;


int main(int argc, char *args[])
{
    SDL_Init(SDL_INIT_EVERYTHING);
    ekran = SDL_SetVideoMode(1000, 500, 32, SDL_SWSURFACE);
    grass = SDL_LoadBMP("sprite/grass.bmp");
    ludek = SDL_LoadBMP("sprite/ludek1.bmp");
   
    int pole[10][19] = {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 i=0;i<10;i++)
    {
            for(int j=0;j<19;j++)
            {
                    if(pole[i][j]==0)
                    {
                                     SDL_BlitSurface(grass, NULL, ekran, &rPole);
                    }
                    if(pole[i][j]==1)
                    {
                                     SDL_BlitSurface(ludek, NULL, ekran, &rPole);
                    }
            rPole.x=rPole.x+50;
    }
    rPole.y=rPole.y+50;
    rPole.x=0;}
            while (koniec != true)
            {
                  while (SDL_PollEvent ( & zdarzenie ))
                                     {
                   if(zdarzenie.type == SDL_QUIT)
                   {
                                     koniec = true;
                   }
                   }

                 
                  if(keystate [SDLK_RIGHT]){x++;}
                  MapaDestination.x = x;
                  SDL_Flip(ekran);
                
            }
    }



   


Ta pętla rysująca powinna być raczej przed pętlą główną nie ? Bo spróbowałem i mi coś dziwnego wychodziło ;p

___________________________________________________________________

Bo tak ogólnie rzecz biorąc, to nawet w szkole informatyki nie mam, ale w przyszłości chciałbym zostać programistą, lecz narazie moge się uczyć jedynie z internetu ;P Problem w tym że nie mam nikogo do pomocy, a liczba materiałów też jest ograniczona(a niby to internet xD). Tak pomyślałem sobie żeby przełożyć cały materiał z LazyFoo na język polski i dopiero wtedy zacząć się uczyć poważniej SDLa, ale troszke z tym roboty.
P-30512
yoogi
» 2011-04-09 20:29:36
Hmmmm... nigdy nie robiłem scrool'owania, z tego co rozumiem to chodzi ci i przewijanie. Myszką za pomocą "Złap i puść" było by raczej bardzo trudno, albo przynajmniej to nie mój poziom, ale mógł byś zrobić za pomocą np. szczałek, lub innych klawiszy. Najlepiej jak byś to zrobił w ten sposób:
-Kopiowanie całej mapy na jakąś przestrzeń,
-Wycięcie tego, za pomocą spritów,
-Wyświetlenie na ekran

a szczałkami być zwiększał i zmniejszał zmienne.
P-30513
mundzio123
Temat założony przez niniejszego użytkownika
» 2011-04-09 20:34:07
No i działa ;) Jeszcze tylko timery i kilka innych bajerów i wszystko będzie cacy ;)
P-30514
yoogi
» 2011-04-09 20:48:12
Timerów nigdy nie ogarnąłem, w SDL'u więc nie pomogę.
P-30518
« 1 »
  Strona 1 z 1