Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160

Принцип создания инвентаря

04.03.2014, 02:58. Показов 2434. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу создать инвентарь для игры, уроков нигде к сожалению найти не смог, поэтому пришлось самому разбираться. Как я понял, проще всего организовать систему через массив, например
ActionScript 3
1
var inventory:Array = [0,0,0,0,0,0,0];
Если нули - значит слоты пустые.
Создал мувиклип со пустым слотом. Таковых будет 7 штук, т.к в масиве 7 элементов. Собственно вопрос. Как исходя из массива создать эти самые пустые слоты? Скорее всего через цикл, но вот не совсем понимаю как это совершить. И как вообще такие вещи можно решить более по простому? Дабы можно было заносить в пустую ячейку предмет и также его выносить за пределы. Конечно можно при помощи addChild проскриптить, но думаю это слишком муторно, особенно если слотов не 7, а 50.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.03.2014, 02:58
Ответы с готовыми решениями:

Удаление элементов из инвентаря игры
Доброго времени суток. Сейчас делаю что-то наподобие инвентаря в игре. Из игрового магазина выбираю предметы, после чего проверяю их...

Создание инвентаря в связке as3+php+mysql
В приложении использую связку as3+php+mysql. По идее клиент должен грузить список предметов (точнее id предметов), которые есть у...

Система или функция присвоения координат при создании слотов для инвентаря?
Здравствуйте. Делаю небольшую игру в подарок близкому человеку. Сейчас парюсь над системой инвентаря, и вот возникла проблема. ...

9
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
04.03.2014, 15:18
Вам нужно 7 пустых контейнеров?
если да, то вот каким образом можно сделать:
ActionScript 3
1
2
3
4
5
6
7
foreach(var item:int in inventory)
{
   if(item==0)
      // добавляй пустой контейнер
   else 
      // добавляй контейнер с нужным предметом
}
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
05.03.2014, 18:21  [ТС]
Не совсем то. Ладно. Проще будет задать вопрос, как сделать проверку на массив? То бишь, вот создаем предмет, в приложении нам дают этот предмет, его id записывается в массив на месте нуля.

ActionScript 3
1
var inventory:Array = [0,0,0,0,0,0,0];
Как сделать так, чтобы предмет можно было добавить только в пустое окно(то бишь изменить элемент массива, только в том случае, если он равен 0). Если все элементы массива больше 0, то предмет не добавляется. Если есть к примеру 1,0,0. При добавлении нового предмета, дабы он поверх 1 не добавил, а добавил только там, где 0))
0
24 / 24 / 9
Регистрация: 18.12.2012
Сообщений: 194
05.03.2014, 18:45
Как сделать это, я описал выше
0
 Аватар для Theoryofgames
254 / 238 / 50
Регистрация: 20.12.2011
Сообщений: 707
05.03.2014, 18:47
Вообще, если делать правильно, то каждому предмету должен соответствовать некий id (идентификационный номер)
Сапоги великана - 0;
Шапка Мономаха - 1;
Лук Иван-Царевича - 2;
А инвентарь в себе будет иметь запись примерно следующего вида:
ActionScript 3
1
var inv:Array = [ { id:0, v:1 }, { id:2, v:5 } ];
Что будет означать, что мы имеем 1 сапоги великана и 5 луков, а вот шапками мы обделены, так как в массиве нет объекта с таким id. Представьте, что у Вас в игре есть 1000 уникальных вещей, в Вашем случае придется держать масив из 1000 элементов в любом случае, даже если их всего 2 у игрока.
2
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
06.03.2014, 00:28  [ТС]
Хм. Спасибо) Это уже интереснее) Буду разбираться)
0
229 / 26 / 9
Регистрация: 22.01.2013
Сообщений: 90
06.03.2014, 19:49
вот самый простой пример добавления чего то в инвентарь

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import flash.events.MouseEvent;
 
