Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
[Java游戏]:如何实现游戏板_Java_Swing - Fatal编程技术网

[Java游戏]:如何实现游戏板

[Java游戏]:如何实现游戏板,java,swing,Java,Swing,为了便于考试,我们正在开发一个分布式游戏(使用JavaRMI),该游戏具有共享的全局状态,是一个包含所有棋子位置的游戏板。现在我们必须开始实施棋盘游戏,如下图所示: 问题是我们不知道如何开始。我们去美国荡秋千好吗?我们对Swing几乎没有经验…只有按钮、标签、文本区域和其他一些。。。 你能告诉我们使用什么和如何开始吗?有专门的图书馆吗?谢谢例如,如果您计划制作这样的高级图形功能,您可能需要研究OpenGL的现有Java实现。这可以通过Swing实现,但这需要大量的工作和混乱 这是一个额外的学习

为了便于考试,我们正在开发一个分布式游戏(使用JavaRMI),该游戏具有共享的全局状态,是一个包含所有棋子位置的游戏板。现在我们必须开始实施棋盘游戏,如下图所示:

问题是我们不知道如何开始。我们去美国荡秋千好吗?我们对Swing几乎没有经验…只有按钮、标签、文本区域和其他一些。。。
你能告诉我们使用什么和如何开始吗?有专门的图书馆吗?谢谢

例如,如果您计划制作这样的高级图形功能,您可能需要研究OpenGL的现有Java实现。这可以通过Swing实现,但这需要大量的工作和混乱


这是一个额外的学习,但它是一个很好的进步,使令人印象深刻的跨平台游戏。您还可以在android和iOS上展示它,这是一个额外的好处。

例如,如果您计划开发此类高级图形功能,您可能需要研究OpenGL的现有Java实现。这可以通过Swing实现,但这需要大量的工作和混乱


这是一个额外的学习,但它是一个很好的进步,使令人印象深刻的跨平台游戏。您还可以在android和iOS上演示它,这是一个额外的好处。

我个人会使用JLabels,因为我也没有使用Swing的经验。你可以让它们很容易点击,在屏幕上移动它们也是如此

话虽如此,

如果你想学习新的东西,并给老师留下深刻印象,荡秋千将是一条路:)

因为我觉得你们在寻找更多的方向,所以我将进一步阐述如何解决这个问题

  • 创建类boardField扩展JLabel(或任何你想称之为圆的东西)
  • 使其具有状态:空、已占用
  • 使用arraylist跟踪boardFields
  • 获取要在JPanel中显示的板

添加我没有提到的所有内容:p

我个人会使用JLabels,因为我也没有Swing方面的经验。你可以让它们很容易点击,在屏幕上移动它们也是如此

话虽如此,

如果你想学习新的东西,并给老师留下深刻印象,荡秋千将是一条路:)

因为我觉得你们在寻找更多的方向,所以我将进一步阐述如何解决这个问题

  • 创建类boardField扩展JLabel(或任何你想称之为圆的东西)
  • 使其具有状态:空、已占用
  • 使用arraylist跟踪boardFields
  • 获取要在JPanel中显示的板

添加所有我没有提到的东西:实际上,对于这样的东西,我要么使用像libGDX或JavaFX这样的OpenGL库。与使用libGDX相比,JavaFX可能会使您更快地获得结果

Cod在另一个答复中已经提到了libGDX。
JavaFX是在较新的Java版本中构建的,在图形编辑器等方面有更好的支持。

实际上,对于类似的东西,我要么使用像libGDX或JavaFX这样的OpenGL库。与使用libGDX相比,JavaFX可能会使您更快地获得结果

Cod在另一个答复中已经提到了libGDX。
JavaFX是在较新的Java版本中构建的,在图形编辑器等方面有更好的支持。

我将创建自己的
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
的代码,以便根据游戏的当前状态在屏幕上正确绘制


我可以建议您阅读“

我将创建自己的
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中完成,但这相当困难。你需要在上面做一个背景和一个面板,上面放着圆圈的图形,(你需要一个圆圈的每个状态的图形,如被占用等),然后把每个图形都做成一个按钮,然后从那里开始工作。我想说的是,JLabels也是有可能的。我不知道还需要说什么。。。正如我所说,我们没有任何经验,因此我们很难理解如何开始……我想这取决于你是否有时间学习如何使用他人给出的答案。使用标准的Swing组件(JLabel/JButton等)非常方便。您可以通过使用label.setBounds(x,y)将JLabel放置在面板中的任何位置:)您应该首先设计一个-这将是驻留在
RMI
共享空间中的共享对象。一旦这样做了,您就可能能够在您提到的任何(甚至所有)框架中构建
View/Controller
对象。你需要在上面做一个背景和一个面板,上面放着圆圈的图形,(你需要一个圆圈的每个状态的图形,如被占用等),然后把每个图形都做成一个按钮,然后从那里开始工作。我想说的是,JLabels也是有可能的。我不知道还需要说什么。。。正如我所说,我们没有任何经验,因此我们很难理解如何开始……我想这取决于你是否有时间学习如何使用他人给出的答案。这是非常重要的