将基于文本的游戏制作成可执行的jar - Java

时间:2014-01-26 01:56:14

标签: java text

我只是想知道如何将基于文本的控制台游戏变成可执行的jar。

从我在本网站其余部分看到的内容,我需要使用JTextField和JTextPane。我也知道要使它可以运行,它需要创建自己的控制台。我不在乎它有多复杂,只要它足够简单易懂。如果这样,那么你可以指出我正确的方向来学习如何实现这一目标。

如果这是其他地方的问题的副本,请指出我的方向;我搜索过,找不到任何简单的问题。

3 个答案:

答案 0 :(得分:1)

只有在想要游戏的GUI时才需要JTextFieldJTextPane

对于控制台游戏,

首先创建一个manifest.txt。确保以新的一行结束。

Main-Class: MyMainClass

然后

javac MyMainClass.java SomeOtherClass.java
jar -cvfm my-game.jar manifest.txt *.class

然后运行它,

java -jar my-game.jar

答案 1 :(得分:1)

对于控制台,您可以从命令行运行它,或者像您说的那样运行它,创建一个GUI并让它像控制台一样。

GUI可以通过两种方式完成:

  1. 创建一个简单的GUI,其中包含用于输出的文本框和用于输入的1行。添加写入和获取行的方法(分别)
  2. 创建另一个简单的GUI和扩展PrintStream的类。重写PrintStream类的write方法,让它们写入您创建的JTextPane。对InputStream(System.in)采用相同的格式。您可以通过System.setIn(InputStream)和System.setOut(PrintStream)设置它们。这种方法的结果更复杂,但仍然给人一种更完整的感觉。
  3. 关于#2的更多信息: @ Jordan.McBride System类中的所有内容都由JRE定义。在程序运行之前,JRE将准备程序可能调用的System类的所有元素。在这样做时,它创建一个PrintStream对象并告诉它写入控制台。您的程序可以使用System.out调用此类。类似地,JRE还创建一个InputStream对象并将其分配给控制台窗口,您可以通过System.in引用该窗口。 Java为您提供了通过System.setIn(..)和System.setOut(..)将这些Stream类替换为您自己的类的选项。如果程序GUI失败,则无需显示用户不友好的控制台以显示错误,这非常有用。

    通过创建自己的类来覆盖PrintStream和InputStream类,您可以重定向数据流的位置。看一下PrintStream类here的API。 println()和print()方法都调用write()函数。为简单起见,我只会覆盖print和println。在你的覆盖函数中,你可以拥有像

    这样简单的东西
    public void println(String outstr)
    {
      this.textBox.setText(this.textBox.getText() + outStr + "\n");
    }
    

    你当然必须有一个textBox的实例字段,以便它知道在哪里写。

答案 2 :(得分:0)

如果您正在寻找一个简单的解决方案,您可以考虑使用ACM Java Task Force库并继承ConsoleProgram。这应该保留当前大部分代码。

http://www-cs-faculty.stanford.edu/~eroberts/jtf/