[java] Jansi를 활용하여 자바에서 텍스트가 이동하는 애니메이션 만들기

이번 포스트에서는 Jansi 라이브러리를 활용하여 자바에서 텍스트가 이동하는 애니메이션을 만드는 방법을 알아보겠습니다.

Jansi란?

Jansi는 터미널에서 ANSI 이스케이프 시퀀스를 활용하여 ANSI 색상, 배경, 글꼴 속성 등을 지원하는 자바 라이브러리입니다. 이 라이브러리를 사용하면 터미널에서 깔끔하고 멋진 텍스트 애니메이션을 만들 수 있습니다.

환경 설정

Jansi를 사용하려면 먼저 프로젝트에 Jansi 라이브러리를 추가해야 합니다. Maven 프로젝트의 경우, pom.xml 파일에 다음 의존성을 추가합니다:

<dependency>
    <groupId>org.fusesource.jansi</groupId>
    <artifactId>jansi</artifactId>
    <version>1.18</version>
</dependency>

Gradle 프로젝트의 경우, build.gradle 파일에 다음 의존성을 추가합니다:

dependencies {
    implementation 'org.fusesource.jansi:jansi:1.18'
}

애니메이션 만들기

이제 애니메이션을 만들어 보겠습니다. 예를 들어, 텍스트가 왼쪽에서 오른쪽으로 이동하는 애니메이션을 만들어보겠습니다.

import org.fusesource.jansi.AnsiConsole;
import static org.fusesource.jansi.Ansi.*;

public class TextAnimation {

    public static void main(String[] args) throws InterruptedException {
        AnsiConsole.systemInstall();

        int width = 50;
        String text = "Hello, World!";
        int position = 0;

        while (true) {
            System.out.print(ansi().eraseScreen().fg(Ansi.Color.GREEN).a(text.substring(position)));
            System.out.print(ansi().fg(Ansi.Color.DEFAULT).a(text.substring(0, position)));
            Thread.sleep(100);
            
            position++;
            
            if (position > text.length()) {
                position = 0;
            }
        }
    }
}

위의 코드에서는 Jansi의 AnsiConsole 클래스를 사용하여 ANSI 출력을 활성화합니다. 그리고 ansi() 메소드를 사용하여 ANSI 이스케이프 시퀀스를 생성합니다. eraseScreen() 메소드로 화면을 지우고, fg() 메소드로 글꼴의 색상을 설정합니다. a() 메소드로 텍스트를 출력합니다.

애니메이션을 실행하면 “Hello, World!” 문자열이 왼쪽에서 오른쪽으로 이동하며 화면에 출력됩니다. Thread.sleep() 메소드를 사용하여 애니메이션 속도를 조절할 수 있습니다.

결론

Jansi를 사용하면 자바에서 터미널에서 멋진 텍스트 애니메이션을 만들 수 있습니다. 이번 포스트에서는 Jansi를 활용하여 텍스트가 이동하는 애니메이션을 만드는 방법을 알아보았습니다. Jansi의 다양한 기능을 사용하여 더욱 다채롭고 흥미로운 애니메이션을 만들어 보세요.

참고 자료