Показать сообщение отдельно
Старый 18.12.2019, 19:34   #1
JeanWinters
Знающий
 
Регистрация: 22.12.2007
Сообщений: 212
Написано 19 полезных сообщений
(для 45 пользователей)
Проверка возможных ходов в игре "три в ряд"

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




Например:
1. Имеется поле с элементами (f - замороженные элементы, которые нельзя двигать).
2. Игрок передвигает фиолетовый элемент, меняет местами с желтым.
3. Происходит удаление линии.
4. Сверху падают новые элементы, заморозка распространяется на соседний верхний элемент.
5. Так как нет доступных ходов, то запускается функция перемешивания не замороженных элементов.
6. Перемешивание будет происходить пока не достигнет доступных ходов. Есть только два варианта: если синий элемент встанет на позицию 3,4
7. или на позицию 3,5.



Но если сверху упадут немного другие элементы:

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



Вопрос такой: как можно проверить существует ли возможность доступных ходов в принципе (не учитывая позиций не замороженных элементов), даже если потенциально перемешивать много раз, то выводить игроку, что уровень не пройден, так как доступных ходов не осталось совсем.
(Offline)
 
Ответить с цитированием