【问题标题】:using JPanel in chess in java [closed]在java中的国际象棋中使用JPanel [关闭]
【发布时间】:2012-12-29 09:36:51
【问题描述】:

在使用 JPanel 在 Java 中制作国际象棋游戏时,是否有返回容器是否包含任何内容的方法?例如,通过定义一个这样的数组:JPanel [8][8] 我们要检查广场[i][j] 中是否有人,这样我们就可以检查玩家的移动是否合法。 有没有办法 检查那个??

【问题讨论】:

  • 为了获得更好的帮助,请尽快发布SSCCE,简短、可运行、可编译,大约在上午所描述的问题
  • 有多种方法可以从JPanel 中获取组件,您可以查看getComponent 方法。但是,最明智的方法是保留一个独立的二维字段引用数组,独立于JPanel 本身的实现。
  • 另见examplevariation

标签: java swing jpanel jcomponent chess


【解决方案1】:

我建议将当前棋盘位置存储在单独的数据结构中,而不是检查 JPanel。您通常会定义一个类来存储具有访​​问器功能的板,以访问这些部件,例如类似:

public class Board {
    private Piece[][] squares;
    ....
    code to set up board etc.
    ....
    public Piece getPiece(int x, int y) {
        return squares[x][y]; 
    }
}

这种方法为您提供了几个优势:

  • 您可以将棋盘位置的表示与 GUI 显示分离。这很重要 - 您通常希望在不受屏幕显示限制的情况下处理棋盘位置(例如评估它们、搜索可能的移动等)。
  • 您可以按照自己喜欢的方式构建板的内部表示,同时为使用该板的其他代码提供一个很好的封装视图
  • 性能会更好:与查询/修改 GUI 组件树相比,电路板的简单内存表示更轻量级且访问速度更快。

【讨论】:

    【解决方案2】:

    给我发消息,我遇到了电脑问题,目前似乎无法发表评论,但我前段时间做了一个跳棋游戏,我会把源代码发给你。它不完整,但它确实绘制了棋盘和棋子。它还检查鼠标点击和可玩方块。它可能有用作为参考。对您的问题的快速回答是我不会使用JPanel,而是创建一个扩展RectangleRectangle2D 的空间类,这些类具有执行您想要的操作的方法,据我所知@987654324 @class 没有。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 2022-06-17
      • 2014-03-02
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多