2013-02-28 3 views
0

Я пытаюсь закодировать пользовательский объект, где я хочу, чтобы несколько букв ассоциировались или помечены им.Создание функции-конструктора с несколькими состояниями перечисления для карточной игры?

Я пытаюсь закодировать аналогичную установку, где объект может иметь несколько букв (или booelan flags), назначенных ему.

Например, Company может иметь буквы «A, B, C, F» (из букв от A до F).

Я хотел бы создать карту Company и назначить ей определенные буквы в методе конструктора.

Сначала я думал, что буду использовать массив, но я хотел бы сохранить буквы отдельно, поскольку буквы на самом деле являются просто большой матрицей «логических» флагов.

IE: 
Letters   A B C D E F 
"Brand X"  Y Y N N Y N 

Мой код следующим образом;

typedef enum _Letters { 
    LetterA, 
    LetterB, 
    LetterC, 
    LetterD, 
    LetterE, 
    LetterF, 
} Letters; 

@interface Corporation : NSObject 
{ 
    NSString *_name; // Name of the card ie: "Automative" 
    NSArray *_letters; // A->F 
    int _value; // Value of the card in $ 
    VENCardState _state; // Current state of the card (is it in play or discard pile, etc) 
} 

То, что я хотел бы, но я уверен в том, как сделать letters содержать все буквы, которые я хочу в функции инициализации конструктора.

ie;

initWithLetters:A,B,C....

Но я не уверен в том, как это сделать.

В основном я хочу простой способ сделать конструктор, который будет иметь несколько состояний перечислений, а затем метод добавит эти перечисления состояния в массив letters

я должен быть в состоянии войти в объект и узнать, что буквы это связано с.

+0

Какой объект будет '_letters' содержать полный VENLetters или один A? –

+0

_letters предназначен для хранения нескольких букв. Это может быть «A», но это могут быть «A», «B», «C», «D». Это может быть либо одна буква, либо несколько букв. – zardon

ответ

1

Попробуйте следующее: - (id) initWithLetters: (VENLetters) letter, ...; или: - (id) initWithLettersArray: (NSArray *) letterArray;

+0

Со вторым, initWithLettersArray выглядит очень хорошо. Я попробую это. – zardon

+0

Я получаю ошибку утверждения, если я попытаюсь сделать это: 'Корпорация * steel = [[Корпорация alloc] initWithName: @« Сталь »withValue: 8 withLetters: steelLetters]; [стальной бревно]; [steel release]; ' – zardon

+0

Мой конструктор выглядит так:' - (id) initWithName: (NSString *) name withValue: (int) value withLetters: (NSArray *) lettersArray { {0 = 0; if (self) { _name = name; _value = значение; _letters = [буквыArray copy]; } return self; } ' – zardon

Смежные вопросы