2017-02-09 13 views
1

Мне нужно прочитать файл и решить лабиринт. Что мне нужно сделать, так это прочитать лабиринт и распечатать решение следующим образом.Java простой совет лабиринта

walls marked by '#' 
    passages marked by ' ' 
    path marked by 'X' 
    start/end marked by 'S'/'E' 

    (x,y) location of the start. (0,0) is upper left and (width-1,height-1) is lower right 
    (x,y) location of the end 

    1 1 1 1 1 1 1 1 1 1 
    1 0 0 0 0 0 0 0 0 1 
    1 0 1 0 1 1 1 1 1 1 
    1 0 1 0 0 0 0 0 0 1 
    1 0 1 1 0 1 0 1 1 1 
    1 0 1 0 0 1 0 1 0 1 
    1 0 1 0 0 0 0 0 0 1 
    1 0 1 1 1 0 1 1 1 1 
    1 0 1 0 0 0 0 0 0 1 
    1 1 1 1 1 1 1 1 1 1 

    OUTPUT: 
    ########## 
    #SXX  # 
    # #X###### 
    # #XX # 
    # ##X# ### 
    # # X# # # 
    # # XX # 
    # ###X#### 
    # # XXXE# 
    ########## 

Это просто пример, демонстрирующий, что я должен делать. Может ли кто-нибудь посоветовать мне, пожалуйста, на какой процедуре я должен следовать? Я не прошу какого-либо кода, мне просто нужна отправная точка для решения этого лабиринта.

Нужно ли просто проверить файл и заменить «1» на «#» и т. Д. Или мне нужно использовать какой-то алгоритм? Буду признателен за любую оказанную помощь.

+0

рекурсия будет ключом, я думаю. –

+0

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

+2

Без заданной начальной и конечной точек существует множество решений. – rajah9

ответ

0

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

Ваш лучший способ - спросить того, кто вам дал проблему (учитель, босс, веб-сайт для программирования головоломок, что угодно), чтобы подробно описать проблему и описания требований. Надеюсь, это возможно для вас.

Если я неверно истолковал ваш вопрос, а ваш последний абзац не имел в виду то, что я думал, и вы действительно просто просите совета по программированию, попробуйте алгоритмы поиска в Google Googling, особенно те, которые могут возвращать оптимальные пути. A* - один из наиболее часто используемых в разработке видеоигр.

Wikipedia A* path-finding algorithm article

+0

Спасибо. Первоначально я думал, что эту проблему просто решить, но ее нет. Я посмотрю на поиски пути для вашего времени! – Kristo

+0

@ Kristo1990 Так как это выглядит как домашняя проблема A *, вероятно, излишняя. Алгоритм простого поиска по ширине или «обратного отслеживания» будет проще реализовать. – 0x5453

+0

Я посмотрю, какие ресурсы я могу найти и как я могу их обработать, и я, вероятно, обножу свой вопрос или дам вам знать. Спасибо за ваш интерес, хотя :) – Kristo