var arr:Array=new Array();
function pushArr():void{
    //заполняем массив пустыми значениями(0) id - номер предмета, val - количество
    for(var i:int=0;i<5;i++){
        arr.push({id:0,val:0});
    }
}
 
 
function cMouse(e:MouseEvent):void{
    
    var ran:int=1+int(Math.random()*5)//рандомное число, типа id предмета 
    for(var i:int=0;i<arr.length;i++){
        //проверяем есть ли у нас в инвентаре предмет с тем же id
        if(arr[i]["id"]==ran){
            //если есть то добавляем к val 1(количество предметов) и выходим из цикла
            arr[i]["val"]++;
            break;
        }
        //если нет такого предмета, то проверяем есть ли у нас свободное место в инвентаре
        else if(arr[i]["id"]==0){
            
            //добавляем в свободный слот инвентаря id предмета и увеличиваем их количество val, выходим из цикла 
            arr[i]["id"]=ran;
            arr[i]["val"]++;
            break;
            
        }
        
    }
    for(var j:int=0;j<arr.length;j++){
        trace(arr[j]["id"],arr[j]["val"]);  
    }
    trace("-------");
 
}
 
 
pushArr();
stage.addEventListener(MouseEvent.CLICK,cMouse);
1
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
11.03.2014, 02:57  [ТС]
aaatorisss,

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function cMouse(e:MouseEvent):void{
    
    var ran:int=1;
    for(var i:int=0;i<arr.length;i++){
        //проверяем есть ли у нас в инвентаре предмет с тем же id
        if(arr[i]["id"]==ran){
            //если есть то добавляем к val 1(количество предметов) и выходим из цикла
            arr[i]["val"]++;
            mete.text = arr[i]["val"];
            break;
        }
        //если нет такого предмета, то проверяем есть ли у нас свободное место в инвентаре
        else if(arr[i]["id"]==0){
            
            //добавляем в свободный слот инвентаря id предмета и увеличиваем их количество val, выходим из цикла 
            arr[i]["id"]=ran;
            arr[i]["val"]++;
            mete.text = arr[i]["val"];
            break;
            
        }
        
    }
А если
ActionScript 3
1
ran:int=1;
должен равняться 1 и например 3? Как тогда проверять? Дабы не создавать новые переменные, можно как-то передать переменной ran несколько значений? Дабы не фигачить вот так

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function cMouse(e:MouseEvent):void{
    
    var ran:int=1;
    for(var i:int=0;i<arr.length;i++){
        //проверяем есть ли у нас в инвентаре предмет с тем же id
        if(arr[i]["id"]==ran){
            //если есть то добавляем к val 1(количество предметов) и выходим из цикла
            arr[i]["val"]++;
            mete.text = arr[i]["val"];
            break;
        }
        //если нет такого предмета, то проверяем есть ли у нас свободное место в инвентаре
        else if(arr[i]["id"]==0){
            
            //добавляем в свободный слот инвентаря id предмета и увеличиваем их количество val, выходим из цикла 
            arr[i]["id"]=ran;
            arr[i]["val"]++;
            mete.text = arr[i]["val"];
            break;
            
        }
        
    }
     var ran2:int=2;
    for(var j:int=0;j<arr.length;j++){
        //проверяем есть ли у нас в инвентаре предмет с тем же id
        if(arr[j]["id"]==ran2){
            //если есть то добавляем к val 1(количество предметов) и выходим из цикла
            arr[j]["val"]++;
            metes.text = arr[j]["val"];
            break;
        }
        //если нет такого предмета, то проверяем есть ли у нас свободное место в инвентаре
        else if(arr[j]["id"]==0){
            
            //добавляем в свободный слот инвентаря id предмета и увеличиваем их количество val, выходим из цикла 
            arr[j]["id"]=ran2;
            arr[j]["val"]++;
            metes.text = arr[j]["val"];
            break;
            
        }
        
    }
0
229 / 26 / 9
Регистрация: 22.01.2013
Сообщений: 90
11.03.2014, 15:14
MrDead, я что то не понял, что именно нужно? Нужно чтобы была проверка какой предмет нужно поместить в инвентарь? например "яблоко" mc1, "вино" mc2, "шлем" mc3...? тогда просто проверяем на какой предмет кликнули.

ActionScript 3
1
2
3
4
5
6
7
8
9
if(e.currentTarget==mc1){
        ran=1;
    }
    if(e.currentTarget==mc2){
        ran=2;
    }
    if(e.currentTarget==mc3){
        ran=3;
    }
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
11.03.2014, 17:56  [ТС]
Ммм, вообще пытаюсь удалять из инвентаря предметы. Вроде получается, но только с одним предметом, как другие удалять если они не только в одной ячейке, что-то не получается. Точнее, как бы переместить из другой ячейки, id и val в первую, если она пустая)
Вложения
Тип файла: rar Inven.rar (27.5 Кб, 33 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2014, 17:56
Помогаю со студенческими работами здесь

Принцип создания Мега Проектов?
Интересует принцип создания (построения) таких проектов, как: Amazon, Instagram, VK, FaceBook, SnapChat, Google, Apple и т.п. сайты...

Принцип создания браузерной игры
С чего начинаются писаться браузерные игры? С регистрации игрока?

Какой принцип создания русификаторов?
Пишу программу, хочу что бы была возможность использовать рус или англ языки. Как такое можно осуществить?

Принцип создания командной строки
Собственно решил добавить к программе модуль с командной строкой. Тут же возник вопрос - Как лучше ее организовать? Как мне кажется, где-то...

Объясните принцип создания многопоточности
Здраствуйте, объясните пожалйста как сделать программу многопоточной, у меня есть одна программа, в которой большая нагрузка идет на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru