Я написал простую программу, чтобы понять, как работает target-c. Эта программа - и-цзин, древнее гадание, основанное на ответе из шести линий, рассчитанном после запуска трех монет шесть раз, а затем построения гексаграммы, которая является ответом.
Я застрял в этом, я уверен, что есть простое решение. Вот как я определил линии, я знаю, что это не лучший дизайн, но я стараюсь использовать как можно больше технологий.
Предположим, вы запускаете монету, она может быть 3 или 2 в зависимости от стороны, три монеты дают возможное значение 6,7,8,9.
/**
* identifying a coin
*/
typedef enum {
head=3,
tail=2
} Coin;
/**
identify a line, three coins with a side value of
2 and 3 can result in 6,7,8,9
*/
typedef enum {
yinMutable=tail+tail+tail, // 6 --> 7
yang=tail+tail+head, // 7
yin=head+head+tail, // 8
yangMutable=head+head+head // 9 --> 8
} Line;
/**
The structure of hexagram from bottom "start" to top "end"
*/
typedef struct {
Line start;
Line officer;
Line transit;
Line minister;
Line lord;
Line end;
} Hexagram;
Первая проблема, с которой я сталкиваюсь в этом проекте, - это присвоить значение каждой строке в гексаграмме. Первый запуск должен заполнить значение в начале, второй в офицере .... и так далее.
Но может быть легко решен с помощью переключателя ... хотя мне это не нравится.
1) Первый вопрос: мне интересно, есть ли какая-нибудь функция, как в javascript или c #, как
foreach (свойство в гексаграмме), которое позволяет мне просматривать свойства в порядке их объявления, что решило бы мою проблему.
2) Второй вопрос: в качестве альтернативы я использовал массив Line:
Controller.m
....
Line response[6]
....
-(id) buildHexagram:... {
for(i =0.....,i++).....
response[i]=throwCoins;
// I omit alloc view and the rest of the code...then
[myview buildSubview:response];
}
----------------------
subView.m
-(id) buildSubView:(Line[]) reponse {
NSLog(@"response[0]=%o",[response objectAtIndex[0]]); <--- HERE I GOT THE ERROR
}
но потом, в этом решении я получил ошибку EXC_BAD_ACCESS
Поэтому, очевидно, я неправильно понимаю, как работает массив в target-c или c!
В надежде, что я достаточно ясно дал понять, может кто-нибудь указать на решение первого вопроса и что я делаю неправильно во втором варианте.
спасибо
Леонардо