forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Проверка возможных ходов в игре "три в ряд" (http://forum.boolean.name/showthread.php?t=20793)

JeanWinters 18.12.2019 19:34

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




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



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

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



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

pax 27.01.2020 16:54

Ответ: Проверка возможных ходов в игре "три в ряд"
 
Сорян что поздно, но может кому пригодится для размышлений:

1. Проверить по количеству элементов каждого цвета. Если все меньше 3-х, то заменить какие-то элементы нужными цветами, чтобы в итоге появились возможные ходы.

2. Я когда-то делал "в лоб", виртуально сдвигал каждый элемент матрицы на соседнее место и проверял совпадения из этой и соседней ячейки (всю матрицу не надо перебирать). Если совпадения были, значит ходы есть.


Часовой пояс GMT +4, время: 14:59.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot