Rysowanie po JPanel własnych obiektów?

0

Witam, przymierzam się właśnie do zrobienia prostej gry. generalnie stworzyłem klasę Universe która dziedziczy po JPanel, przechowuje także obiekty planet i statków. I tu pojawia się moje pytanie, czy da się zrobić tak, żeby każdy statek i planeta sam odpowiadał za wyświetlanie siebie na Universe(po czym musiałby dziedziczyć?).
Drugą opcją jest rysowanie przez Universe(Z tej korzystam obecnie), ale nie mam pomysłu jak wyświetlac grafiki planet i statków. i co zrobić kiedy obracam rakiete? trzebaby transformować jej obrazek i dopiero wyswietlic?

0

Trochę inaczej.
Każdy obiekt przechowuje tylko swój stan. Obiekt rysujący ma listę obiektów i na podstawie ich stanów aktualizuje stan obiektu wyświetlającego.

0

Czyli taki powiedzmy statek, przechowuje w sobie swoją grafikę, i w momencie kiedy obracamy statek (grafika 2d) obracamy tez obrazek i bedzie banglac??

0

Nie grafikę, a parametry które pozwolą na jego narysowanie.
Przykład:
Masz wahadło matematyczne. Ma ono dwa parametry długość i wychylenie. Co pewien czas obliczane jest jego aktualne położenie. Następnie Powiadamiany jest wątek rysujący, który pobiera informacje o stanie wahadła i następnie je rysuje.

W ten sposób to obiekt odpowiedzialny za rysowanie ma informację ja będzie finalnie wyglądać wahadło na ekranie (kolory, wielkość itp), a wahadło wie tylko jak "chce wyglądać".

0

Darnok99, jeżeli statek może poruszać się w kilku kierunkach, to przygotuj jego obrazki w tych kierunkach (tzw. sprite'y). Wczytaj je w konstruktorze statku i w nim przechowuj, zapamiętuj pozycję statku oraz kierunek i w wątku rysującym (przechowującym listę referencji obiektów do narysowania), tak jak pisze Koziołek, pobierając od niego informacje, rysuj go używając odpowiedniego sprite'a. Będzie to znacznie szybsze rozwiązanie niż rysowanie obrazka obróconego wcześniej o 90 stopni przez program. Chyba, że statek może obrócić się o dowolny kąt, wtedy chyba lepiej zrobić tak jak mówisz.

Sorry za chaotyczny post :P

0

No wlasnie obraca sie co 5 stopni wiec lepiej bedzie to chyba obracac programowo, dziekuje Wam obu za pomoc:)

0

A dasz linka jak skończysz? Chętnie zagram...

0

hehe, szybko raczej nie skoncze, ale mozesz być pewny ze sie pochwale:)

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