Tlo w grach komputerowych

0

Graliście na pewno w komórkowe Space Impact, prawda? Chciałbym zrobic takie samo przesuwające się z prawej na lewą (albo odwrotnie, to nie ma różnicy) tło. Tylko jak? Użycie bitmapy w image'u to zły pomysł, bo obrazek może być naprawdę duży i wtedy będzie się wszystko cięło. Najlepiej by było wczytywać obraz po kawałku, wtedy by było dobrze. A jak to się robi? Dobrze by było, żeby image miał kształt bitmapy - chciałbym np. narysować góry w bitmapie, potem je przenieść na formę i zrobić samolocik, który by mógł zahaczyc o grzbiet góry, a nie krawędź image'a. Rozumiecie, o co mi chodzi?

0

wczytujesz sobie dajmy na to 10 bitmapek ([1..10 typu tbitmap]) ktore utworza tlo, takie by mozna bylo je dowolnie ustawiac. szerokosc to np 50.
robisz tablice [0..5000] typu byte w ktorej zapisujesz swoja mapke (moze to byc nawet czytanie z pliku czy zwykly random, zalezy od Ciebie)
nastepnie rysujesz na canvasie odpowiednie bitmapki, np na poczatku masz pozycje 0 (tlo przesuwasz od 0, niewazne gdzie masz samolocik)
szerkosc okna to dajmy na to 640, czyli 50 zmiesci sie tutaj 13, ale potrzebne tez bedzie 1 na zapas, czyli rysujesz sobie 14 bitmapek zgodnie z ich oznaczeniami w tabeli.
for i:=poz_tlo to poz_tlo+14 do
begin
canvas.draw(poz_tlo+offset+i*50,0,mapa[i]);
end;
offset to taka pomocnicza ktora dodajesz o 1 czy 2 az do 50, potem zerujesz, w timerze jakims czy watku, zeby bylo prlynne przesuwanie. jak sie zzeruje to zwiekszasz o 1 wartosc _poz_tlo. to chyba wszystko.
(kodzik z glowy, takze jak sie walnalem to sorry, ale idee chyba zrozumiales :))

0

ja proponuje kilka kwadracików w jednej bitmapie potem tylko CopyRect. szybciej sie wykonuje :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1