【问题标题】:What is the best way to display ASCII in a grid with panels using Java?使用 Java 在带有面板的网格中显示 ASCII 的最佳方法是什么?
【发布时间】:2012-06-29 10:10:21
【问题描述】:

我在 Java 方面没有太多经验,但我正在尝试编写一个简单的类 Rogue 游戏来熟悉它,我只是想知道如何创建这样的界面:

有什么明显的方法可以让你去做这样的事情吗?作为 Java 新手,我真的不知道最好的方法是什么。

抱歉含糊了!

谢谢

【问题讨论】:

  • 编写一个 Swing GUI 应用程序而不是文本模式的应用程序。事实证明这会容易得多,而且结果会更漂亮。
  • Java 使用 Unicode,而不是 ASCII。小心。
  • 谢谢,我正在研究秋千。是否有任何适用于 Eclipse 的 Swing 窗口编辑器?所有我发现的似乎都是古老的
  • 我会覆盖 JPanel 并在其上绘制位图。一张用于背景的位图,一张用于前景的带有字符的位图。快速简单!

标签: java roguelike


【解决方案1】:

JDK 中没有这样的(简单)组件 - 如果您不需要颜色,可以使用 JTextArea 来显示 ASCII-Art(在设置固定宽度字体之后)。您需要注意不要遇到字符集问题(如果您不坚持使用 US-ASCII 7 位)。 编写一个处理彩色显示的组件(可能还有转义序列,本质上是模拟控制台窗口)不会太难,但如果您刚开始使用 Java,这可能是一个不受欢迎的挑战。

您也可以只用 Java 编写游戏,然后将 ASCII 码显示到系统控制台(您的游戏会简单地输出到标准输出)。

编辑:可以通过将内部格式转换为(简单)HTML 来实现彩色 ASCII,并且可以使用 JLabel 显示 HTML。它可能不是最优雅的方法,但实现起来应该相当简单(而且现在硬件速度也不应该成为这种方法的问题)。这种方法建立在您可以使用 JLabel.setText() 并传递以 HTML 标记开头的字符串的能力之上。然后 JLabel 将整个文本解释为 HTML。

【讨论】:

  • 我要说(在阅读了前两段之后),我能不能只使用等宽字体并用 HTML 对其进行格式化并将其放入 JLabel 中。我想要的一件事避免重绘闪烁,我以前在单个控件中显示所有内容时遇到过这个问题,只是以前从未尝试在 Java 中这样做。我会修补一下,看看我能想出什么。谢谢!
【解决方案2】:

查看 Trystan 的 Ascii Panel,以及他关于制作 Roguelike here 的博客和教程。

【讨论】:

    猜你喜欢
    • 2017-02-23
    • 2015-07-08
    • 2015-01-06
    • 2021-04-06
    • 2023-01-21
    • 2022-10-15
    • 1970-01-01
    • 2011-12-24
    • 2012-05-25
    相关资源
    最近更新 更多