チェス ゲームの設計について助けが必要です。私はすでに始めていますが、私は Java にかなり慣れていないため、実際にはまったくプログラミングに慣れていません。
とにかく、抽象クラス Piece とサブクラスとしてのさまざまな部分があります。すべてのサブクラスに対して定義したい抽象クラスにメソッド movePiece があります。
現在行われているのは、駒をある正方形から別の正方形に移動することだけです。Piece オブジェクトを保持できる Square クラスがあり、ボードは 64x1 Square 配列で構成されています。
駒の動きは分かったけど、プログラミングはどうやってするの?MVC パターンを適用してみたいと思っていますが、パターンを使用するのはこれが初めてです。
基本的に、Graphics2D を使用して、各 Square のボックスを作成することを考えていました。次に、プレーヤーが駒をクリックすると、移動後に移動先として使用できる正方形が色で囲まれます。プレーヤーがこれらの四角形の 1 つをクリックすると、movePiece メソッドに既にあるコードが実行されます。
私がやりたいことは、Piece の各サブクラスで movePiece メソッドをオーバーライドすることです。問題は、これらのメソッドの 1 つでコードがどのように見えるかということです。たとえば、Pawn サブクラスを取り上げます。
コピー/貼り付けするコードを求めているのではなく、これを行う方法についてのいくつかの指針、最終的にはいくつかのサンプル コードを求めています。
ありがとう!
public class Game {
@SuppressWarnings("unused")
public static void main(String[] args){
Board board = new Board();
} }
public class Board {
Square[] grid;
public Board(){
grid = new Square[64];
}
public Square getSquare(int i){
return grid[i];
}
public void setDefault(){
}
public Boolean isMoveValid(){
return null;
} }
public class Square {
private Piece piece;
public void addPiece(Piece pieceType, String pieceColour, String pieceOwner)
throws ClassNotFoundException, InstantiationException, IllegalAccessException{
PieceFactory factory = new PieceFactory();
Piece piece = factory.createPiece(pieceType);
piece.setColour(pieceColour);
piece.setOwner(pieceOwner);
this.piece = piece;
}
public void addPiece(Piece pieceType){
this.piece = pieceType;
}
public void removePiece(){
piece = null;
}
public Piece getPiece(){
return piece;
}
class PieceFactory {
@SuppressWarnings("rawtypes")
public Piece createPiece(Piece pieceType)
throws ClassNotFoundException, InstantiationException, IllegalAccessException{
Class pieceClass = Class.forName(pieceType.toString());
Piece piece = (Piece) pieceClass.newInstance();
return piece;
} }
public void setColour(String colour){
} }
public abstract class Piece {
Board board;
public void setColour(String pieceColour) {
}
public void setOwner(String pieceOwner) {
}
public String getColour() {
return "";
}
public String getOwner() {
return "";
}
public void movePiece(int oldIndex, int newIndex){
board.getSquare(oldIndex).removePiece();
board.getSquare(newIndex).addPiece(this);
}
public String toString(){
return this.getClass().getSimpleName();
} }
あなたは私が知っている非常に基本的なコードを見たいと思っていました。[64] を [8][8] に変更します。必要以上に難しくしないようにしています。おそらく、Color と Owner を属性として組み合わせて、列挙型 (BLACK または WHITE) にすることができます。
フォーメーションが良くない場合は申し訳ありません。