2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 "Проходимость" карты
Сообщение12.12.2012, 18:34 
Пишу игрушку сыну, на 1С :-) (хотя платформа не принципиальна). Моделируется игра "Лабиринт" - компьютер в роли ведущего задает карту: прямоугольник из заранее известного количества клеток по ширине и высоте, в каждой клетке может быть один из заранее известного класса объектов. Некоторые классы - ямы: пара клеток любого взаимного расположения, при попадании в одну оказываешься в другой, реки: n клеток последовательно соприкасающихся сторонами, при попадании в любую часть оказываешься в конце и т.д. Игрок не знает карту, можно навешивать любые миссии, но суть в том чтобы разгадать карту и ходить осознанно. Игрок делает ход - вправо, влево, вверх или вниз - ведущий (компьютер) отвечает - пусто, яма 3, река и т.п.
Я запрограммировал процесс генерации карты, интерфейс и отработка ходов не вызывают сложностей. Но в процессе генерации порой получаются такие карты, которые нельзя пройти - то есть, или попадая в определенную точку нельзя из нее выйти (например, река стеклась в центр по спирали, или 2 реки так взаимно переплелись), или просто есть недоступные области. Собственно, возник вопрос - есть ли какой-нибудь алгоритм или метод, который позволяет проверять полученную карту на "проходимость" - то есть на отсутствие мертвых зон и недоступных областей? Другими словами, чтобы из любой исходной точки можно было попасть в любую другую. Предполагаемое количество клеток в длине/ширине карты - порядка 5-10.

 
 
 
 Re: "Проходимость" карты
Сообщение12.12.2012, 18:44 
Проходимость из одной точки - Breadth-first search.
Проходимость из любой точки в любую заметно сложнее - Floyd–Warshall algorithm.

 
 
 
 Re: "Проходимость" карты
Сообщение12.12.2012, 18:55 
Аватара пользователя
Т.к. время вычислений не очень существенно, рассчитайте матрицу расстояний.

 
 
 
 Re: "Проходимость" карты
Сообщение15.12.2012, 18:01 
Спасибо за ссылки, но проверку проходимости карты пока не реализовал, надо разбираться в методах и графах. А так программка готова, довольно интересно оказалось играться :) Задаются размеры поля, количество и длина рек, количество ям, генерируется карта, отрабатываются ответы на ходы пользователя. Если кому интересно - могу выложить файлик. Только это внешняя обработка для 1С 7.7 - запускается только из под нее :) Прав был коллега - надо было на Вижуал Студии писать, заодно бы и в ней потренировался.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group