java - For 循环和 if 语句的行为很奇怪

标签 java for-loop point chess

我正在制作一个国际象棋游戏,到目前为止一切都很好,我现在正在编写每个棋子的规则。问题是 for 循环的行为很奇怪。它是针对主教的,所以 x 下降,y 上升。此时,每当我尝试将点添加到可能的移动中时,它都会表现得很奇怪

for (int i = 0; i < 8; i++) {
   Point newLoc = new Point(x-i, y+i);              

  if(team.equals("white")) {
    if(containsPiece(newLoc)) {
            if(ChessBoard.black.containsKey(newLoc)) {
                possibilities.put(newLoc, rating);
                break;
            }
            else {
                break;
            }
        } else 
            possibilities.put(newLoc, rating);
    }

containsPiece() 工作得很好,possibilities 是我存储可能的移动的 HashMap

在我看来,它应该工作得很好,因为如果 newLoc 处的图 block 是白色的,它不应该将其添加到可能的移动中,并且停止在该方向上进行任何移动。有谁明白为什么它似乎放弃了之前添加到可能性

中的所有可能的 Action

What it should look like

What it is looking like with the code above

最佳答案

i 应该从 1 开始,而不是 0,因为当 i==0 时, newLoc 是象的位置 ((x-0,y+0)),因此您可以从循环中中断,因为象是白色瓷砖。

关于java - For 循环和 if 语句的行为很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39367020/

相关文章:

java - 什么是短路,在 Java 编程中如何使用?

java - 使用 Apache POI 4.0 运行官方示例 LineChars 和 ScatterChart 时出现问题

java - GridLayout 的移动限制仅限于相邻的网格按钮

c# - 检查特定点 x,y 是否在矩形内

java - 使用 Java 日期,给定一年,我想要一个方法,该方法应该返回代表一周中给定日期的日期列表,共 52 次

c++ - 从具有重复键的多映射中仅删除一个元素

Javascript:使用for循环将数组插入数组

java - 为什么大型的计算循环无论输入如何都会产生相同的输出?

Mysql - 如何使用字段数据作为 POINT() 函数

java - 在 SSLHandshake 期间如何处理警告和致命警报