Страницы

пятница, 11 сентября 2009 г.

Каталогизация объектов

При созданий множества объектов(в Game Maker они называются образцы) встаёт вопрос об их обращений друг к другу. В Game Maker этот вопрос частично решён(через номера. От 100 000 и далее), в каких-то системах этого нет. Так как же решить этот вопрос? Через каталогизацию объектов.


Вы создаёте список с которым будете работать. Эти списки будут служить как каталоги. Общий(корневой) список - для всех объектов, обычный список(он же вложенный) - для части объектов. Вот в Game Maker есть один корневой список, в нём расположены объекты(образцы) по возрастающей с номерами от 100 000 и далее. Так же есть по списку на каждый тип объекта(один на спрайты, на объекты, на частицы, даже, на списки, и т.д.). Расположены они также по возрастающей, но на этот раз, начиная от 0.

a = ds_list_create(); //в a хранится 0.

Сначала пройдёмся по вопросу: "А почему их хранят в каких-то списках?". Да чтобы не потерять. В реальном языке при созданий объекта вы должны его куда-то поместить. Если это один объект, то в переменную, а если несколько, то в список. Если вы не поместите объект при созданий, то потеряете объект и память под этот объект, до конца программы (это называется утечка памяти). И хотя Game Maker уже предоставляет вам эти инструменты, их может оказаться не достаточно для вас. Например, как выделить из всех объектов-образцов нужную группу нам? Некоторые из вам предложат пройти весь список из всех объектов-образцов и проверить их хотя бы по одному из условий(принадлежность к определённому объекту или содержащие определённую переменную, например). Можно! Можно сделать и так. Но сколько времени уйдёт на это? Проверка всего списка(а сколько у нас объектов-образцов? 1000!? О господи!), проверка на условие и т.д. А если это ещё делать каждый шаг программы... Ммм...
Со списком же все эти задачи отпадают. Просто внести в список эти объекты-образцы и пройти их. Без всяких проверок. Но у вас появляется плюс. Возможность контроллировать этот список(список Game Maker вы не можете трогать). Зачем? Это уже вопрос другой. Появляется гибкость. Нужна ли она вам? Решение оставляю на ваши плечи.
Вы можете создавать разные списки, с разным содержанием. Например, список танков или самолётов, контроллеров, юнитов, монстров, объектов ландшафта, выделенных объектов, вражеских юнитов и др. Список юнитов является вложенным в отношений ко всем объектам-образцам, а список вражеских юнитов для определённого объекта-образца является вложенным списком в отношений списка всех юнитов. Вы всегда можете с лёгкостью найти нужную вам группу. т.е. теперь вы работаете не со всем списком, а только той частью, которая вам нужна. Отсекаете лишнее. Отсекаете?

Комментариев нет:

Отправить комментарий