SetCursorPosition за Java
За съжаление Java не поддържа доста неща свързани с конзолата и едно от тях е SetCursorPosition. Някой знае ли метод/начин/библиотека с които да си закараш курсора там където ти трябва на конзолата?
За съжаление Java не поддържа доста неща свързани с конзолата и едно от тях е SetCursorPosition. Някой знае ли метод/начин/библиотека с които да си закараш курсора там където ти трябва на конзолата?
Здравей, да за съжаление Java не поддържа тази функция, конзолата е просто output за информация и толкова. Един вариант да заобиколиш SetCursorPosition според мен е да печатиш \t толкова пъти, колкото искаш да ти бъде отместен всеки String надясно. Освен тази функция липсва и Clear за конзолата, което се "заобикаля", като стесниш конзолата достатъчно, че да виждаш само текъщата итерация/резултат - поне за стигнах до този компромисен вариант.
Дано съм бил поне малко от помощ.
Аз си играх през по-голямата част от деня с вградените JFrames но освен за Tetris и други подобни игрички с квадратчета за друго се иска доста по солидни знания да се направи. Също така даже на JFrames няма как да му кажеш "Ей тука на тази позиция искам да направиш нещо".
Аз по друг начин разбрах нещата - с JFrame се имплементира GUI, което в условието на отборната задача е казано да не правим. Поправете ме ако греша.
А аз за друго си играх с него не зареди условието :)
Инсталирах библиотеката по стандартния начин - Properties върху проекта -> Java Build Path -> Add External Jars. Увери се, че jar файла не е javadoc - в първия пост съм дал линк на jar-а, който ползвам. След това:
1. Създаваш конзола: Terminal terminal = TerminalFacade.createTerminal(System.in, System.out, Charset.forName("UTF8"));
2. Отваряш конзолата: terminal.enterPrivateMode();
Има доста функции, които можеш да разгледаш, като напишеш "terminal."
Все още не мога да разбера как да си затворя конзолата terminal.exitPrivateMode(); не я затваря, не я затваря и Х -а на нейния прозорец. Едва като затвориш еклипс се маха конзолата. Също така - имам проблем с четенето на клавиши.Например искам да изпиша буква D координати (100,100) на конзолата, ако е натиснат клавиш "ALT": Key key =terminal.readInput(); if (key.isAltPressed() == true) { terminal.moveCursor(100, 100); terminal.putCharacter('D'); } Също така не сработва и (key.getKind() == Key.Kind.Tab) Ако някой е успял да подкара input и четене на клавиши, моля да помага.
Здравейте, мисля, че най-накрая направих пробив. :)
Та, ето какво открих https://code.google.com/p/libjcsi/ , все още я разучвам тази библиотека, откъм документация не е на много високо ниво, но пък за сметка на това има няколко добри примерчата, които демонстрират основната функционалност. Ето ги и тях
На първо четене, позволява принтиране на желана позиция, разпознава си клавишни комбинации, като дори може и да оцветява.
Ако ще изпълнявате примерите, сигнатура на контрукрутра WSwingConsoleInterface няма имплементация с един параметър стринг, иска string и boolean, т.е. би трябвало да изглежда (за примера - SimpleRoguelike):
new WSwingConsoleInterface("Simple Roguelike - libjcsi Testing Grounds", true);
Продължавам да я разучавам, като ще едитвам коментара впоследствие. [;
Моля ако някой направи значителен прогрес по въпроса да сподели. Ще съм много благодарен, а предполагам и доста други колеги също. :)
Аз също правих опити вчера, но нещо не ми се получи, а тези дни нямам време да се занимавам.
Тази Java просто ме изкарва от кожа :D:
Lanterna-та не ще да ми я разпознава, дори след като я добавя като библиотека (пробвах около 20 пъти), а за Jcurses няма грам документация. Съсредоточавам се върху документацията за J и щом намеря ще го постна.
ЕДИТ: Подкарах Lanterna - слагам линк към jar-а. Като абсолютен лаик изтеглих javadoc jar и изгубих 2 часа да се чудя защо не мога да я подкарам тая лантерна...
@nikolay.dimov83
Как е подкара Lanternata? Аз успях да си импортна библиотеката но до там. Нещо не ми е много ясно как да си направя "терминал" и да го ползвам за input/output както и другите щуротии като setCursor.