我是java新手,使用udacity.com从家里学习java,他们给出了一个问题,我被困住了,无法让它工作。
项目只是检查玩家移动是否在国际象棋游戏中不受限制,然后查看女王的移动是否有效。我们必须看到这三件事应该有用。
isValidMove
方法isValidMove
以检查边界。我有Main class,Game class,Position class,Piece class(Parent class)Queen class(child)。
我有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;
}
}
}
谢谢。
答案 0 :(得分:1)
但是如果我在Queen.isValidMove之前尝试在main中调用Piece.isValidMove,则无法理解如何获得第二次工作会给我错误
该任务表示您需要致电isValidMove
中的父Queen.isValidMove
,而不是Main
。您需要的语法是super.isValidMove
。所以在Queen.java
中,请执行
boolean isValidMove(Position newPosition){
// combine super.isValidMove(newPosition) and your current code
}
您不需要更改Main
。