Мне нужна помощь в разработке шахматной игры. Я уже начал, но не получил далеко, поскольку я довольно новичок в Java, совершенно новый для программирования.
Во всяком случае, у меня есть мой абстрактный класс Piece и различные части как подклассы. У меня есть метод movePiece, в моем абстрактном классе, который я хочу определить для всех подклассов.
Все, что он сейчас делает, - это перемещение части с одного квадрата на другой. У меня есть квадратный класс, который может содержать объект Piece, плата состоит из квадрата размером 64x1.
Я знаю, как перемещаются фигуры, но как я вообще делаю программирование? Я хочу попробовать применить шаблон MVC, но это действительно первый раз, когда я буду использовать шаблоны.
В основном я думал об использовании Graphics2D для создания окна для каждой площади. Затем, когда игрок нажимает кусок, квадраты, которые доступны в качестве места назначения после перемещения, будут выделены в некотором цвете. После того, как игрок нажмет на один из этих квадратов, код, который у меня уже есть в моем методе movePiece, будет запущен.
Что я хочу сделать, это переопределить мой метод movePiece в каждом подклассе Piece. Вопрос в том, как код мог выглядеть в одном из этих методов? например, возьмите подкласс 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]. Я пытаюсь не сделать это сложнее, чем это должно быть. Я могу, возможно, совместить цвет и владельца как атрибут и сделать его перечислением (либо ЧЕРНЫМ или БЕЛОЙ).
Извините, если форматирование не подходит.