bitboard

    -3热度

    1回答

    我想编程我的第一个国际象棋引擎,我正在使用chessprogramming.wikispaces.com作为资源。我的第一个尝试是考虑到他们的性能特点以及深蓝等流行引擎使用位板的事实,然而,我发现实施非常困难,并得出结论,我应该从我的第一台发动机开始做小。我反而喜欢用8乘8阵列,但我想知道我的引擎与阵列相比使用位置板的强度。如果可能的话,请使用8乘8阵列为发动机的最大强度提供大致的国际象棋评级。

    0热度

    1回答

    好的我已经阅读了很多网络上的东西,其中大部分使用没有unsigned int的Java。我正在研究具有unsigned int的Objective-C。 让我们考虑以下情况。 板是这样的: A1是在左下角和是最显著位和H8是在右上角,是最显著位。 我已经构建了棋盘上所有位置的所有棋子的位移掩码。 假设下面的简单情况: 游戏将开始。所有作品都在他们的初始位置。 用户尝试将G1上的骑士移动到E2。 显

    0热度

    1回答

    所以我一直在围绕一个问题缠绕我的头。 我目前正在用Java编写一个基于棋盘的国际象棋引擎(它一直在计算一切)。到目前为止,所有的棋子/王/骑士移动都按预期工作,没有错误。 我需要帮助理解的是滑块移动的一代。我已经为每个方块/块生成了一系列空板移动。根据我目前的理解,我还需要开发一个包含每个平方的每个可能占用的数组 - 然后以某种方式根据各种方法查找该数组。 这种想法正确吗?是从0到2^63中选取每

    0热度

    2回答

    我正在编程一个国际象棋AI,并且遇到了一个我实现的方块表的问题。由于我只想每面有一个平方的表,我需要一个函数来翻转保存x轴值的一维数组。例如,该阵列: [ 2, 4, 5, 3, 5, 0, 1, 4, 2 ] 将被翻转以: [ 1, 4, 2, 3, 5, 0, 2, 4, 5 ] 我使用使用以下方法的嵌套循环来实现此为0x64阵列(注:实施例仅为3x3,但以下功能调整为8x8);然而,我想知道

    0热度

    1回答

    我试图在Swift中实现位板,并试图将一个64位整数存储到UInt64中,并发生溢出错误。 var white_queen_bb:uint64 = 0001000000000000000000000000000000000000000000000000000000000000 as UInt64; Integer Literal '1000000000000000000000000000000

    0热度

    1回答

    我正在一个2玩家棋盘游戏(如连接4),与参数电路板尺寸^h,瓦特。我想用hw大小的棋盘来检查获胜条件。 在象棋这样的游戏中,棋盘大小是固定的,棋盘通常用某种64位整数表示。当h和w不是恒定的,也许很大(假设30 * 30)是位面板的好主意?如果是这样,那么C/C++中的任何数据类型是否可以处理大型比特币保持其性能? 因为我目前正在使用python,所以这种语言的解决方案也被赞赏! :) 在此先感谢

    2热度

    1回答

    我想知道什么是实现棋盘引擎的正确方法。到目前为止,我对象棋引擎编程的基础知识做了一些研究,并做了一些笔记,主要是诸如minimax,alphabeta,静止搜索和高级评估函数等。 然后我拆我的项目分为3个部分分别是: GUI 董事会代表 实现超越极小极大搜索和未来的体面评估函数,静态位置 我使用位板来表示棋盘状态,以节省代表棋盘和计算游戏树时的时间。这是我的问题所在。 因为我不只是要复制别人的代码

    1热度

    2回答

    在我的国际象棋引擎,使用位棋盘为代表的董事会的状态的棋盘个人移动,产生一气呵成的假冒合法移动一大块,一个棋盘是结果。例如: 走卒: 小棋盘魔术后来: 在端部的棋盘是一个简单的可能的移动块。引擎如何通常采用这种棋盘,并从中产生个人动作?我是否必须迭代每一位以检查它是否已设置?迭代一个棋盘似乎藐视使用位面板的目的,这就是为什么我有点怀疑。 有没有更好的方法?

    1热度

    1回答

    我想打印出来,我正在实现使用位棋盘一盘棋。我很难想象如何去显示8x8网格和游戏块。 这里的链接到tutorial我下面的(虽然不完整)。 @white_pawn = 0b0000000000000000000000000000000000000000000000001111111100000000 @white_rook = 0b00000000000000000000000000000

    4热度

    3回答

    我试图处理位板,这需要我在64位无符号整数中设置一个特定的位。要设置位我,我执行一个按位或与有问题的位板,左移数字。 ​​ 它工作正常,从0位到第31位,但未能对位工作32到63我怀疑这是因为右侧的评价恰好是在32位整数。因此,我尝试了一个临时变量。 uint64_t temp = 0ULL; temp |= 1 << i; 也许它仍然评估作为一个32位整数的右侧,或者这是我无法弄清楚的其他