2d массив Maze задача - PullRequest
       29

2d массив Maze задача

0 голосов
/ 18 октября 2018

В настоящее время я учусь в одной ИТ-академии, и я получил довольно большую домашнюю работу, так или иначе, мне не удалось найти логику для написания кода для этой задачи, поэтому в основном мне нужны некоторые руководства, а не весь код!:)

У меня есть двумерный массив символов, который будет представлять собой лабиринт.Допустим, массив равен 8x8, и я привожу здесь пример, чтобы вы могли лучше рассмотреть:

char[][] maze = {'#','#','#',' ','#','#','#','#',},
                {'#',' ','#',' ','#',' ',' ','#',},
                {'#',' ','#',' ','#',' ',' ','#',},
                {' ',' ',' ','$','#','#',' ',' ',},
                {'#',' ','#',' ',' ',' ',' ','#',},
                {'#',' ','#','#','#',' ',' ','#',},
                {'#',' ',' ',' ',' ',' ',' ','#',},
                {'#','#','#','#','#','#',' ','#',}};

Как вы можете видеть, он в основном строится на #, где стены и пробелы являются 4 выходами,$ наш герой, который должен сбежать.Поэтому я должен написать код, который при печати этого лабиринта просит пользователя ввести U, R, L, D, и мой $ должен двигаться соответственно, но если есть стена, она не должна двигаться.Я сделал это до сих пор.Что в основном спрашивает о направлении и печатает лабиринт:

while(true) {
        System.out.println("Input direction:");
        direction = sc.next().charAt(0); 

        for(int row = 0; row < maze.length; row++) {  
            for(int col = 0; col < maze[row].length; col++) {
                System.out.print(maze[row][col] + " ")  

                }

            }
            System.out.println();

        }

Проблема, с которой я столкнулся, заключается в том, что я не могу найти логику, чтобы сохранить положение моего героя после получения направления.Это должно быть что-то с переменными и меняющимися элементами массива, но я борюсь весь день, поэтому я решил спросить здесь.Если я найду, как это сделать, я почти уверен, что знаю, как сделать все остальное!:)

Внимание!Я нахожусь в стадии своего образования, что могу использовать только циклы, условия и массивы :) Так что любая помощь приветствуется!Спасибо!

1 Ответ

0 голосов
/ 18 октября 2018

Вы должны оставить переменную для heroX и hero Y, перебирая весь 2d массив один раз, если нужно.После этого вы должны проверить, является ли место, в котором они пытаются переместиться, стеной или выходом.«U» будет местоположением maze[heroY-1][heroX], «D» будет местоположением maze[heroY+1][heroX] и т. Д. При вводе местоположения требуется обновить переменные heroX, heroY и лабиринт.

РЕДАКТИРОВАТЬ:забытое вертикальное значение идет первым в 2d массиве

...