Estoy trabajando en un juego básico de iPhone que requiere un mapa de mosaico de una sola pantalla. Nada difícil allí. Vengo de un fondo C, por lo que mi solución actual se ve un poco como esto:matrices bidimensionales en Objective-C?
typedef struct _Tile {
NSString *type;
} Tile;
@interface Map {
Tile mapData[MAP_TILE_MAX_X][MAP_TILE_MAX_Y];
}
Esto funciona bien, pero me pregunto si hay una manera un poco más 'correcta' para manejar las cosas a través de Objective-C. Así es como veo la situación si adoptara un enfoque de Objective-C: crearía una clase de mosaico base para mantener las propiedades de teselas básicas, que luego podría subclase para tipos de mosaicos específicos (@interface Water : Tile {}
, por ejemplo). Esto me permitiría tener también una lógica específica para Tile. Por ejemplo: la clase Tile podría tener un método 'pensar' que ejecutaría cualquier lógica necesaria. En mi subclase Agua, esto puede implicar la creación de un efecto dominó si el jugador se sumergió.
Mis preguntas a continuación:
- ¿Es aceptable el uso de estructuras C en esta situación? Si no, ¿estoy en el camino correcto con respecto a mi enfoque Obj-C?
- Si tuviera que crear una clase base Tile y usar subclases para tipos de mosaico específicos, ¿cómo crearía una instancia dinámica de cada subclase de mosaico (dado que tengo un NSString que contiene el tipo 'agua', necesitaría crear una instancia de la clase Water)
Soy consciente de las enumeraciones. Pero, ¿puedes justificar el uso de una estructura aquí en lugar de una clase? No estoy particularmente interesado en hacer que mi código sea "increíble", solo me gustaría hacerlo correcto. – ndg