Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 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)
 
Ответить с цитированием
Старый 27.01.2020, 16:54   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,511
Написано 2,964 полезных сообщений
(для 5,253 пользователей)
Ответ: Проверка возможных ходов в игре "три в ряд"

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

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

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com