На данном этапе эволюции в платформе Mo'Minis нет встроенной поддержки массивов. Но это можно сделать самому, так даже интересней
Создадим спрайт arr8 и добавим ему следующие Numeric properties:
a0,a1,a2,a3,a4,a5,a6,a7 //хранители информации N=8 //длина массива
Теперь надо предоставить доступ к этим переменным (a0..a7). Создадим следующие Custom Event-ы: Set(x,k) // arr[k] = x Get(k) // A0 = arr[k]
Тут натыкаемся на еще одну засаду, функции (custom events) пока еще не умеют возвращать значения. Но это можно обойти следующим образом: Создадим глобальную переменную A0, и условимся что все функции будут помещать туда свой результат. Имя A0 взято по аналогии с акумулятором в ассемблере. Важно помнить что информация в A0 валидна лишь сразу после вызова функции (Custom Event), то есть ее можно использовать лишь в следующей строке комманд (actions), иначе есть большой шанс, что другая функция уже успела поместить туда свой результат.
Подобным образом можно создать массив любой разумной длины. В примере показано как используя массив arr8, создать массивы arr16, arr32 и arr64. Кроме простого хранителя информации, массив может служить как стэк (stack - LIFO) и очередь (queue - FIFO). (см. пример)
Имея в своем распоряжении стэк мы можем использовать рекурсию (см. пример ряда Фибоначчи)
Часто массивы приходится сортировать. Один из самых быстрых алгоритмов сортировки это QuickSort - О(nlog(n)).
Смотри имплементацию в примере. http://www.mominis.com/forum/index.php?action=dlattach;topic=481.0;attach=121
Урок предоставлен администраций Mominis.com
|