- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,所有白兵的攻击都是通过向左移动 7 位或 9 位(或向右移动,我可能错了,但我认为这很容易理解要点)生成。
所以看起来像这样的白色棋子位板
00000000000000000000000000000000000000001111111100000000
将转移到这里
00000000000000000000000000000001111111100000000000000000
但是,如果您尝试在 8x8 阵列中描绘此示例,其中一个棋子会穿过棋盘的边缘。
那么,当移动位以生成攻击时,引擎如何防止自己生成穿过棋盘边缘的攻击?
最佳答案
我们将添加一些空格。假设你从一个棋子位置开始:
00000000
00000000
00000000
00000000
00000000
10000000
01100101
00011010
00000000
00000000
换行只是为了便于阅读,一切都是打包的位。棋子可以移动到哪里?
00000000
00000000
00000000
00000000
10000000
01100101
00011010
00000000
00000000
00000000
在这里,越过边缘的唯一风险是在顶部,这很容易处理。
接下来,棋子可以拿去哪里呢?天真的解决方案是采用上面的“移动”掩码,并将其左右移动 1。如您所见,这会导致环绕。
00000000
00000000
00000000
00000001
00000000
11001010
00110100
00000000
00000000
00000000
|
00000000
00000000
00000000
00000000
01000000
00110010
10001101
00000000
00000000
00000000
(如果您不喜欢我选择的字节顺序,我深表歉意)。
我们可以通过一些掩蔽来解决这个问题。将环绕的位位于已知位置。所以我们在进行操作之前将它们屏蔽掉。
这个面具:
11111110
11111110
11111110
11111110
11111110
11111110
11111110
11111110
在我们向右移动之前,以及
01111111
01111111
01111111
01111111
01111111
01111111
01111111
01111111
在我们向左移动之前。
因此,要查看受兵威胁的地点,其中“前进”是右移,我们这样做:
auto pawn_moves = pawn_mask >> 8;
auto pawn_left_take = (pawn_moves & not_left_column) << 1;
auto pawn_right_take = (pawn_moves & not_right_column) << 1;
auto pawn_take = pawn_left_take | pawn_right_take;
就这样。
可以对其他情况进行类似的屏蔽。例如,如果我们正在计算骑士拿面具,我们需要 8 个面具和 8 个类次,然后将它们放在一起。
对于向右移动 3 的车,您屏蔽掉右边的 3 列,然后在车 mask 上进行右 3 移动。
然而,在某些时候,您可能想要使用内部函数和 SIMD 处理;因此,您所拥有的准确的位操作将取决于您的硬件。也许将 8 个 8 位值解包为 8 个 24 位值,在那里进行无掩码操作,然后提取中间 8 位是您特定硬件上最快的方法。
关于c++ - 在使用位板的国际象棋引擎中,如何检测边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67680354/
我有一串数字。我需要检查边缘上的数字是否对称,这意味着它们以 2 为模时具有相同的余数。 我已经编写了一个有效的代码,但我对此感到不安,在一些失败之后我想出了这个代码: int PaliPair(ch
我要删除黑色蒙版和人体图像之间的白色边框 图像输入示例: 厚度为1的图像输出: 厚度为2的图像输出: 我尝试了一些在这里找到的具有模糊和阈值的游戏 我还使用此代码查找和绘制轮廓 thickne
这应该是一个在用户悬停时打开的飞出菜单。 这在 Chrome 中工作得很好,我已经尝试了多种方法(使用 CSS :hover,(mousenter)和(mouseleave ) 问题是 - 使用 Ed
我有一个 Apache 服务器 v2.4.43 为我的网站提供服务,我使用一个简单的 .htpasswd,我使用指令“AuthUserFile ”在 .htaccess 中调用它来进行身份验证。 现在
如何仅使用剪辑路径创建波浪边缘? 波浪应该是这样的图像: 最佳答案 您应该通过波函数及其频率生成此剪辑路径。 我用过 cos()在 PHP 中。您可以找到如下链接: https://repl.it/@
我有这张图: digraph G { 1 [label="car"]; 2 [label="x"]; 3 [label="car"]; 4 [label="y"]; 5 [label="cdr"];
我想强制点仅显示节点之间的垂直或水平边缘。 我在帖子 Family tree layout with Dot/GraphViz 中发现了类似的请求,但我不处理树,所以我希望有一个解决方案,无需插入额外
我已经设法让两个直方图重叠,但如果你仔细观察,条形开始倾斜并且没有完全重叠。 我已经调整了线宽和宽度,并没有改善。 我的目标是让所有的条形排列在彼此的顶部,黑边没有歪斜。 有什么办法解决这个问题 这是
我已经设法让两个直方图重叠,但如果你仔细观察,条形开始倾斜并且没有完全重叠。 我已经调整了线宽和宽度,并没有改善。 我的目标是让所有的条形排列在彼此的顶部,黑边没有歪斜。 有什么办法解决这个问题 这是
我一直在与 latex table 搏斗太久了。我需要一个具有居中标题的表格,以及包含可能环绕的文本的正文单元格。由于环绕要求,我使用 p{xxx} 而不是 l 来指定单元格宽度。这导致的问题是单元格
有没有办法平滑转换(平移和旋转)的 BufferedImage 的锯齿状边缘? 测试图像的放大 View : (请注意,这不是将要使用的实际 BufferedImage,仅用于此处演示)。 已使用双线
我在 my page 有一个旋转木马.我的父元素和子元素的边缘都是 flex 的,但是当您按“下一个”或“上一个”并滑动旋转木马时,子元素在移动时不会保持 flex 。我怎样才能避免这种情况? .ho
我在 .boxwrap 和 .lsmlbox + .rsmlbox 之间的嵌套 div 中添加了不必要的空格,这使得无法将 .smlbox + .rsmlbox 与 .box 对齐我相信这是一个比预期
我正在使用 Apple 的 ARKit 制作 AR 应用程序,我想制作盒子的线框轮廓。代码中描述并显示在图片中的那个在盒子的每个面上绘制斜边。它还隐藏了盒子另一侧的角。 Scene Kit 中有没有办
下图仅包含阈值处理后的黑色和白色像素。我在此图像的顶部绘制了一个灰色的旋转矩形。现在我想计算这个旋转矩形内的黑色像素数,但不包括白色矩形矩形外的黑色像素(即白色矩形内的像素数)。 做到这一点的最佳方法
你们如何处理边际 CSS?我所说的边缘是指需要斜体或粗体的单个单词或短语。只用 声明一个“大胆”的类似乎很愚蠢 Bold { font-weight: bold; } 或者斜体,要么! Italic
好的。我知道有几十个类似的线程。我几乎检查了每一个,但找不到可行的解决方案。我试过负边距、最小高度、最大高度、绝对页脚、正文背景颜色,甚至将溢出:隐藏到页面中的所有主要容器。然后将 clearfix
我网站的一部分使用代码使用倾斜边缘: -webkit-clip-path: 多边形(0% 0%, 100% 0%, 81% 100%, 0% 100%) 这在 Chrome 中运行良好,但不适用于任何
我一直在创建这个网站,并且进展顺利。然后我试着给它添加一个模态,但一切都有点走下坡路。问题是在添加模式后,Chrome 中的图像对齐方式发生了变化。它在 Edge 中运行良好。现在我知道这可能是因为
如果我在 Matlab 中使用 image() 命令制作一个 4 x 4 像素的图像,它会将刻度线居中放置在像素的中间。我希望刻度线以像素的左下角为中心。有什么方法可以做到这一点吗? 最佳答案 您可以
我是一名优秀的程序员,十分优秀!