使用 Java 创建控制台屏幕缓冲区

问题描述 投票:0回答:2

我想使用控制台作为“屏幕”,以便显示井字棋游戏,而无需在每回合在前一个棋盘下方打印一个新棋盘。

我已经看到了一些如何在 Windows 上使用

CreateConsoleScreenBuffer
函数在 C++ 中执行此操作的示例。

有什么方法可以用 Java(在 Mac 上)做到这一点吗?

java console
2个回答
0
投票

我在早期的java时代为此使用的一件事是打印大量的返回字符:
Ex。

for(int i = 0; i < 30; i++){System.out.println("\n");}
使之前的棋盘“消失”。

据我所知,由于 java 和控制台之间的限制,没有像 c++ 那样简单的方法来清除控制台屏幕。

如果您想要一些不同的东西,我建议您学习如何使用 GUI我相信您能够将大量代码移过来并使其工作原理基本相同。


0
投票

这个概念是替代屏幕缓冲区,它通常用于终端应用程序在应用程序完成后返回到主终端屏幕。您可以使用 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

© www.soinside.com 2019 - 2024. All rights reserved.