Skojarzenie wartości RGB z wartością enum

Odpowiedz Nowy wątek
2011-07-30 13:33
Smigiel
0

Chcę napisać prostą grę, w której edytorem mapy będzie zwykły edytor graficzny.
Typ pola na mapie będzie reprezentowany danym kolorem na mapie, np. 0xff0000 oznacza kamień, a 0x00ff00 drzewo itd.
Muszę w tym celu jakoś skojarzyć wartość koloru z typem obiektu.
O ile dobrze pamiętam w C++ można było zrobić to tak:

enum Przedmiot{
KAMIEN=0xff0000, DRZEWO=0x00ff00
}

a następnie

Przedmiot przedmiot=Przedmiot(0xff0000);

i w ten sposób kolory można ładnie skojarzyć z typami w grze.
Jak mogę zrobić coś podobnego w Javie?

Z góry dzięki za pomoc!

Pozostało 580 znaków

2011-07-30 13:53
0

chyba chodzi Ci o coś takiego:

http://www.java2s.com/Code/Ja[...]sics/Useanenumconstructor.htm


Per Aspera Ad Astra

Pozostało 580 znaków

2011-07-30 14:10
Smigiel
0

Niestety to nie to.
W tym przykładzie przypisują cenę do jabłka i mając jabłko mogą odczytać jego cenę.
W moim przypadku musi to działać odwrotnie - na podstawie przypisanej wartości (koloru) muszę rozpoznać typ obiektu.

Pozostało 580 znaków

2011-07-30 15:34
0

a musi to być Typ wyliczeniowy akurat?
Może lepiej jakbyś zastosował interfejs Map...

Pozostało 580 znaków

2011-07-30 16:00
Smigiel
0

Np. HashMap?
Rzeczywiście, to chyba rozwiązuje problem, dzięki :]

Pozostało 580 znaków

2011-07-30 16:42
0

Zawsze można dodać metodę statyczną do enuma (enumy to i tak statyczne pola, więc nic to nie popsuje).

enum Przedmiot {
 
    Drzewo(0xff000000);
 
    Przedmiot(int wartość) {
        this.wartość = wartość;
    }
 
    public int getWartość() {
        return wartość;
    }
 
    public static Przedmiot dlaWartości(int wartość) {
        for (Przedmiot przedmiot : values()) {
            if (przedmiot.wartość == wartość) {
                return przedmiot;
            }
        }
        throw new RuntimeException("critical error: dupa overflow!");
    }
    private int wartość;
}

"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit, 2011-07-30 16:43

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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