私はudacity.comを使用して自宅でJavaを学習することに新しいので、私は立ち往生していません。複数のクラスを扱っています
プロジェクトは、プレイヤーの移動がチェスゲームで逸脱していないかどうかを確認してから、クイーンズの移動が有効かどうかを確認するだけです。私たちはこれら3つのものがうまくいくのを見なければなりません。女王のクラスで
- 、
isValidMove
メソッドをオーバーライド - まず境界をチェックするために、親の
isValidMove
を呼び出します。 - クイーンの具体的な移動の有効性を確認するコードを追加します。
私は、メインクラス、ゲームクラス、ポジションクラス、Pieceクラス(Parentクラス)、Queenクラス(Child)を持っています。 私は1と3を稼働していますが、Queen.isValidMove
の前にPiece.isValidMove
をメインに呼び出すと、2番目の作業を行う方法を理解できないため、エラーが表示されます。
私のコード
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;
}
}
}
ありがとうございました。
正確に表示されているエラーは何ですか? –
私は 'super.isValidMove()'と思っています。 –
ようこそスタックオーバーフロー!デバッグの助けを求める質問(なぜ "このコードは動作しないのですか?")には、質問自体に必要な動作、_a特定の問題またはerror_および_を最短のコードで必要なもの(好ましくは10行以下) 。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[最小限で完全で検証可能なサンプルの作成方法](http://stackoverflow.com/help/mcve)スレッド "メイン" java.lang.NullPointerExceptionがPiece.isValidMoveで \t(Piece.java:5)Queen.isValidMoveで \t(Queen.java:5)で –