Программирование на Java - ходы в шахматы (базовые, без ИИ)

Мне нужна помощь в разработке шахматной игры. Я уже начал, но еще не продвинулся, поскольку я новичок в Java, вообще-то новичок в программировании.

В любом случае, У меня есть метод movePiece в моем абстрактном классе, который я хочу определить для всех подклассов.

Все, что он сейчас делает, это перемещает фигуру с одного поля на другое. У меня есть класс Square, который может содержать объект Piece, доска состоит из массива Square 64x1.

Я знаю, как перемещаются фигуры, но как мне на самом деле программировать? Я хочу попробовать применить шаблон MVC, но это действительно первый раз, когда я буду использовать шаблоны.

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

Извините, если форматирование плохое.

10
задан Smooth Operator 13 January 2011 в 12:38
поделиться