Skocz do zawartości
PiotrekK

"Tworzenie zmiennych" i zapis obrazka w tablicy

    Rekomendowane odpowiedzi

    Cześć,

    mam dosyć skomplikowany problem otóż:

    Robię platformówkę. Jak wiadomo w każdej tego typu grze są platformy po których ludzik chodzi :zakrecony:

    I w tym problem... Tych platform jest zatrzęsienie i kody wczytujący to całe dziadostwo zajmuje sporo miejsca.

    Przydałoby się trochę to posprzątać... Mam 2 pomysły jak to zrobić, ale potrzebuję pomocy w ich wykonaniu ;)

    1. Sposób pierwszy miałby polegać na wrzuceniu tego wszystkiego do pętli for:

    for(int i = 0; i < 10; i++){
    Pliczba = BitmapFactory.decodeResource(getResources(), R.drawable.plat);
    }

    tylko problemem jest utworzenie zmiennej. O co mi chodzi:

    chcę zrobić nową zmienną ze zmiennej w pętli for:

    P: P1, P2, P3 itp. w zależności od ilości powtórzeń w pętli.

    Słowem: Chcę utworzyć zmienne w czasie wykonywania aplikacji/gry.

    2. Dosyć śmieszny pomysł:

    można by zapisać obrazki w tablicy (o ile to możliwe).

    -----------------------

    Z góry dzięki.

    PS: Wiem, te pomysły są skomplikowane. Jeżeli znacie prostsze to chętnie wysłucham.

    PSS: Za każdym razem (czyli w zmiennych P1, P2 itd.) będę zapisywał ten sam obrazek (ew. potem zmienię jego rozmiar).

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    nierozumień w czym problem, tworzysz zwyczajną tablice

    Bitmap[] Pliczba = new Bitmap[10];
    for(int i = 0; i < 10; i++){
    Pliczba[i] = BitmapFactory.decodeResource(getResources(), R.drawable.plat);
    }
    

    lub jeżeli nie wiesz ile jest elementów tworzysz

    ArrayList<Bitmap[]> Pliczba = new ArrayList<Bitmap[]>();
    for(int i = 0; i < 10; i++){
    Pliczba.add(BitmapFactory.decodeResource(getResources(), R.drawable.plat));
    }
    

    HashMap<Integer, Bitmap[]> Pliczba = new HashMap<Integer, Bitmap[]>();
    for(int i = 0; i < 10; i++){
    Pliczba.put(i, BitmapFactory.decodeResource(getResources(), R.drawable.plat));
    }
    

    jeżeli chcesz stworzyć nową zmienną za każdym wykonaniem pętli to hmmm tak czy inaczej będziesz musiał ręcznie zdefiniować każdą zmienną z osobna

    lepiej jak skorzystasz z tablic

    class klasaZmiennych {
    public static byte P1, P2;
    }
    
    Class klasaZmiennych = Class.forName("klasaZmiennych");
    for(int i = 0; i < 10; i++) {
    Field P = klasaZmiennych.getField("P" + i);
    P.setByte(this, i);
    }
    

    przykład jak to nie robić bo i tak nie zadziała ;)

    Edytowane przez zawadaki

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Błagam - formatujcie kod jak ś.p. Sun przykazał - z dużej litery pisze się WYŁĄCZNIE nazwy klas.

    Uzupełniając to co odpowiedział zawadaki, możliwe jest tworzenie tablic dynamicznych:

    int size = getPlanowanyRozmiarTablicy();
    int[] resourceId = new  int[size];
    

    Czyli używanie ArrayList nie jest konieczne, jeżeli nie ma innych wskazań do użycia niż dynamiczny rozmiar.

    Tworzenie zmiennych dynamicznie, to bzdura.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Ale można dynamicznie tworzyć obiekty które będą miały dane zmienne ;] przykładowa klasa Sprite która będzie przechowywać położenie obrazka - (x,y) górnego lewego wierzchołka i bitmapę. Ostatecznie i tak musimy wrzucić nasze klasy do jakiegoś ArrayList czy tabeli, ale z tego co napisał PiotrekK to chyba to rozwiązanie będzie stosunkowo blisko tego co chciał uzyskać :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Ale można dynamicznie tworzyć obiekty które będą miały dane zmienne

    co to zmieni ?

    klasa Bitmap przechowuje dane mapy bitowej oraz metody do manipulacji, co zmieni tworzenie nowej klasy zawierającej klasę Bitmap, kiedy i tak wszystko wyląduje w jakiejś tablic ?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Nic :) Ale w zasadzie dopiero teraz mnie natchnęło, że autorowi może chodzić o preloading grafik, wtedy faktycznie wystarczy tablica/ArrayList :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x