【问题标题】:Help with Mud Programming in java帮助在 java 中进行 Mud 编程
【发布时间】:2009-08-17 01:39:43
【问题描述】:

好吧,我决定制作泥浆之类的东西,并且我也可以在其他地方使用这些做法,但是我有一个问题.. 我不知道如何使它成为用户可以在实际框中输入而不是文本字段的位置

我想更好地解释,但我真的想不出来

【问题讨论】:

  • 好吧,我来试一试……你的意思是你不知道如何创建一个可以与telnet或其他MUD客户端连接的服务器?
  • 不,我的意思是用户输入,我不知道如何让它到用户可以在输出部分输入的位置,它是一个自定义 gui。
  • 啊 - 我们所有对 MUD 感兴趣的人都渴望专注于此 ;-)。请参阅我对答案所做的补充,希望对您有所帮助。

标签: java swing


【解决方案1】:

如果您谈论的是 MUD 客户端并在与输出相同的窗口中输入文本,听起来您会遇到与在终端中通过裸 telnet 播放 MUD 时相同的问题 - 就是这样您输入的文本在您输入时会滚动,因此您无法看到进行编辑等。我认为有一个单独的字段可以在输入之前进行必要的编辑。

您可以只专注于服务器,让用户(管理员也可以)通过其中一个 MUD 客户端(例如 zMUD)进行连接。不过,我可能会错误地解释您的问题。制作 MUD 涉及很多东西,所以大多数人在从头开始时无法启动并运行可行的游戏 - 但无论如何,你仍然可以从努力中学到很多东西。我自己做的,但只是服务器 - 从来没有对客户端程序或 GUI 界面做过任何事情。

编辑添加,在 OP 的评论回复之后:

看看这个 Sun 教程,看看它是否有帮助:

http://java.sun.com/docs/books/tutorial/uiswing/components/textarea.html

第一个示例使用单独的字段进行输入,但向下滚动到“TextAreaDemo”示例,它可能会显示您需要的内容。

【讨论】:

  • 哦,不,我的问题是正确的,我也有点想为我正在制作的另一个程序制作我自己的命令提示符类型的东西,我知道文本滚动问题,但我我还是想知道怎么做。
  • 我不太了解他们的示例代码,但如果我从中得到的内容是正确的,那么它的全部作用就是使文档从插入符号位置向后读取到末尾字??
  • 否 - 在我相信您正在查看的部分中,程序正在检查要自动完成的单词。基本上,您在字段中的文本中使用从零开始的索引。在该示例中,对于程序检测到的来自用户的插入事件,该索引是使用 ev.getOffset() 获得的,并且当程序本身将文本插入到字段中时,它使用 textArea.insert 执行此操作。在一个地方,他们称它为偏移量,而在另一个地方,它是一个位置,但在这两种情况下,它都是从零开始的索引,动作发生的地方。
  • (还要注意 getOffset() 返回输入的开始,而不是结束。ev.getLength() 方法是他们获取输入长度的方法。)
【解决方案2】:

制作泥浆并不复杂。我认为您所问的答案是您需要使用 TCP/IP telnet 端口。

Telnet 非常简单,您只需打开一个端口并开始读取数据——上面有很多信息,甚至还有一些库可以帮助您。 (Telnet 只是一个标准端口,但有一个小例外,一个开始时进行的“协商”,它只是来回发送几个字节,但如果你不这样做,那么什么都不会发生) .

所以你编写代码并开始监听一个端口(4444 是一个常见的 MUD 端口 iirc)。然后运行 ​​telnet 客户端并连接到该端口。它将为每个呼入的人创建一个新的端口连接。您可能有一个线程监听每个端口,监视您正在输入的内容,处理退格并可以将完成的命令发送到您的主泥系统(使用同步方法,因为许多端口可能立即发送命令)。

其实很简单。寻找一个用于 Java 的 telnet 库。

快速搜索发现JavaSSH 也处理远程登录。

编辑:我应该指出,它们也不容易制作!让地图、设备和怪物全部由数据驱动,这样您就不必为每个怪物都重新构建需要一些深谋远虑......这是您可能会编写第一个并在决定之前使用它一个月的事情之一它需要从头开始重写。

我只是指出您可能想要检查已经存在的泥浆来源。我发现 diku 非常小且易于理解。

【讨论】:

    猜你喜欢
    • 2012-07-03
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多