Похоже, вы используете упорядочение по ряду строк, судя по тому, как печатает ваша доска.Исходя из этого, вот что вам нужно сделать:
- Во-первых, вам нужно где-то сохранить позицию игрока.Прямо сейчас он жестко запрограммирован на 0,0.
- Во-вторых, вам нужно прочитать в ход игрока.Это должно произойти в цикле, где вы получаете движение, проверяете, разрешено ли это движение, выполняете движение и отображаете результаты.
- В-третьих, вы должны иметь возможность рассчитывать новую позицию на основев пути.Up означает
row -= 1
.Право означает column += 1
.И т. Д. - Учитывая новые координаты, вы должны убедиться, что ход действителен.По крайней мере, вы должны помешать им сойти с доски, но вы также можете запретить им входить в квадрат с препятствием и т. Д.
- Как только вы узнаете, что ход действителен, вы должныобновите переменные, в которых вы храните текущие координаты.
- В конце цикла вам необходимо перерисовать доску.
В этом ее основная суть.Прямо сейчас вы делаете все в main()
, и это нормально, но если бы это был я, я бы начал разбивать вещи на отдельные методы, такие как InitializeBoard()
, GetNextMove()
, CheckIfMoveIsValid(int r, int c)
и так далее.Таким образом, main()
становится высокоуровневым представлением вашего игрового цикла, а внутренности различных операций разделены на части и с ними легче работать.Это потребует хранения таких вещей, как игровая доска, в переменных класса, а не в локальных переменных, что на самом деле должно упростить обнаружение препятствий, чем было бы в настоящее время.