我只是想知道如何将基于文本的控制台游戏变成可执行的jar。
从我在本网站其余部分看到的内容,我需要使用JTextField和JTextPane。我也知道要使它可以运行,它需要创建自己的控制台。我不在乎它有多复杂,只要它足够简单易懂。如果这样,那么你可以指出我正确的方向来学习如何实现这一目标。
如果这是其他地方的问题的副本,请指出我的方向;我搜索过,找不到任何简单的问题。
答案 0 :(得分:1)
只有在想要游戏的GUI时才需要JTextField
和JTextPane
。
对于控制台游戏,
首先创建一个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可以通过两种方式完成:
关于#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。这应该保留当前大部分代码。