对于考试,我们正在开发一个具有共享全局状态的分布式游戏(使用Java RMI),这是一个包含所有棋子位置的游戏板。现在我们必须开始实施棋盘游戏,如下图所示:
问题是我们不知道如何开始。我们要美国摇摆吗?我们对Swing的经验很少......只是按钮,标签,textarea等等...... 您能否告诉我们一些关于使用什么以及如何开始的建议?有没有特定的图书馆?谢谢
答案 0 :(得分:2)
我个人会使用JLabel,因为我也没有Swing的经验。你可以让它们变得非常简单,同样可以在屏幕上移动它们。
这就是说,
如果你想学习新东西并给老师留下深刻印象,那么摇摆将是你要走的路。:)
因为我觉得你正在寻找更多的方向,所以我会对我如何解决这个问题进行一些扩展。
添加我没有提及的所有内容:P
答案 1 :(得分:1)
如果您打算制作这些高级图形功能,例如LibGDX,您可能需要查看现有的OpenGL Java实现。这可以通过Swing实现,但这需要大量的工作和搞乱。
这是一个额外的学习,但它是一个很好的一步,使一个令人印象深刻的跨平台游戏。你将能够在Android和iOS上展示它,这是一个奖励。
答案 2 :(得分:1)
我会创建自己的JComponent
,通过继承它并覆盖其paintComponent
方法来绘制板。像这样:
import javax.swing.*;
import java.awt.*;
public class MyBoardComponent extends JComponent {
public void paintComponent(Graphics g) {
g.drawOval(50,50,100,100);
}
public Dimension getPreferredSize() {
return new Dimension(200,200);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame("Test");
f.getContentPane().add(new MyBoardComponent());
f.pack();
f.setVisible(true);
}
});
}
}
当然,您现在需要为您的电路板设计一个好的模型并更改paintComponent
的代码,以便根据当前的游戏状态在屏幕上正确绘制它。
我建议您阅读" Swing tutorials"
答案 3 :(得分:0)
实际上对于这样的事情,我要么使用像libGDX或JavaFX这样的OpenGL库。与使用libGDX进行相比,JavaFX可能会使您获得更快的结果。
在另一个答案中,Cod已经提到了libGDX。 JavaFX内置于较新的Java版本中,并且在图形编辑器等方面具有更好的支持。