Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 5
Доброго времени суток. Долго искал решение по разным запросам, не нашел или неправильно формулирую. Как реализовать поиск в массиве по значениям?. Допустим есть функция Contains, она находит одно значение в массиве и возвращает true или false, так вот как реализовать подобное, но с набором значений.

Например есть персонаж, у него есть возможность комбинировать заклинания с помощью 3-ех кнопок, например 1 1 2 или 1 3 1 и т.д (подобно Инвокеру в доте, или игре Magicka). Эти значения просто заносятся в массив. Но что бы их скомбинировать нужно нажать допустим кнопку 4. Так вот как реализовать комбинацию по значениям?

Пробывал через несколько Contains и AND (например находим в массиве две единицы и одну двойку, если true то производим действие), но логика не работает ибо если есть хоть один элемент из условия он уже выполняет действие, а нужно строго комбинацию в любом порядке. Заранее благодарю за любую наводку, хотя бы в какую сторону копать.
Аватара пользователя
Пользователь
Сообщения: 589
Я думаю что тебе что то подобное нужно:

Изображение

Или не совсем понял тебя.
Аватара пользователя
Пользователь
Сообщения: 4069
DruNya эту задачу, можно решить десятком различных способов, все зависит от конкретных деталей, и твоего умения пользоваться инструментами, да и вообще навыками программиста.
Ты можешь использовать массивы, енуменаторы, строки, что угодно и как угодно.

Вот тебе маленький пример, как это может выглядеть.
https://picua.org/images/2020/04/10/2a2 ... 97bbf1.png


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

Также не обязательно все пихать в один свитч, как у меня на скрине, запутаешься, определи сначала длину строки(Len) и в зависимости от этого, запускай нужный свитч он стринг, в котором будут учтены все возможные комбинации.
Или определи сначала первый символ в строке(Left).
И да, это очень маленький пример, в реализации это будет выглядеть значительно обширнее.

Могу резюмировать так: умение работать со строками, позволит тебе создавать алгоритмы любой сложности, это умножит твои возможности.
Навыки работы с массивами и другими инструментами, никто не отменял.

Чем больше ты умеешь пользоваться различными инструментами, тем грациознее будет твой алгоритм, любая нода в блюпринте - является инструментом.

Пригодится - https://docs.unrealengine.com/en-US/Blu ... index.html
Аватара пользователя
Пользователь
Сообщения: 5
Благодарю вас за ответы и за помощь. Пришлось немного сделать костыльно, но по помощи Prytaleks, впринципе то что нужно. Если кому-то когда-то пригодится, то вот:
Изображение

Мы преобразуем массив в строку, потом просто через Switch проверяем, хотелось бы конечно непосредственно искать в самом массиве количество одинаковых элементов, но подойдет и так, спасибо)
Аватара пользователя
Пользователь
Сообщения: 4069
Лучше использовать запись конкретных клавиш(меньше памяти и удобнее), нет проблемы в том что посчитать сколько тех или иных элементов в массиве или в строке, но для этого тебе прийдется создать переменые типа интежер или байт для каждого элемента, иначе не посчитаешь.
Затем с помощью бранчей и этих переменных, плести логику.

Вот пример - https://picua.org/images/2020/04/12/fe7 ... 6cafd3.png
Вместо строки с тем же успехом можешь сразу использовать обычный массив.
Но заметь, строка в данном случае, не является массивом строк, это просто строка.
Аватара пользователя
Пользователь
Сообщения: 589
Если я правильно понял то автору нужна логика наподобие кодового замка. Судя по вашим обсуждениям.

Есть в интернете пример. Можно позаимствовать что то оттуда. И переделать под свои нужды.

Аватара пользователя
Пользователь
Сообщения: 4069
Agny если бы ты играл в Магику(гениальная игра), то сразу бы понял суть задачи))

Brutaleks это я))
https://www.youtube.com/watch?v=rF4ICV_RfQ8
https://www.youtube.com/watch?v=S9-kCrwuQAk
https://www.youtube.com/watch?v=UrGJuNLSHb8

а вот адский задрот или читер - https://www.youtube.com/watch?v=s-5Ix2Zd3FQ

из 8-ми стихий комбинируются возможные заклинание, а потом еще зависит от того левая кнопка мыши, правая кнопка мыши, или скрол активирует заклинание, и еще учитывается нажат ли при этом шифт, короче десятки, если не сотня всего чего угодно в итоге.
Вообщем это значительно сложнее чем кодовый замок, на чужую логику здесь полагаться смысла нет.

p.s. позавчера с корешом прошли Магику 2, в кампании еще сложнее, в комбинации до 5ти элементов.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница