我想使用控制台作为“屏幕”,以便显示井字棋游戏,而无需在每回合在前一个棋盘下方打印一个新棋盘。
我已经看到了一些如何在 Windows 上使用
CreateConsoleScreenBuffer
函数在 C++ 中执行此操作的示例。
有什么方法可以用 Java(在 Mac 上)做到这一点吗?
我在早期的java时代为此使用的一件事是打印大量的返回字符:
Ex。
for(int i = 0; i < 30; i++){System.out.println("\n");}
使之前的棋盘“消失”。 这个概念是替代屏幕缓冲区,它通常用于终端应用程序在应用程序完成后返回到主终端屏幕。您可以使用 ANSI 转义码简单地切换到备用屏幕。
Java 示例:
启用替代缓冲区
System.out.print("\033[?1049h");
禁用替代缓冲区
System.out.print("\033[?1049l");
这仅在您的申请开始和结束时才有帮助。 但是,您可以在每次“转动”后使用 ANSI 代码清除屏幕 ("\ESC[3J\ESC[H\ESC[2J") 然后再次打印新的“屏幕”。
尝试查看 ANSI 转义码
https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797