uwaga, troszke dlugie ;) mozna przejsc od razu na dol do przykladu lub poczytac moje wypociny ;) a w razie czego prosze o korekte, jesli cos blednie napisalem
z tym, ze z tego co pamietam, kod z obrotem samochodu dotyczy jednego obiekty typu BITMAP*, ale przeciez koledzy dobrze juz wyjasnili, w jaki sposob uzyskac z jednej bitmapy (pliku zawierajacego grafike w formacie .bmp jesli o tym samym mowimy)
normalnie chcac wyswietlic nasz obrazek, tworzymy najpierw obiekt
bitmap* obrazek1
pozniej np masked_blit(co, gdzie, gdzie poczatek x obrazka, gdzie poczatek y obrazka, w ktorym miejscu x wyswietlic, w ktorym miejscu y wyswietlic, jak szeroki obrazek, jak wysoki obrazek)
i jesli argumenty beda 0,0,0,0,szerokosc,wysokosc - wyswietlimy dokladnie nasz obrazek caly, w lewym gornym rogu bitmapy, na jakiej wyswietlamy - jesli screen = bedzie to rowniez rog ekranu
jesli argumenty beda np 20,50,100,200, szerokosc, wysokosc - obetnie to nasz obrazek nieco...nie pokaze nam pierwszych 20pix od lewej i zetnie nam 50 pix od gory, w dodatku wyswietli nam 100 pix od brzegu bitmapy - dla screen bedzie to 100pix od lewego brzegu ekranu, no i 200pix od gory, a jesli do tego wielkosc (rozdzielczosc) monitora bedzie = wielkosci wyswietlanej bitmapy, to nie utnie jeszcze wiecej niz te 20 i 50, powiekszone o 100 i 200
a wracajac do tematu - chcac uzyskac wiele obrazkow z jednej bitmapy, ale jako osobne obiekty, aby mogla zachodzic miedzy nimi np kolizja, wystarczy utworzyc
bitmap* obrazek2, ktoremu zaladujemy ta sama bitmape, ale np inny jej fragment, czyli zamiast 0,0..... podamy 20,0.... (jesli obrazki sa w 1 rzedzie, obok siebie, o szerokosci 20)
oczywiscie to wszytsko jest w kursie, jak rowniez w odpowiedziach kolegow powyzej, moze nieco bardziej rozpisalem .... ale nie wiem tez, czy dokladnie o to chodzi, w razie czego moge odpowiedziec bardziej szczegolowo
no i szybki przyklad
BITMAP* bufor=create_bitmap(800,600);
BITMAP* obrazek1=load_bmp("obraz.bmp",default_palette);
BITMAP* obrazek2=load_bmp("obraz.bmp",default_palette);
masked_blit(obrazek1,bufor,0,0,0,0,obrazek1->w,obrazek1->h);
masked_blit(obrazek2,bufor,20,0,50,0,obrazek2->w,obrazek2->h);
masked_blit(bufor,screen,0,0,0,0,bufor->w,bufor->h);
kod z glowy, wiec moga zdarzyc sie literowki itd, powiedzmy, ze mamy obrazek w katalogu z naszym projektem zapisany jako obraz.bmp, o wymiarach 40,20. polowa obrazka to postac, druga polowa obrazka to drzewo, narysowane na rozowym tle 255,0,255. w sposob pokazany powyzej wyswietlimy je na ekranie, obok siebie z malym odstepem, na jednakowej wysokosci, jako 2 osobne obrazki, przez co z jednej bitmapy uzyskalismy 2 obiekty mogace wchodzic w interakcje typu kolizja itd