-4

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

4

2 回答 2

4

我建议不要检查 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 组件树相比,电路板的简单内存表示更轻量级且访问速度更快。
于 2012-12-29T10:01:07.617 回答
0

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

于 2012-12-29T11:37:33.777 回答