问题标签 [chess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 程序员之谜:在整个游戏中编码棋盘状态
严格来说不是一个问题,更像是一个谜......
多年来,我参与了一些新员工的技术面试。除了问标准的“你知道 X 技术吗”问题之外,我还试图了解他们如何处理问题。通常,我会在面试前一天通过电子邮件将问题发送给他们,并期望他们在第二天提出解决方案。
通常结果会非常有趣——错误但有趣——如果他们能解释为什么他们采取特定方法,他们仍然会得到我的推荐。
所以我想我会向 Stack Overflow 的观众提出我的一个问题。
问题:您能想到的对国际象棋游戏(或其子集)状态进行编码的最节省空间的方式是什么?也就是说,给定一个棋盘,棋子是合法排列的,对这个初始状态和玩家在游戏中采取的所有后续合法移动进行编码。
答案不需要代码,只需描述您将使用的算法。
编辑:正如其中一位海报指出的那样,我没有考虑移动之间的时间间隔。也可以随意将其作为可选的额外内容:)
EDIT2:只是为了进一步澄清......请记住,编码器/解码器是规则感知的。唯一真正需要存储的是玩家的选择 - 可以假设编码器/解码器知道其他任何内容。
EDIT3:在这里很难选出赢家:) 很多很棒的答案!
chess - 防止在线棋牌游戏作弊?
在许多在线国际象棋大厅中,我看到了“引擎”的实例,作弊者会在主游戏窗口的同时打开一个国际象棋程序。然后他会设置它,以便将对手的动作转发到计算机,然后他将复制计算机的动作,直到他(几乎总是)获胜。
作为游戏开发者和版主,遇到这种情况该怎么办?
wpf - WPF中的棋盘
多年来我一直使用 Winforms 开发,现在我想切换到 WPF 并制作棋盘。不幸的是,我不知道从哪里开始。使用 WPF 让我非常不确定,我又觉得自己像个菜鸟。有人可以概述一个基本设计吗?我想我会从一个 8x8 网格开始,并使用矩形作为正方形,图像作为碎片。进而?我错过了什么吗?
编辑:这只是关于用户界面;幕后发生的事情没有问题。
algorithm - 目前已知的计算机国际象棋最佳算法?
我只是想学习算法的名称..谢谢
c# - C#极小极大树实现
我正在尝试编写 C# Chess AI。
在那一刻,我必须建立我的 minmax 树。我尝试使用递归,但我的递归函数必须为每个节点调用自己大约 1 000 000 次。在大约... 60 000 次调用后,我得到了 Stack Overflow 异常。
javascript - JavaScript 中的国际象棋游戏
有没有纯用 JavaScript 编写的国际象棋游戏 API?没有闪光灯!有人知道国际象棋游戏中使用的算法(一般)吗?
java - Java 枚举的按位运算;回复:国际象棋EG
如果我在 C 中保留一个表示棋盘的数组,我可能会用大致如下所示的枚举项填充它:
因此允许看起来像这样的逻辑:
在 Java 中,我只是发现不支持对枚举的按位 & 操作,此外,相当棒的 EnumSet 并不容易应用,因为一块不能是黑白的,车不能是国王的。
所以我的想法是这样的:
显然我只需要一个或另一个(and 操作,或初始化值)。如果我可以在它自己的定义中使用枚举类型,那肯定会很棒,但我不能。所以像这样的行:
出局。
我的问题是什么?有没有更好的方法,我错过了。我也可以将序数的 int 解析为枚举定义的值,避免整个 case 语句吗?
c# - 如何开发多人国际象棋?
我想用 c# 开发一个多人国际象棋,但我不知道如何用 c# 实现国际象棋的限制规则,老实说,我一生中从来没有做过一点游戏编程,所以我不知道如何在这个领域工作。
有没有简单的国际象棋程序源代码示例?坦率地说,我没有成功搜索国际象棋源代码或如何在国际象棋中实现移动规则。
所以如果你认为你可以帮助我,那将不胜感激。
问候。
performance - 人工智能国际象棋有效走法
我正在尝试编写 AI Chess,但遇到了问题。我已经准备好棋子移动规则,并且我正在尝试删除无效的移动(让国王检查等)。我写了这样的东西:
但是,我使用的是 minimax + alpha beta 并且验证使我的搜索速度非常慢。
chess - 棋盘上骑士的最短路径
我一直在为即将举行的编程比赛练习,我偶然发现了一个让我完全困惑的问题。然而,我觉得这是一个我现在应该学习的概念,而不是指望它永远不会出现。
基本上,它处理棋盘上的骑士棋子。您有两个输入:起始位置和结束位置。目标是计算并打印骑士到达目标位置的最短路径。
我从来没有处理过最短路径的事情,我什至不知道从哪里开始。我采用什么逻辑来解决这个问题?
PS如果有任何相关性,他们希望您通过允许骑士移动到由骑士可以进行的(可能)八个动作形成的广场的四个角落来补充骑士的正常动作,因为广场的中心是骑士的位置。