Pracuję nad podstawową grą na iPhone'a, która wymaga tilemapu z jednym ekranem. Nic trudnego. Pochodzę z C tle, więc moje obecne rozwiązanie wygląda trochę tak:2-wymiarowe tablice w Objective-C?
typedef struct _Tile {
NSString *type;
} Tile;
@interface Map {
Tile mapData[MAP_TILE_MAX_X][MAP_TILE_MAX_Y];
}
Działa to dobrze, ale zastanawiam się, czy jest nieco bardziej „poprawny” sposób obsłużyć rzeczy poprzez Objective-C. Oto, jak widzę sytuację, gdybym zastosował podejście Objective-C: utworzyłbym podstawową klasę Tile do przechowywania podstawowych właściwości płytek, które mogłem następnie podklasować dla konkretnych typów płytek (na przykład @interface Water : Tile {}
). To pozwoliłoby mi również uzyskać logikę specyficzną dla Tile. Na przykład: klasa Tile może mieć metodę "myślenia", która wykonywałaby jakąkolwiek niezbędną logikę. W mojej podklasie Water może to oznaczać tworzenie efektu marszczenia, jeśli gracz był zanurzony.
Moje pytania wtedy:
- Czy dopuszczalne jest użycie struktur C w tej sytuacji? Jeśli nie, czy jestem na dobrej drodze w odniesieniu do mojego podejścia Obj-C?
- Gdybym miał utworzyć podstawową klasę Tile i użyć podklas dla konkretnych typów Tile, w jaki sposób dynamicznie tworzyłem podklasę każdej podklasy Tile (biorąc pod uwagę, że mam NSString zawierający typ "water", musiałbym utworzyć instancję klasy Water).
Jestem świadomy teksty stałe. Ale czy możesz uzasadnić użycie struktury zamiast klasy? Nie jestem szczególnie zainteresowany tym, aby mój kod był "niesamowity", chciałbym go uczynić właściwym. – ndg