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