ГлавнаяРегистрацияВход Суббота
18.11.2017
00:06
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Уроки по СС [13]
Статьи по СС [2]
Документация по СС [4]
Мини-чат
Наш опрос
Нужен ли данный Сайт?
Всего ответов: 404
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
 Обучение 
Главная » Статьи » Construct Classic » Уроки по СС

Урок "Инвентарь через Массив/Array"
Итак урок рассчитан на то, что вы уже знакомы с массивами,( во всяком случае это название вас не пугает)) Преступим для начала нам понадобится курсор, но не простой, необходимо чтобы он двигался по ячейкам нашего инвентаря для этого добавляем соответствующий спрайт, и переключаемся на Event editor добавляем следующее:
остановимся на функции round(), она еще не раз нам пригодится функция эта отсекает десятичный «хвост» числа например round(5,246) вернет значение 5 рассмотрим всю формулу Round(MouseX/50)*50 например имеем координату мыши 152 далее делим на 50 -> получаем 3,04 ф-цией round отсекаем ,04 -> остается 3 домножаем на 50 -> и имеем 150 т.е. число на которое делим\домножаем, определяет размер нашей «сетки» также добавим курсору две переменные «Item» и «perenos» они пригодится для переноса итемов из ячейки в ячейку также нам понадобятся сами предметы и нужны будут двух видов, те которые будут в «миру» которые будем подбирать, и те которые будут отображаться в инвентаре для начала создадим три простых предмета Yabloko, Grusha и Derevo всех их добавим в семью , например Friendly (в принципе можете выбрать любую понравившуюся или создать новую) также всем им добавим приветную переменную ID, она будет отвечать за тип предмета Yabloko – 1 , Grusha – 2 , Derevo - 3 Почти тоже самое делаем для второй группы объектов я их назвал Item1 , Item2 и item3 добавим их а семью Item и так же присвоим приватную переменную ID по тому же принципу Item1(Yabloko) – 1 , Item2(Grusha) – 2 , Item3(Derevo) – 3 Приготовления закончились , займемся основой, массивом для начала добавим, и настроим его размер скажем 3х3х1 (в примере взят трех мерный массив 3х3х2 не смущайтесь просто рассчитано на вторую часть урока с чуть более сложным инвентарем) Итак добавим действие при «подборе» предмета т.е. при нажатии на объект вне инвентаря он должен переместиться в инвентарь добавляем следующее: С первой строкой думаю все ясно, если кликнули по объекту из семьи Friendly то ... Далее начинается цикл перебора всех элементов массива и проверка на то , свободна ли данная ячейка или нет и если данная ячейка «свободна» , т.е. значение её равно 0 , тогда в эту ячейку записываем значение переменной ID нашего подобранного предмета далее идет вызов функции «inv» о ней чуть позже после удаляем наш подобранный объект останавливаем наш цикл вызовом Break current loop (находится она в System -> loop) Разберем функцию «inv» , (надеюсь пользоваться функциями вы умеете, т.к. это незаменимая вещь при часто повторяющихся однотипных действиях) Эта функция будет перерисовывать наш инвентарь Сначала удаляем все объекты инвентаря далее уже знакомый цикл перебора в котором идет проверка значения текущей ячейки и по значению её создается нужный объект прошу заметить что сетка у нас выбрана 50х50 , и как видите объект создается по координатам ячейки домноженным на 50! Идем далее Для переноса итемов в инвентаре добавим следуюшее при клике мыши проверяем значение ячейки под курсором (не забываем про сетку, делим координаты курсора на 50) если значение этой ячейки не равно 0, т.е. там что-то есть, и переменная «perenos», принадлежащая курсору равна 0 (т.е. мы ничего не переносим), тогда присваиваем переменной «Item» значение этой ячейки (данная переменная будет служить эдаким буфером переноса) а саму эту ячейку очищаем, присваивая ей 0 так же меняем переменную «perenos» на 1, (т.е. идет перетаскивание) и в конце вызываем ф-цию «inv» (перерисовываем инвентарь) Далее идет достаточно большой блок связанный с отпусканием мыши , разберем его по частям сначала проверяем свободна ли ячейка под курсором, и идет ли перемещение («perenos»=1?) если да, то в эту ячейку записываем значение переменной «Item» нашего курсора, которая как вы помните содержит номер перемещаемого предмета после обнуляем «Item» и «perenos», и снова перерисовываем инвентарь Также проверяем если итем перенесен на уже занятую ячейку тут идет уже знакомый цикл поиска первой свободно ячейки, и перемещения итема в нее. И под конец проверим, перенесен ли объект за инвентарь сравниваем текущую координату курсора и размер массива по этой координате (домноженным на 50!) и если итем был перенесен за пределы инвентаря, то смотрим что именно мы переносили (переменная «Item») и создаем на месте курсора соответствующий объект И еще один маленький но не маловажный штрих добавим сохранение\загрузку нашего инвентаря
Все предельно просто при старте загрузить массив из файла (название кстати можете выбрать любое, и даже точку при желании можно не ставить), и прорисовать его также и при закрытии приложения, сохраняем массив в файл AppPaht здесь указывает на то что файл находится в папке самого приложения Вот собственно и все, возможно чуть позже сделаю вторую небольшую часть, скорее дополнение к этой, в которой будут реализованы стеки, крафт как в майнкрафте и возможность расположить инвентарь на удобном для вас месте, т.к. этот завязан на верхний левый угол. Всем спасибо и урачи в проэктах!)
Категория: Уроки по СС | Добавил: AlttarBoy (12.12.2011)
Просмотров: 4929 | Теги: уроки, массив, Array, инвентарь | Рейтинг: 4.3/6
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вход на сайт
Поиск

thevic.ru © 2017Хостинг от uCoz