Сегодня 10 мая, пятница ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Создание браузерных игр на HTML5
Создание браузерных игр на HTML5
Голосов: 1
Адрес блога: http://createhtml5games.blogspot.com/
Добавлен: 2012-04-21 06:28:27
 

Что такое "Структура данных" и зачем она?

2012-04-18 07:54:00 (читать в оригинале)


Структуры данных были созданы еще в GameMaker 6, а то и раньше, для замещения стандартных массивов (array). На компьютерах структуры явно выигрывает в скорости; в яваскриптах особой разницы нет - всё равно прорисовка берет больше ресурсов - , но всё-таки они удобнее и функциональнее.

Существует 6 видов структур данных:
  • ds_queue
  • ds_priority_queue
  • ds_stack
  • ds_list
  • ds_map
  • ds_grid
Тоже очередь, но уже у каждой ячейки данных есть и приоритет.
С нашим "магазином" это выглядит так: стоит человек десять в очереди, и тут в магазин заходит Владимир Владимирович. Ясен пень, мы его пропустим вперёд :) вот, теперь он купит сосиски быстрее всех. Но вдруг входит Жириновский :D Мы его тоже пропустим вперёд, но ему придется подождать своих сосисок, ведь впереди него Путин ;)

Только вот на магазине отрицательный приоритет не покажешь :)

Ds_stack
Ds_stack - это очередь наоборот. Здесь добавленная ячейка будет изъята первой.
Сам я этой структурой не пользуюсь, поэтому про применеие ничего не могу сказать.

Ds_list
Моя самая любимая структура! Лист или список - это одномерный массив данных, из которого можно в произвольном порядке извлекать данные или добавлять значения в произвольное место в структуре. Также есть автоматическая сортировка, перемешивание, определение количества ячеек с данными.

Применение списков очень широко. Без них нельзя было бы выбрать неограниченное количество юнитов в стратегиях (starcraft), стало бы затруднительно управлять большим количеством ресурсов.

Ds_grid
Говоря проще, ds_grid - это таблица. Без структур данных таблицу можно сделать и в виде двумерного массива, но эта структура несомненно удобнее, т.к.:
  • Можно одной строчкой кода заполнить нужный участок ячеек нужным значением, причем не только прямоугольной, но и круглой формы.
  • Можно получать минимальное или максимальное значение в указанном регионе или получать сумму значений.
  • Также при желании можно увеличить или уменьшить структуру, И
  • ли определить ее размер,
  • А еще скопировать участок значений,
  • И т.п.

Ds_grid может применяться для генерации карт или более производительной проверки столкновений для крупных уровней с большим количеством столкновений.
Также в сочетании с ds_map можно реализовать гибкий по возможностям инвентарь.

Ds_map
Ds_map по своей структуре больше напоминает *.ini файл. Это тоже список, но у каждой записи есть свой ярлычок с названием.
Так можно хранить настройки игры или параметры предметов в инвентаре. Ds_map может хранить и одно значение, и несколько десятков. У каждого ярлыка тоже может быть несколько значений.

Например:
Есть кинжал. У него:
  • Минимальная сила удара - 2
  • Максимальная сила удара - 5
И все.

А вот священный меч:
  • Минимальная сила удара - 20
  • Максимальная сила удара - 50
  • Здоровье - +50
  • Бонус - крит х5
  • Бонус % - 10
И еще 10 параметров.

Так же можно указывать заклинания (и даже случайным образом генерировать их во время игры).
А еще делать постепенную прокачку юнитов или зданий нелинейным способом.

В общем, много чего можно сделать :) Здесь я указал наиболее частые способы использования.
В играх же могут применяться все виды структур данных. Можно их вкладывать друг в друга, создавая более сложные конструкции.

Любую структуру данных можно сохранить в виде обычной строки, понятной только для гейм мейкера :) .

Тэги: game, maker:html5, код, сохранение

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»
Изменения рейтинга
Категория «Игры»
Взлеты Топ 5
+376
408
Parazit!
+375
407
ALEXRUS
+370
383
Remi_Etien_Le_Bo
+368
381
Memрhis
+365
382
_Kicker_
Падения Топ 5


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.