- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个函数可以检查我的黑白棋游戏中的有效 Action 。我查看未占据的空间,并检查任意 8 个方向上的相邻空间是否是相反的棋子。 (如果我是黑人,我会寻找白色)现在,如果我找到一个相邻的棋子,我应该继续朝那个方向看,看看我自己的棋子是否在最后,然后我返回 true,否则如果它是一个未被占用的棋子空间或板外边界,我返回 false。
我的功能似乎无法正常工作,因为我打印出了错误的 Action 。
bool checkLegalInDirection(char boardgame[26][26], int size, int row, int col, char color) {
int currentRow, currentCol;
for (int deltaRow = -1; deltaRow < 2; deltaRow++) {
for (int deltaCol = -1; deltaCol < 2; deltaCol++) {
if (deltaRow == 0 && deltaCol == 0) {
break;
} else {
row = row + deltaRow;
col = col + deltaCol;
if (positionInBounds(size, row, col)) {
while (boardgame[row][col] == OppositeColor(color)) {
currentRow = row + deltaRow;
currentCol = col + deltaCol;
if (positionInBounds(size, currentRow, currentCol)) {
if (boardgame[currentRow][currentCol] == color) {
return true;
} else {
return false;
}
}
}
}
}
}
}
}
deltaRow 和 deltaCol 是在每个方向上的增量,并添加一次以继续在指定位置搜索。 PositioninBounds 是一个我必须确保我的搜索位于棋盘边界内的函数。我的 deltarow 和 deltacol 不能同时为 0,因此我需要跳过该步骤(我可能做错了)。 Oppositecolor 是一个函数,它返回我自己的作品的相反颜色。
最佳答案
我认为您的代码有多个错误。
当您应该继续下一次迭代时,您的代码错误地中断了 for 循环(如 chux 所提到的)。
改变...
if (deltaRow == 0 && deltaCol == 0) {
break;
} else {
...
}
根据 chux 的建议...
if (deltaRow == 0 && deltaCol == 0) {
continue;
} else {
...
}
或者更简单的解决方案......
if (deltaRow != 0 || deltaCol != 0) {
...
}
在 deltaRow/deltaCol 循环内,您的代码错误地修改了您的代码在以后的循环迭代中需要的原始行/列值。
你可以改变...
row = row + deltaRow;
col = col + deltaRow;
到...
currentRow = row + deltaRow;
currentCol = col + deltaRow;
在 while 循环内,您的代码错误地返回 false。在完成所有 for 循环之前,您不能返回 false。
在进入while循环之前,需要检查相邻空间是否在边界内且颜色相反...
if (positionInBounds(size, currentRow, currentCol) && boardgame[currentRow][currentCol] == OppositeColor(color)) {
如果是这样,则跳过所有相邻的相反颜色...
while (positionInBounds(size, currentROw, currentColor) && boadgame[currentRow][currentCol] == OppositeColor(color)) {
{
currentRow = currentRow + deltaRow;
currentCol = currentCol + deltaCol;
}
跳过相反的颜色后,您需要检查相同的颜色。如果是,则返回 true。
if (positionInBOunds(size, currentRow, currentCol) && boardgame[currentRow][currentCol] == color) {
return true;
}
您的代码应该仅在检查所有方向后返回 false...
for (int deltaRow = -1; deltaRow < 2; deltaRow++) {
for (int deltaCol = -1; deltaCol < 2; deltaCol++) {
....
}
}
return false;
关于检查黑白棋所有 8 个方向的有效移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33489949/
我正在尝试在 Eclipse 中编写一个黑 jack 程序,但当该程序处理 Ace 时遇到问题。我询问用户是否希望 A 值 1 或 11。确实如此,但当我输入值时,它会给出错误消息 "Exceptio
我在黑 jack 游戏中需要帮助。我在数组中有一副牌,每次我取出一张牌并处理它时,数组都会被重新分配为小于大小的一个。所以我有这个循环,向每个第 n 个玩家发两张牌 deck=crea
我正在尝试检测黑点或其中有黑点的圆圈(我在下图中用箭头指向的圆圈)。 我目前的方法是在 OpenCV 中使用 HoughCircles 函数来检测半径大于 2 像素的圆。我对社区的问题是:假设我检测到
我正在用 python 编写一个非常基本的轮盘模拟器。目前,我只专注于红/黑投注(基本上与投注正面或反面相同,使用硬币)。 我的代码有各种问题。请原谅我对语言的基本了解。 import random
目前,我正在尝试使用 javascript 制作黑 jack 游戏。 到目前为止,我有庄家牌和闲家牌。当玩家决定再拿一张牌时就会出现问题。似乎 document.write 在将字符串写入网页时迟到了
b/w PRLock 和 PRRWLock 有什么区别由 nspr 库提供? 最佳答案 我对这个库一无所知,但从名字可以看出,一个是标准锁,另一个是读写器锁。第一个总是提供独占访问,第二个允许多个并发
如何使用 ios5 将 RGB 图像转换为 1 channel 图像(黑/白)? 输入图像通常是书页的照片。 目标是通过将复印件转换为 1 channel 图像来减小复印件的大小。 最佳答案 如果我理
我是一名优秀的程序员,十分优秀!