Tag: 象棋

写一个象棋引擎有什么好的资源?

我有兴趣编写一个国际象棋引擎(主要是作为一个学习练习),并会对任何人都知道的可能感兴趣或使用的资源感兴趣,任何事情都是真的:论文,书籍,理论,教程,任何可能有用。

面向对象的国际象棋游戏devise

我试图感受到如何以面向对象的方式进行devise和思考,并希望得到社区关于这个主题的一些反馈。 以下是我希望以面向对象方式devise的国际象棋游戏的一个例子。 这是一个非常广泛的devise,我在这个阶段的重点只是确定谁负责什么消息以及对象如何相互作用来模拟游戏。 请指出是否存在不良devise(高耦合,不良内聚等)的元素以及如何改进。 国际象棋游戏有以下类 板 播放机 片 广场 ChessGame 董事会是由广场组成,所以董事会可以负责创build和pipe理Square对象。 每件作品也放在一个正方形上,因此每件作品也有一个对正方形的引用。 (这有道理吗?) 每件作品都有责任从一个方块移动到另一个方块。 玩家类拥有对他拥有的所有棋子的引用,并且也负责他们的创造(玩家是否应该创build棋子?)。 玩家有一个方法takeTurn,它依次调用一个方法movePiece,它属于一个Class类,它将棋子的位置从当前位置改变到另一个位置。 现在我很困惑理事会class子究竟要负责什么。 我认为需要确定游戏的当前状态,并知道游戏何时结束。 但是,当一块改变它的位置如何董事会得到更新? 它应该保持一个单独的方块arrays存在,并得到更新作为件移动? 此外,ChessGame会主动创buildBoard和Player对象,然后分别创build正方形和块,然后开始模拟。 简而言之,这可能是ChessGame中的代码的样子 Player p1 =new Player(); Player p2 = new Player(); Board b = new Board(); while(b.isGameOver()) { p1.takeTurn(); // calls movePiece on the Piece object p2.takeTurn(); } 我不清楚董事会的状态将如何更新。 应该有一个板参考? 责任在哪里呢? 谁拥有什么参考? 请帮助我的投入,并指出在这个devise中的问题。 我故意不专注于任何algorithm或游戏玩法的细节,因为我只对devise方面感兴趣。 我希望这个社区能够提供有价值的见解。

是否将JLabel添加到JPanel“隐藏”JPanel?

如果我在GridLayout中有几个JPanel,每个都有一个MouseAdapter,然后创buildJLabel(带有文本)并添加到每个JPanel。 注意JLabels没有监听器。 如果我渲染这个并尝试点击一个JPanel,或者最终尝试点击JLabel,那么MouseAdapter会将这个注册为一个事件? 基本上我想JPanels注册事件和JPanels只显示文本顶部的JPanels。 此外,面板具有背景颜色。 如果JLabel“隐藏”注册事件,我该如何解决这个问题?