Аррива, ребята! В статье инвентарь на css+javascript я рассказывал как можно реализовать инвентарь, я не думал, что вы так быстро наберете так много лайков! Пришлось делать как и обещал крафт по типу как в игре minecraft. Долго думал как это все должно работать, изначально пытался сделать крафт отталкиваясь от одномерного массива inventory = [0,0,0,0,0,0,1,1,1]. Но тогда мне придется учитывать положение элементов в разных ячейках инвентаря, то есть в матрице 3х3 при различных положениях предметов, получается один и тот же рецепт.
Поэтому я решил сделать зависимость положений одного предмета от других. То есть перебирая предметы в инвентаре, начиная с первого, записывать в строку его id и положение других предметов ячейках относительно его. Затем полученную строку хешируем, и уже по полученному ключу добавляю предмет, если такой имеется.
Использую данный алгоритм, расположив предметы в данном порядке - должны получить меч.
Конечно, для вариаций с диагональю, приходится прописывать два ключа для поиска предметов, но с другими вариациями справляется эта методика. Можете попробовать тут, расположив в ряд три дерева как на рисунке ниже.
Надеюсь данный пост будет полезен для вас, напомню исходный код можно найти здесь. Если остались вопрос, всегда готов ответить! Спасибо за внимание, до скорых встреч!