我是java新手,使用udacity.com在家学习java,他们最喜欢给出一个问题,我被困住了,无法让它工作。
项目只是检查国际象棋游戏中棋手的走法是否出界,然后查看皇后的走法是否有效。我们必须看到这三件事应该起作用。
- 在 Queen 类中,覆盖
isValidMove
方法 - 首先调用家长的
isValidMove
检查边界。 - 添加更多代码来检查皇后特定举动的有效性。
我有主类、游戏类、位置类、棋子类(父类)皇后类(子类)。
我让 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/