Позиция курсора консоли в Java

145
15 февраля 2018, 14:38

Вот сейчас думаю напишу-ка консольный движок на Java для крестиков-ноликов, в C# реализовал довольно легко, ибо там есть управление курсором, но с Java возникла проблема

public void cellDraw() {
    //отрисовка зависит от свойств
    //Пустая ячейка IsBlank
    if(this.IsBlank == true) {
        System.out.println("-----");
        System.out.println("-   -");
        System.out.println("-----");
    }
    //Крестик IsTic
    else if (this.IsTic == true) {
        System.out.println("-----");
        System.out.println("- X -");
        System.out.println("-----");
    }

Выводится примитивные блоки из дефисов, соответственно надо, чтобы следующий блок начинался с N - позиции строки в консоли, аналогия в C# Console.SetCursorPosition(x,y).

Answer 1

Это можно сделать используя управляющие последовательности, о которых можно почитать, например, тут: https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

На Java это можно реализовать примерно таким методом:

public static void setCursorPorision(int x, int y) {
    final char escCode = 0x1B;
    System.out.print(String.format("%c[%d;%df", escCode, y, x));
}

PS: Похоже этот метод не работает в Windows, увы.

READ ALSO
Как исключить повторное срабатываение replaceAll где это не надо?

Как исключить повторное срабатываение replaceAll где это не надо?

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

169
Оператор выбора в Java. If в Java [дубликат]

Оператор выбора в Java. If в Java [дубликат]

На данный вопрос уже ответили:

133
Сокращение дроби

Сокращение дроби

Начал изучать jquery, вот хочу написать скрипт для перевода десятичных дробей в обыкновенные

192