java - 与多个类(class)一起工作

标签 java

我是java新手,使用udacity.com在家学习java,他们最喜欢给出一个问题,我被困住了,无法让它工作。

项目只是检查国际象棋游戏中棋手的走法是否出界,然后查看皇后的走法是否有效。我们必须看到这三件事应该起作用。

  1. 在 Queen 类中,覆盖 isValidMove方法
  2. 首先调用家长的isValidMove检查边界。
  3. 添加更多代码来检查皇后特定举动的有效性。

我有主类、游戏类、位置类、棋子类(父类)皇后类(子类)。 我让 1 和 3 工作,但不明白如何让第二个工作,如果我尝试调用 Piece.isValidMove ,它会给我错误在main之前Queen.isValidMove .

我的代码如下

Main.java

public class Main {
    public static void main(String[] args) {
        Piece piece = new Piece();
        Queen queen = new Queen();
        Position testPosition = new Position(3,7);
        if(queen.isValidMove(testPosition)){
            System.out.println("Yes, I can move there.");
        }
        else {
            System.out.println("Nope, can't do!");
        }
    }
}

Game.java

public class Game {
    Piece [][] board;
    // Constructor creates an empty board
    Game(){
        board = new Piece[8][8];
    }
}

Position.java

public class Position {
    int row;
    int column;
    // Constructor using row and column values
    Position(int r, int c){
        this.row = r;
        this.column = c;
    }
}

Piece.java

public class Piece {
    Position position;

    boolean isValidMove(Position newPosition){
        if(position.row>0 && position.column>0
                && position.row<8 && position.column<8){
            return true;
        }
        else{
            return false;
        }
    }
}

Queen.java

public class Queen extends Piece {
    int row;
    int column;
    boolean isValidMove(Position newPosition){
        if(newPosition.column == this.column || newPosition.row == this.row|| Math.abs(newPosition.column - this.column) == Math.abs(newPosition.row - this.row)){
            return true;
        }
        else{
            return false;
        }
    }
}

谢谢。

最佳答案

but can't understand how to get 2nd working it gives me error if i try calling Piece.isValidMove in main before Queen.isValidMove

该任务表示您需要在 Queen.isValidMove 中调用父级的 isValidMove,而不是在 Main 中。您需要的语法是super.isValidMove。所以在Queen.java中,执行

boolean isValidMove(Position newPosition){
    // combine super.isValidMove(newPosition) and your current code
}

您不需要更改Main

关于java - 与多个类(class)一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46388660/

相关文章:

java - 如何使用 JavaFX 定期显示一幅图像

Java/.NET 生成具有 cookie 设置的浏览器

java - 为 JTable 创建多行标题

java - Hibernate、泛型、类型安全 : Unchecked cast from List to List<T>

java - 在javascript中加载多个html文本框

java - 检索视频的缩略图

java - 如何获取任何网站的 JSON 数据以在我的 android native 应用程序中解析和使用

输入后显示两次的 Java 菜单

java - SLF4J 关于多重绑定(bind)的警告

java - 如何对 Springboot API 进行端到端测试?