[POBIERZ] kod źródłowy i inne pliki potrzebne do uruchomienia gry  [POBIERZ] 

Zachęcam do komentowania :) Mile widziane sugestie i pytania, na które chętnie odpowiem

5 paź 2010

Ruchome tło w grze

Krótki post na temat mechanizmu poruszania tłem. Jak na początku napisałem ma to być gra, w której akcja obywa się w kosmosie, więc trzeba pomyśleć na tłem do gry. Nie byłoby trudności z dodaniem bitmapy, która by się nie ruszała ale to by było pójście na łatwiznę... Myślałem trochę nad zrobieniem ruchomego tła i wymyśliłem taką funkcję.
Jest to funkcja składowa klasy Cmenu(odpowiedzialna za menu, interfejs gry).
Funkcja działa w taki sposób:
Po każdym obiegu pętli gry wycina "pasek" z góry ekranu, na jego miejsce przesuwa całą bitmapę czyli o 1 piksel do góry, po przesunięciu bitmapy o 1 piksel w górę zostaje nam pusty  pasek u samego dołu i owa funkcja wstawia wycięty pasek na sam dół ekranu.

A oto rysunek pomocniczy, a zarazem skrót mojego kazania :P
S[rzałki obrazują ruch bitmapy. Wycinek o nr 1 wstawiamy na sam dół, i na miejsce 1 wskakuje 2. Po obiegu pętli owa 2 wskakuje na sam dół, a na jej miejsce wskoczy 3 itd.
I króciutka funkcja:

void Cmenu::wyswietl_tlo()
{
   blit(tlo,bufor,0,0,0,-pos,tlo->w,tlo->h);
   blit(tlo,bufor,0,0,0,tlo->h-pos,tlo->w,pos);

   if(pos==tlo->h)
   {
      pos=0;
   }

   pos++;
}


 
Testowałem to i bardzo fajnie wyszło ale niestety nie mam dobrej tekstury (obrazy wziąłem z google) i nie ma dobrego przejścia tzn widać końce bitmapy po podczas przesuwania. Jeżeli chodzi o mnie to ideą pisania gry jest nauka programowania, a nie ładna grafika, choć jeżeli znacie jakieś stronki z teksturami to zapodajcie :)

Brak komentarzy:

Prześlij komentarz