当前位置: 首页 > 知识库问答 >
问题:

跳棋游戏:错误检查不正确?

支铭晨
2023-03-14

我正在为一项任务做一个跳棋游戏。除了一件奇怪的事之外,整个事情都在按它应该的方式运行。这是我的黑板:

我通过给出源行和列,然后是目标行和列来移动。

move(int srcR, int srcC, int destR, int destC)

如果我试图将一个工件移动到无效的位置(不是对角线),我应该打印出一个错误。所以如果我试着从5.2-

if(destR == srcR+1 || destR == srcR-1 &&
    destC == srcC+1 || destC == srcC-1){
        // code code code
}else
    message = "Invalid Move! Can only move diagonally one space.";

对于大多数情况,它都可以工作,但如果我尝试直接向下移动一个空间(例如,2 3-

我卡住了!你知道为什么会这样吗?如果需要,我可以发布更多代码。

共有3个答案

于嘉誉
2023-03-14

看起来不错。您只是忘记了在复合if语句周围添加右括号。所以,它在不应该的时候返回了真值。

郁鸿博
2023-03-14

我认为这很简单。只允许四次移动。

int deltaX = Math.abs(srcR - destR);
int deltaY = Math.abs(srcC - destC);
boolean validMove = deltaX == 1 && deltaY == 1;

当然,此检查允许向后移动。但向后移动的方向取决于演奏的颜色,以及是否通过到达另一端来推动乐曲。

谷泽宇
2023-03-14

按照你的逻辑,如果

destC == srcC-1

是true,整个表达式就会是true。你要注意Java评估布尔运算的顺序~必要时添加()~

 类似资料:
  • 错误消息: 我正在尝试用java构建一个跳棋游戏(目前在控制台中)。我有6门课: > 板:显示并跟踪板。它是一个名为mySquare的Square对象的2d数组。 CheckerMobile:包含来自X、fromY、toX、toY和布尔isAJump的变量。在Play中,我创建了一个CheckerMobile对象数组来找出哪些移动是有效的。 单件:单个棋盘格件。每个玩家都有一个由12件物品组成的数

  • 我试图创建象棋游戏,所以我为象棋工具创建抽象类(皇后,国王,车...)我还创建了king工具来检查我的代码: 并创建game_board类: 问题是,当我尝试向矩阵添加对象时,它的show me错误:1 IntelliSense:不允许抽象类类型“King”的对象:纯虚函数“chess_tool::legal_movement”没有覆盖器 ....

  • 嗨,我正在尝试构建一个跳棋游戏,但在计算如何用单个棋子填充2D阵列游戏板时遇到了问题。任何帮助都将不胜感激。 我有两个独立的类RedPiece和BlackPiece来实现接口块。在额外的类板中,我试图将块放在一边,但我遇到了一个问题,在构建新板时找不到可变块: 这是我到目前为止为SetBoard()所做的: 有什么想法吗?谢谢。

  • 五子棋(Gomoku)是一款经典的线上五子棋游戏,5 子连成一线者胜。  

  • 我目前正在编写我的第一盘国际象棋,我的棋子有一个小问题。我将在下面添加一些代码,但通常我想检查玩家移动某个棋子(在本例中为国王)的棋盘是否已经被另一个棋子占据,因为在这种情况下,另一个棋子将被杀死(如果棋子属于另一个玩家),或者移动是错误的(棋子被自己的棋子占据)。如果你对如何做有任何想法,我将不胜感激。顺致敬意, 公共抽象类文章{ } 公共类国王延伸件{ }

  • 我正在为跳棋电脑游戏做最后一年的机器学习项目。 在这个游戏中,我自动化了一个玩家(随机移动),我希望第二个玩家学习随机性,并通过更多的游戏和试验变得聪明。 正如我所说,第一个玩家是自动化的,所以它工作得很好,但是说到第二个玩家,我对它的动作有些问题。 我正在使用目标函数作为 > v(b)=w0 w1x1 w2x2 w3x3 w4x4 w5x5 w6x6 其中x1=白色碎片数量x2=黑色碎片数量x3