- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个包含所有 Piece 对象的二维数组,每个对象都是 Rook、Bishop、King 等的实例...
如何判断从 srcX,srcY 到 dstX,dstY 的路径是否被另一 block 挡住了?
我唯一能想到的就是涉及大量繁琐的代码=/
最佳答案
您对“大量乏味代码”的评论过于夸张了。棋盘上的任何路径都不会超过八个方 block ,所有这些方 block 都可以通过一个简单的算法来跟踪——递增或递减行和/或列计数器。 (马除外,它只能移动到八个方格并且不能被阻挡。)我怀疑任何棋子的代码都不会超过二十行。
例如这里是主教的代码:
// check move legality not taking into account blocking
boolean canMoveBishopTo(int srcx,int srcY,int destX,int destY) {
if (srcX<0 || srcX>7 ||srcY<0 || srcY>7 || destX<0 || destX>7 ||destY<0 || destY>7) {
throw new IllegalArgumentException();
}
if ((srcX==destX || srcY==destY) {
return false;
}
if (Math.abs(destX-srcX) == Math.abs(srcY-destY) {
return true;
}
return false;
}
boolean isBishopMoveBlocked(int srcX,int srcY,int destX,int destY) {
// assume we have already done the tests above
int dirX = destX > srcX ? 1 : -1;
int dirY = destY > srcY ? 1 : -1;
for (int i=1; i < Math.abs(destX - srcX) - 1; ++i) {
if (pieceOnSquare(srcX + i*dirX, srcY + i*dirY) {
return false;
}
}
return true;
}
关于java - 如何确定国际象棋中的路径是否没有障碍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4305205/
我正在尝试从标准输入中获取一行。据我所知,我们永远不应该使用gets的手册页中所说的gets: Never use gets(). Because it is impossible to tell w
很多问题SO和文章/书籍,例如https://mirrors.edge.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.201
我认为 Coffeescript 是一门很棒的语言!我正在寻找一些将静态分析添加到 Coffeescript 的项目/问题/功能。然而,经过一番搜索后,我发现 Coffeescript faq和 th
以下查询返回过去 12 个月(针对特定客户)每周的订单总量: SELECT DATEPART(year, orderDate) AS [year], DATEPART(month, or
我觉得这可能是一个错误,任何人都可以重现或看到我做事方式的一些错误。 我正在尝试将 GKPolygonObstacle 添加到 iOS 或 macOS Playground 中的 GKMeshGrap
我的 SKSpriteKit 应用程序中有一个单独的“Floor”类。当我第一次创建这个类时,我使用 在整个框架周围设置了一个屏障 self.physicsBody = SKPhysicsBody(e
我有我正在尝试建模的半连续数据(许多精确的零和连续的正结果)。我从 Zuur 和 Ieno 的 R 中零膨胀模型初学者指南中学到了大量关于零质量的建模数据,它区分了零膨胀 Gamma 模型和他们所描述
以下代码实现了一些无锁(且无原子!)的线程间通信,这些通信需要使用存储和加载内存屏障,但是C++ 11 release-acquire语义不适当,也不保证正确性。实际上,该算法暴露了对发布获取语义的某
我指的是在 https://developer.android.com/training/constraint-layout/index.html#constrain-to-a-barrier 上使用
我正在一个非常好的 IBM x 服务器(4 个 8 核 CPU)上运行一些模拟应用程序的 x64 版本。操作系统是 Linux - redhat 5.6 x64 内核。因此,此应用恰好在需要超过 2
我是一名优秀的程序员,十分优秀!