Я уже реализовал функцию, когда кипер автоматически перемещается с использованием алгоритма поиска по ширине. Теперь я хочу, чтобы он также автоматически перемещал поля (если хранитель может перемещать поле из источника в пункт назначения, не перемещая другие поля). Как это сделать? Я пробовал модифицировать BFS, но еще не успел.Sokoban game: автоматически перемещать поля
ОБНОВЛЕНИЕ: Мне не нужно решать головоломку. Вместо этого я хочу разработать удобный пользовательский интерфейс, когда пользователь может перемещать коробки своей мышью. Для этого мне нужен некоторый алгоритм, который позволит вычислить последовательность перемещения. Но речь идет только о перемещении одного окна, и если для этого не нужно перемещать только другие блоки.
Какова конкретная проблема, с которой вы сталкиваетесь (помимо широкого «она не работает»)? – Attila
Он хорошо решает простые маршруты (когда путь к коробке содержит каждое место только один раз). Но есть также сложный случай, когда ящики в каждом месте больше чем один раз (например, вы перемещаете поле в большую область, чтобы переместить хранителя, а затем перемещает поле обратно по тому же пути). Я считаю, что я должен хранить не только, если посетили определенное местоположение, но и где был хранитель на данный момент). –
Я больше спрашивал, есть ли какие-то алгоритмы, которые люди уже разработали для этой задачи. Я не знаю, если мой подход будет толкать/двигаться оптимально, в то время как я определенно хотел бы, чтобы он был оптимальным. –