Есть ли способ пронумеровать строки и столбцы в игре MineSweeper в консоли java? - PullRequest
0 голосов
/ 09 мая 2020

Я играю в игру «Сапер» на консоли java, в которой пользователь должен ввести координаты x и y, чтобы выбрать место, которое он / она хочет открыть или отметить. Как вы можете видеть на первом рисунке, сетка состоит из доски 10х10 точек. Как и сейчас, пользователь должен подсчитать строку и столбец, и только тогда он / она может записать в консоли место, которое он / она хочет синализировать. Это не очень хороший опыт для пользователя, поэтому мне было интересно, есть ли способ пронумеровать строки и столбцы от 1 до 10, чтобы пользователю было легче выбрать координату, которую он хочет выбрать. 1

Код для сетки следующий

public String appearanceAt(Pos p) {
        if (statuses[p.y][p.x] == StatusOfArea.CLOSED) {
            return ". ";
        }
        if (statuses[p.y][p.x] == StatusOfArea.flagEDASBOMB) {
            return "* ";
        }
        int count = countMineNeighbors(p);
        if (count == 0) {
            return "0 ";
        }
        return + count + " ";
    }

Спасибо

1 Ответ

0 голосов
/ 09 мая 2020

Я вижу, вы инкапсулировали деталь Position в объект.

Вы могли бы аналогичным образом инкапсулировать двумерный массив в класс Board.

Метод печати Board может:

  • распечатать все столбцы в первой строке
  • напечатать номер строки в начале каждой строки

Этот метод также может вызвать функцию getStatus, чтобы определить, что вам нужно показать при вводе пользователем

Это будет выглядеть так

  0 1 2 3 4 5 6 7 8 9
A . . . . . . . . . .
B . . . . . . . . . .
C . . . . . . . . . .
D . . . . . . . . . .
E . . . . . . . . . .
F . . . . . . . . . .
G . . . . . . . . . .
H . . . . . . . . . .
I . . . . . . . . . .
J . . . . . . . . . .

Пользователь вводит ввод как «D 5». Задача InputHandler - перевести его и соответственно установить объект Position.

Надеюсь, это поможет :)

...