首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于roguelike游戏的纯Java文本接口

用于roguelike游戏的纯Java文本接口
EN

Stack Overflow用户
提问于 2011-02-02 20:43:06
回答 6查看 5.8K关注 0票数 9

好吧,这听起来像是个疯狂的想法--但我对模拟纯Java上世纪80年代风格的roguelike游戏文本接口感兴趣,比如使用Swing或类似的。

以下是它需要做的大致工作:

  • 提供固定大小字符的固定大小网格作为“屏幕”(例如100*75)
  • 使用适当的单间距字体,最好有许多有趣的符号。
  • 允许为每个字符位置分别设置前景和背景字符颜色。
  • 允许在屏幕上的任何位置打印字符串或单个字符(应该覆盖屏幕缓冲区中在这些位置已经存在的内容)

有人知道有一个好的现有解决方案可以实现这一点吗?还是我被困在一起从零开始进行黑客攻击?

附注:我想要纯Java的原因是为了让它能够在沙箱小程序中运行。因此,像咒骂这样的JNI解决方案被不幸地排除在外……

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-02-04 12:00:42

一点也不疯狂,这是我在Legerdemain中实现的方法:http://roguelikefiction.com

我使用了一个二维字符数组(char)和相应的java.awt.Color对象数组来跟踪颜色。您可以将这些数组插入从JPanel继承的类(后者反过来是JFrame的一部分),并执行面板的paintComponent()回调中的所有绘图。

Curses/JNI方法也没有什么问题,尽管如果您选择Swing路径,您会得到各种各样的Unicode符号。魔法师用了五六百个。

票数 9
EN

Stack Overflow用户

发布于 2011-02-02 21:03:07

对于这类项目,我发现必须严格分离游戏模型和视图。这个简单的示例建议整体架构,而这个更复杂的游戏扩展了这个概念。好处是,视图可以独立于游戏本身发展,而游戏本身并不关心侦听视图是什么样子。

对于符号,Unicode符号可能是一个很有吸引力的选项,正如本示例中所建议的那样。

票数 4
EN

Stack Overflow用户

发布于 2011-02-02 21:02:32

提供固定大小字符的固定大小网格作为“屏幕”(例如100*75)

string[] screen =新的string75,然后用100个空格填充每个屏幕。

使用适当的单间距字体,最好有许多有趣的符号。

请参阅以下链接以获得一些好链接:http://cg.scs.carleton.ca/~luc/mono.html

允许为每个字符位置分别设置前景和背景字符颜色。

您可以通过使用允许像JEditorPane这样的HTML呈现的控件来实现这些文本效果。这样,您就可以将特殊关键字定义为“特殊关键字”。(好吧,这有点不可取,但对您的情况来说应该很好。)如果您将“游戏状态”存储为一个普通字符串(数组),但在输出它之前将html呈现出来,这将是最简单的。

允许在屏幕上的任何位置打印字符串或单个字符(应该覆盖屏幕缓冲区中在这些位置已经存在的内容)

如果您遵循我在前面问题中的建议,而不是将您的游戏状态作为普通字符串数组,那么您只需为您的行找到字符串,就可以找到使用string.substring (length ) + "A“+ string.substring(startindex: length + 2,string.length -(length+2))来构造新的游戏状态。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4879627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档