Questions tagged «chess»

27
国际象棋有一个完美的算法吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 改善这个问题 最近,我正在与一个非编码人员讨论国际象棋计算机的可能性。我在理论上并不精通,但我认为我已经足够了。 我认为不可能有一个总是在国际象棋上获胜或失败的确定性图灵机。我认为,即使您搜索player1 / 2动作的所有组合的整个空间,计算机在每个步骤中决定的单个动作都是基于启发式的。基于试探法,它不一定击败对手可以做的所有动作。 相反,我的朋友认为,如果计算机从未采取过“错误”举动(无论您如何定义),它总是会赢或平。但是,作为一名使用CS的程序员,我知道即使是明智的对手,即使您的明智选择也会迫使您最终做出“错误”举动。即使您什么都知道,您的下一个举动就是匹配启发式算法。 大多数象棋计算机都尝试将可能的最终游戏与进行中的游戏进行匹配,这本质上是一种动态编程回溯。同样,最终的比赛是可以避免的。 编辑:嗯...看起来我在这里弄乱了羽毛。非常好。 再想一想,解决象棋这样的有限游戏似乎没有理论上的问题。我认为国际象棋比棋子要复杂一些,因为胜利不一定是棋子的精疲力尽,而是队友。我最初的断言可能是错误的,但是我想我再次指出了(正式)尚未令人满意地证明的内容。 我想我的思想实验是,每当在树上取一个分支时,算法(或记忆的路径)就必须为对手移动的任何可能分支找到一条通往配偶的路径(不交配)。讨论之后,我将购买所有给定的内存,这些内存超出了我们的梦想。


16
棋Che上的骑士最短路径
我一直在为即将到来的编程比赛做练习,但偶然发现了一个我完全困惑的问题。但是,我觉得这是我现在应该学习的概念,而不是费力地讲它永远不会出现。 基本上,它处理棋盘上的骑士棋子。系统将为您提供两个输入:开始位置和结束位置。然后,目标是计算并打印骑士可以到达目标位置的最短路径。 我从来没有处理过最短路径的事情,甚至都不知道从哪里开始。我采用什么逻辑来解决这个问题? PS:如果有任何相关性,他们希望您通过允许骑士移动到由骑士可以(可能)进行的(可能)八次移动所形成的正方形的四个角来补充骑士的常规移动,以补充正方形的中心骑士的位置。

30
程序员难题:在整个游戏中对棋盘状态进行编码
严格来说不是一个问题,更像是一个难题... 多年来,我参与了一些新员工的技术面试。除了询问标准的“您是否知道X技术”问题之外,我还尝试了解它们如何解决问题。通常,我会在面试的前一天通过电子邮件将问题发送给他们,并希望他们在第二天提出解决方案。 通常,结果会很有趣-错误,但是很有趣-如果该人可以解释为什么采用特定方法,那么该人仍然会得到我的推荐。 所以我想我应该向Stack Overflow观众提出我的一个问题。 问题:您认为编码国际象棋游戏(或其子集)状态的最节省空间的方法是什么?也就是说,假设棋盘上的棋子是依法排列的,则对初始状态和游戏中所有后续棋步进行编码。 答案不需要任何代码,只需描述您要使用的算法即可。 编辑:正如其中一位海报指出的那样,我没有考虑过两次走步之间的时间间隔。也可以考虑将其作为可选的额外项目:) EDIT2:只是为了进一步说明...请记住,编码器/解码器是规则感知的。真正需要存储的唯一内容是播放器的选择-可以假定编码器/解码器知道其他任何内容。 EDIT3:在这里挑选获奖者将很困难:)很多很棒的答案!

3
国际象棋游戏的面向对象设计
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 1年前关闭。 改善这个问题 我试图了解如何以面向对象的方式进行设计和思考,并希望从社区中获得有关此主题的一些反馈。以下是我希望以面向对象的方式设计的国际象棋游戏的示例。这是一个非常广泛的设计,在此阶段,我的重点只是确定谁负责哪些消息以及对象之间如何交互以模拟游戏。请指出是否存在设计不良的因素(耦合度高,内聚力不良等)以及如何对其进行改进。 国际象棋游戏具有以下类别 板 播放器 片 广场 国际象棋游戏 董事会由正方形组成,因此可以使董事会负责创建和管理Square对象。每块也都在一个正方形上,因此每块也都有对其所在正方形的引用。(这有意义吗?)。然后,每一块负责将自己从一个正方形移动到另一个正方形。Player类拥有对他拥有的所有作品的引用,并且还负责其创建(玩家应该创建Pieces吗?)。播放器有一个方法takeTurn,该方法又调用属于棋子类的movePiece方法,该方法将棋子的位置从其当前位置更改为另一个位置。现在,我对董事会班级究竟应负责什么感到困惑。我假设需要确定游戏的当前状态并知道游戏何时结束。但是当一块改变的时候 的位置板应该如何更新?它是否应该在存在的碎片上保持独立的正方形阵列,并且随着碎片的移动而更新? 同样,ChessGame最初创建棋盘和玩家对象,然后分别创建正方形和棋子并开始模拟。简而言之,这可能就是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(); } 我不清楚董事会的状态将如何更新。作品应该对董事会有参考吗?责任在哪里?谁拥有什么参考?请帮助我提供您的意见,并指出此设计中的问题。我故意不关注任何算法或游戏玩法的更多细节,因为我只对设计方面感兴趣。我希望这个社区能够提供宝贵的见解。
88 chess  oop 

4
有什么好的写象棋引擎的资源?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 改善这个问题 我对编写国际象棋引擎感兴趣(主要是作为学习练习),并且对人们知道的可能感兴趣或使用的任何资源感兴趣,而实际上却是任何东西:论文,书籍,理论,教程,可能是有用。
80 resources  chess 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.