Javaでチェスプログラムをコーディングしようとしていますが、 getColor() メソッドに問題があります。Gridworld のコードの一部に依存しています。各作品のクラスを作成しました。移動時に選択可能な場所の ArrayList を作成するメソッドがあるという意味で、作品を Gridworld のクリッターのように機能させたいと考えています。これは私が問題にぶつかったところです。getColor() メソッドを作成しようとしましたが、何らかの理由で機能しません。私は先生に助けを求めましたが、彼は私と同じように戸惑いました。デバッグしてみましたが、問題はありません。私が得る正確なエラーはこれです:
「シンボルが見つかりません - メソッド getColor()」
ここにすべてのコードがあります。記録のために BlueJ を使用しています。
import java.util.ArrayList;
import java.awt.Color;
public interface Piece
{
public enum PieceType {pawn, rook, knight, bishop, queen, king}
}
次は ChessPiece 抽象クラスです。ただし、selectMoveLocation メソッドにはまだ取り組んでいません。
import java.util.ArrayList;
import java.awt.Color;
import info.gridworld.grid.Location;
import info.gridworld.grid.BoundedGrid;
public abstract class ChessPiece implements Piece
{
Color colorOfPiece;
PieceType typeOfPiece;
public BoundedGrid<Object> board;
public Location location;
public ArrayList moveLocations;
public ChessPiece( Color whiteOrBlack, PieceType selectedType)
{
if (whiteOrBlack == Color.BLACK || whiteOrBlack == Color.WHITE)
{
if ((selectedType == PieceType.pawn || selectedType == PieceType.rook || selectedType == PieceType.knight || selectedType == PieceType.bishop ||selectedType == PieceType.queen || selectedType == PieceType.king))
{
colorOfPiece = whiteOrBlack;
typeOfPiece = selectedType;
location = null;
}
}
}
public Color getColor()
{
return colorOfPiece;
}
public void makeMove(Location newLocation)
{
if (board == null)
throw new IllegalStateException("This actor is not in a board.");
if (board.get(location) != this)
throw new IllegalStateException(
"The board contains a different actor at location "
+ location + ".");
if (!board.isValid(newLocation))
throw new IllegalArgumentException("Location " + newLocation
+ " is not valid.");
if (newLocation.equals(location))
return;
board.remove(location);
location = newLocation;
board.put(location, this);
}
public Location getLocation()
{
return location;
}
public BoundedGrid<Object> getBoard()
{
return board;
}
public Location selectMoveLocation(ArrayList<Location> moveLocations)
{
Location selection;
selection = null;
//mouse stuff
return selection;
}
}
そして最後に、コンパイラ エラーを引き起こすコードです。これは、King ピースの単なるコードですが、実装しようとしたすべてのピースでエラーが発生します。
import java.awt.Color;
import java.util.ArrayList;
import info.gridworld.grid.Location;
import info.gridworld.grid.BoundedGrid;
//must fix problem with getColor()
public class King extends ChessPiece
{
ArrayList<Location> moveLocations;
// private Color colorOfPiece;
public King( Color whiteOrBlack )
{
super(whiteOrBlack, PieceType.king);
//colorOfPiece = whiteOrBlack;
}
public void getMoveLocations()
{
moveLocations.clear();
for (int i = 0; i < 360; i += 45)
{
if ((getBoard().isValid(getLocation().getAdjacentLocation(i))) && (((getBoard().get(getLocation().getAdjacentLocation(i))) == null) || (((getBoard().get(getLocation().getAdjacentLocation(i)))).getColor() == colorOfPiece)))
{
moveLocations.add(getLocation().getAdjacentLocation(i));
}
}
}
}