Инвентарь на основе массива

1

Index

Fichiers attachés

Les fichiers suivants ont été attachés à ce tutoriel:

.capx

array-based-inventory.capx

Télécharger maintenant 83.25 KB

Statistiques

31,901 visites, 42,054 vues

Outils

Partager

Traductions

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 7 Jul, 2013. Last updated 25 Feb, 2019

Создание инвентаря в массиве

Теперь давайте создадим парочку предметов в нашем инвентаре.

Добавьте 21 монетку во вторую ячейку и 3 яблока в четвертую.

Как я уже говорил, ID предмета должно быть на 1 больше, чем его кадр анимации. Это нужно для того, чтобы в инвентаре не было предметов с ID = 0, так как 0 - это пустая ячейка.

Так же, если вы захотите добавить объект с количеством 1, то не поленитесь добавить эту единичку в массив, иначе этот предмет не будет складываться с другими, ведь, формально, его количество = 0.

Теперь наступает самая сложная часть туториала, но я обещаю, что дальше будет проще %)

Теперь нам нужно визуально отобразить наш инвентарь.

Для этого я использую придуманный мной алгоритм:

(картинка в оригинальном размере есть в прикрепленных файлах)

Но все не так сложно как кажется.

Преимущество этого алгоритма в том, что он автоматически делит ячейки на линии. То есть, если у вас всего 15 ячеек и вы хотите 5 в каждой линии, то он автоматически их разделит.

Пожалуй, самая "страшная" часть алгортима это эта формула:

Давайте подробнее ее разберем:

X = (((inventory.curx)-(sn(a-1)))ss)+tx

- inventory.curx - текущая ячейка в массиве, при использовании For Each Element цикла

- sn - количество ячеек в 1 линии

- a - переменная, необходимая для последующих вычислений. Она увеличивается на 1 каждый раз когда inventory.curx MOD (остаток от деления одного числа на другое) sn = 0

- ss - размер ячейки инвентаря (32 + отступ между ячейками (2)) = 34

- tx - мой алгоритм не идеален, так что приходится вычитать некоторые числа из координат, чтобы получить необходимое значение. tx and ty и есть эти "некоторые числа".

Формула, по которой вычисляется tx:

Мой алгоритм полностью открыт для критики. Я буду рад услышать ваши отзывы по улучшению его работы :S

Итак, сначала этот алгоритм создает ячейку инвентаря, и задает значения переменным, согласно массиву

/ Небольшая поправка. Не смотря на то, что массив начинается с 0, ID у созданных ячеек будут начинаться с 1. /

После, он проверяет наличие объекта по значению в массиве в inventory.curx.

Если значение > 0, значит объект существует и тогда он его создает.

Поэтому я говорил вам использовать ID объектов больше 0.

В конце, он проверяет количество этого объекта. Если количество > 0, то в переменную объекта записывается эта информация, и вместе с этим, он создает объект Text, который отображает переменную item.number.

  • 2 Comments

  • Order by
Want to leave a comment? Login or Register an account!
  • этот движок просто не годитсья для этого на простой инвентарь удеть времени больше ,чем на содание полноценых 5-10 игр

    • Ну тут ты не прав. Это автор загнул реализацию, но в целом можно и попроще.