chess相关内容

如何有效地编码/解码压缩的位置描述?

我正在为日本象棋变体编写一个表库。为了索引表基,我将每个象棋位置编码为整数。在编码步骤之一中,我对棋子在板上的位置进行编码。由于实际方法有点复杂,所以让我以一种简化的方式来解释问题。 编码 在残局表库中,我有(假设)我要在9个正方形的棋盘上分配六个不同的棋子。我可以用六元组( a , b , c , d , e , f ),其中每个变量 a 到 f 的数字都是0到8之间的数字(包括0和 ..
发布时间:2020-10-01 18:36:26 其他开发

quiscence搜索效果

这是两个问题。我整理了一个简单的国际象棋引擎,该引擎执行Alpha-Beta搜索,然后在最后进行静态搜索。静态搜索正在影响性能。问题是,这是否可以接受对性能的影响?如果不是,那么该怎么做才能解决此问题? 性能影响如下图所示。 请注意,这些统计数据是在比赛中期考虑的。 FEN为: r3k2r / pb2qpbp / 1pn1pnp1 / 2PpP3 / 2B2B2 / 2N2N2 ..
发布时间:2020-10-01 18:35:23 其他开发

将Chess Engine连接到使用Java语言制作的现有GUI

我已经编写了自己的GUI,用于下棋和教学象棋。 GUI的外观是使用HTML编写的,而部件的行为则是使用JavaScript编写的。目前,该程序未遵循任何国际象棋规则。用户应正确遵守国际象棋的规则。这样可以自由设置非法位置或多次移动同一侧。在尝试向初学者教授国际象棋时,这非常有用。 我现在正在考虑要将程序连接到国际象棋引擎的想法。我不知道如何去做。大多数象棋引擎,如StockFish或Rybk ..
发布时间:2020-10-01 18:34:20 其他开发

对计算机编程以下棋时,如何为棋盘建模?

您将使用什么数据结构表示计算机国际象棋程序的国际象棋棋盘? 解决方案 对于严肃的国际象棋引擎,使用位板是在内存中表示棋盘的一种有效方法。位板比任何基于数组的表示形式都要快,尤其是在64位体系结构中,位板可以容纳在单个CPU寄存器中。 位板 位板的基本思想是用64位表示每种棋子类型。在C ++ / C#中,它将为 ulong / UInt64 。因此,您将维护12个 UInt64 ..
发布时间:2020-10-01 18:33:16 其他开发

如何使用对的所有可能组合(+-1,+-2)进行循环

我正在画一个国际象棋骑士的可能路径,并且一个情况看起来像这样: if(boundsOK(x + 1,y + 2)){ temp = boardArray [x + 1] [y + 2]; if(isLegalMove(x,y,x + 1,y + 2)!= MoveType.NONE){ move.add(x); move.add(y); moves.add(x + 1) ..
发布时间:2020-10-01 18:33:11 Java开发

正则表达式根据之前匹配的内容进行匹配

我正试图编写一个正则表达式来验证代数象棋符号。这是我到目前为止的内容: / O-O(-O)? #Castling | [KQRBN] x?[a-h] [1-8] \ +? #最正常的举动和捕获 / 我迷失的地方是典当促销。 骑士,主教或中央典当只能在其起始文件或通过捕获在任一侧的文件上进行提升。车子卒可以通过直线移动或捕获到一侧来提升,具体取决于它在a ..
发布时间:2020-10-01 18:33:08 其他开发

使用Java在Eclipse中使用Unicode显示棋子

我只是想使用Java在日食中显示一些Unicode象棋符号,但是它只会打印出随机的矩形,并且除非最近棋子的样式发生了根本性变化-我不认为这是我想要的。 我的代码: 导入Java。 io.PrintStream; import java.io.UnsupportedEncodingException; 公共类ChessSymbols { public static void ..
发布时间:2020-10-01 18:33:04 Java开发

WPF中的棋盘

多年来,我一直使用Winforms进行开发,现在我想切换到WPF并制作棋盘。不幸的是,我不知道从哪里开始。使用WPF使我非常不确定,我感觉又像是菜鸟。有人可以概述基本设计吗?我想我会从8x8网格开始,将矩形用作正方形,将图像用作块。接着?我会丢失什么吗? 编辑:这只是关于用户界面; 解决方案 标准网格的替代方法是使用 UniformGrid ( msdn链接)。 (我认为)它可 ..
发布时间:2020-10-01 18:33:01 其他开发

如何在Python中与Chess引擎通信?

在胜利7上,我可以通过命令行与国际象棋引擎通信。在Win 7上使用 Stockfish 的小型示例会话: C:\run\Stockfish> stockfish-x64.exe Stockfish 2.2.2 JA SSE42 by Tord Romstad,Marco Costalba和Joona Kiiski 退出 C:\run\Stockfish> 第一 ..
发布时间:2020-10-01 18:32:57 Python

如何生成骑士的所有动作?

我正在用Python编写一个Chess程序,该程序需要生成骑士的所有动作。对于不熟悉国际象棋的人,骑士会以L形运动。 因此,给定位置(2,4)骑士可以移动到(0,3),(0,5),(1、2),(3、2 )等,总共(最多)八个不同的动作。 / p> 我想编写一个名为 knight_moves 的函数,该函数在列表中生成这些元组。在Python中最简单的方法是什么? def kni ..
发布时间:2020-10-01 18:32:54 Python

编写国际象棋引擎有哪些好的资源?

我对编写国际象棋引擎很感兴趣(主要是作为学习练习),并且对人们知道的可能感兴趣或使用的任何资源都非常感兴趣,包括任何真正的东西:论文,书籍,理论,教程,任何东西 解决方案 从我的档案中: 这是一个有用的 chess编程Wiki 。 这是对棋编程的简单介绍。 其中包含几个简单的分步操作 YouTube教程系列,从初学者到高级。 这是更多高级介绍。 这是 Adam Berent有 ..
发布时间:2020-10-01 18:32:52 其他开发

有没有一种有效的方法来使函数拖放多个png?

我正在做一个国际象棋游戏,但是我完全停留在拖放元素上,那里有一些指南,但是它们要么是拖动形状,要么只是拖动一个图像。 我尝试了几种代码变体,但全部都是50余行,只是为了移动一个 .png ,而大多数代码效率极低, / p> pygame.init() pygame.display.set_caption(“ Python Chess“) Clock = pygame.ti ..
发布时间:2020-10-01 18:31:47 Python

棋Che上的骑士最短路径

我一直在为即将到来的编程比赛做练习,但偶然发现了一个令我完全困惑的问题。但是,我觉得这似乎是我现在应该学习的概念,而不是用手指指望它永远不会出现。 基本上,它处理象棋上的骑士棋子板。系统将为您提供两个输入:开始位置和结束位置。然后目标是计算并打印骑士可以到达目标位置的最短路径。 我从来没有处理过最短路径的东西,甚至都不知道从哪里开始。我应采用什么逻辑来解决这个问题? P.S。如果 ..
发布时间:2020-10-01 18:30:40 其他开发

编程国际象棋AI

我正在尝试尝试编写国际象棋AI.我可以在.NET框架(甚至是Lua编写的国际象棋程序)中使用某些东西,让我编写和测试国际象棋AI,而不必担心真正的国际象棋游戏吗? 解决方案 不确定您要做什么. 如果您正在寻找现成的国际象棋GUI,则可以使用 WinBoard . 由于建立了通信协议,它与底层国际象棋引擎完全分离.这样,您的象棋引擎就变成了一个与GUI交换命令的控制台应用程序. ..
发布时间:2020-09-07 19:07:06 AI人工智能

实现alpha-beta修剪算法时函数中的奇怪行为

我已经实现了带有alpha-beta修剪功能的minimax算法.为了获得最佳效果,我使用rootAlphaBeta函数调用alpha-beta算法.但是,在rootAlphaBeta函数中,我发现了一些非常奇怪的行为.当我用ply为4调用rootAlphaBeta函数时,它将进行约20000次调用,但是当我直接调用alphaBeta函数时,它将仅进行2000次调用.我似乎找不到问题所在,因为通话 ..
发布时间:2020-09-07 18:55:21 AI人工智能

为国际象棋PGN文件生成语法时出错

我做了这个ANTLR4语法是为了解析Java程序中的PGN,但是我无法解决其中的歧义: grammar Pgn; file: game (NEWLINE+ game)*; game: (tag+ NEWLINE+)? notation; tag: [TAG_TYPE "TAG_VALUE"]; notation: move+ END_RESULT?; ..
发布时间:2020-09-03 00:18:09 其他开发

尾随/前导零计数为一个字节

我正在使用Java,并且正在编写国际象棋引擎. 我正在尝试查找字节中前1位的索引和后1位的索引. 我目前在Java中使用Long.numberOfTrailingZeros()(或类似的东西),并且希望模拟该功能,但字节除外. 会是这样吗? byte b = 0b011000101; int firstOneBit = bitCount ((b & -b) - 1); ..
发布时间:2020-07-29 21:22:29 其他开发

无法与"Stockfish-9-armv7"进行通信二进制文件

我正在Unity3D中开发国际象棋游戏.我想为Android平台开发它.对于AI,我正在使用Stockfish Chess Engine.我下载了适用于Android的Stockfish二进制文件,名为" Stockfish-9-armv7 ".我将此二进制文件放置在StreamingAssets文件夹中,以便在构建步骤中将其正确放入目标平台.一切正常,直到此处,即当我构建Unity项目时,文件都 ..
发布时间:2020-07-12 23:51:27 C#/.NET

在Java中向Negamax添加Alpha Beta修剪

我正在用Java开发国际象棋游戏,并且(我认为)已经为AI玩家成功实现了Negamax。我在向其中添加alpha beta修剪以改进算法时遇到了一些麻烦。我已经尝试按照以下教程和示例代码进行操作,但是无法理解其工作原理。 下面是我目前要采取最佳行动的代码: private Move getBestMove(){ System.out.println(“获取最佳移动”); Sys ..

如何为国际象棋编程神经网络?

我想编程一个象棋引擎,该引擎学会做出好动作并与其他玩家对抗.我已经编码了国际象棋棋盘的表示形式和一个输出所有可能动作的函数.因此,我只需要一个评估功能,该功能说明董事会的给定情况有多好.因此,我想使用一个人工神经网络,然后应该评估给定位置.输出应该是一个数值.值越高,白人球员的位置就越好. 我的方法是建立一个由385个神经元组成的网络:板上有6个独特的棋子和64个场地.因此,对于每个领域,我 ..
发布时间:2020-05-17 19:17:15 AI人工智能