我正在尝试使用 Intellij 创建多行 ascii 艺术动画,为此我正在创建一个字符串数组,并将该数组的每个元素称为一个框架。
之后,为了使其正常工作,我需要更改每次单位 x 打印到控制台的内容。
我确实知道我可以用“\r”替换打印到控制台的最后一行,如下所示:
for (int i = 0; i <= 100; i++)
{
Thread.sleep(200);
System.out.printf("\r %s ", i);
}
但是它不会删除打印的旧行(System.out.printf("\r %s ", "a \n b");
只会在每次迭代中替换b
)并且因为intellij的控制台不是真正的控制台所以没有从代码中清除控制台的方法。
那么对于该问题还有其他适用于 intellij 的解决方案或解决方法吗?
为了让事情变得更简单,我将添加一个示例。假设我想打印这个举重动画(ascii art 取自 - https://ascii.co.uk/art/stickman )
O--,---,--O
._O_. O--=-O-=--O \ O /
_._ ,_O_, O--<-+->--O '-' - -
/ O \ ,-O-, O--(---)--O X v -
\| |/ O--=---=--O >'> / \ / ) / \
O--+=-=+--O 2"2 - - - - ~ z = =
所以我正在为框架创建一个二维字符串数组
(之后我将使用 String.join("\n", < frame elements >)
创建框架)。
String[][] frames =
{
{
" ",
" ",
" _._ ",
" / O \\ ",
" \\| |/ ",
"O--+=-=+--O"
},
{
" ",
" ",
" ,-O-, ",
" O--=---=--O ",
" 2"2 "
},
{
" ",
" ,_O_, ",
" O--(---)--O ",
" >'> ",
" - - "
},
{
" ._O_. ",
" O--<-+->--O ",
" X ",
" / \\ ",
" - - "
},
{
" O--=-O-=--O ",
" '-' ",
" v ",
" / ) ",
" ~ Z "
},
{
" O--,---,--O ",
" \\ O / ",
" - - ",
" - ",
" / \\ ",
" = = "
}
}
并且在每个时间单位x+1中,我希望控制台显示帧[x+1]而不是帧[x]。
有什么想法吗?
最佳答案
正如您所建议的,没有办法清除intellij中的控制台,因为Intellij没有真正的控制台。 但是,您可以在每一帧后打印大量空行,以使旧帧不可见。
关于java - intellij中的多行ascii动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70775017/