Как мне упростить добавление 24 различных целых чисел? - PullRequest
1 голос
/ 27 января 2012

Я создаю игру для iPhone и хочу добавить 24 целых числа вместе. Эти 24 целых числа содержат общее количество бомб, зажженных на каждом из 24 уровней. Вот супер грязный код, который я сейчас использую:

totalBombs = level1bombs + level2bombs + level3bombs + level4bombs + level5bombs + level6bombs + level7bombs + level8bombs + level9bombs + level10bombs + level11bombs + level12bombs + level13bombs + level14bombs + level15bombs + level16bombs + level17bombs + level18bombs + level19bombs + level20bombs + level21bombs + level22bombs + level23bombs + level24bombs;

Как я могу упростить этот код? Да, я понимаю, что это очень плохая реализация. Пожалуйста, будьте осторожны с вашими ответами.

Ответы [ 3 ]

3 голосов
/ 27 января 2012

Создайте массив LevelBombs, затем сделайте цикл над массивом, добавив их.Как правило, в любое время у вас есть переменные с именами, такими как

varname1

varname2

varname3

Это означает, что вам нужен массив.

2 голосов
/ 27 января 2012

Как говорят другие, используйте массив, но массив NS[Mutable]Array, вероятно, излишний для коллекции из 24 целых чисел - рассмотрите возможность использования массива C. Э.Г.

unsigned LevelBombs[24];

(при условии, что количество бомб никогда не бывает отрицательным!). Вы можете инициализировать такой глобальный объект, используя литерал:

unsigned LevelBombs[24] = { 27, 42, ..., 36 };

и вы можете опустить 24, если вы сделаете это - C может считать. Если вы опустите размер, вы получите счет с помощью:

unsigned count = sizeof(LevelBombs)/sizeof(unsigned);

Отдельные элементы LevelBombs[index], и простой цикл даст вам общее количество.

Оберните весь массив в (одноэлементный) класс, если хотите, с соответствующими методами для изменения элементов, получения итогового значения и т. Д. Но завершение каждого элемента в NSNumber и всего лота в NSMutableArray, вероятно, вам не нужна только работа по выделению памяти.

1 голос
/ 27 января 2012

Я думаю, вы бы выиграли от использования массива для хранения ваших бомб.

Вы можете инициализировать массив несколькими различными способами в зависимости от того, что лучше всего подходит для вашего. Один из способов был бы таким: установить каждый уровень на 5.

int numLevels = 25;

NSMutableArray *bombs = [[NSMutableArray alloc] initWithObjects: nil];

for (int i = 0; i < numLevels; i++) {

    [bombs addObject:[NSNumber numberWithInt:5]];
}

Или - если вы хотите инициализировать массив различными значениями для каждого уровня, вы должны сделать что-то вроде этого:

NSMutableArray *bombs = [[NSMutableArray alloc] initWithObjects: [NSNumber numberWithInt:5], [NSNumber numberWithInt:8], [NSNumber numberWithInt:10], [NSNumber numberWithInt:25], [NSNumber numberWithInt:55], [NSNumber numberWithInt:100], [NSNumber numberWithInt:200], nil];

И так далее добавление нового NSNumber для каждого уровня.

Затем, чтобы получить доступ, скажем, к уровню 1, вы должны сделать это:

NSNumber levelNumBombs = [bombs objectAtIndex:0];

или уровень 5 как:

NSNumber levelNumBombs = [bombs objectAtIndex:4];

Чтобы изменить бомбы 5-го уровня на 66, вы должны сделать что-то вроде этого:

[bombs replaceObjectAtIndex:4 withObject:[NSNumber numberWithInt:66];

Затем, чтобы сложить все, вы должны сделать что-то вроде этого:

 int totalBombs = 0;

 for (int i = 0; i < [bombs count]; i++) {

     totalBombs += [[bombs objectAtIndex:i] intValue];
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...