Knight.java 1.28 KB
/**
 *Board and movement of pieces
 *@author arghavan soleymanpour
 *@version 2.0
 */
package Pieces;

import Main.Board;

import java.util.ArrayList;

public class Knight extends Piece {


    public Knight(int x, int y, boolean isWhite, Board board) {
        super(x, y, isWhite, board);
    }

    @Override
    public boolean isValidMove(int dx, int dy) {
        ArrayList<int[]> moves = moves();
        for (int m[] : moves){
            if(m[0]==dx && m[1] == dy){
                return true;
//                break;
            }
        }
        return false;
    }

    @Override
    public ArrayList<int[]> moves() {
        ArrayList<int[]> move = new ArrayList<>();
        int x = getX();
        int y = getY();
        int posx[]={x+1,x+1,x+2,x+2,x-1,x-1,x-2,x-2};
        int posy[]={y-2,y+2,y-1,y+1,y-2,y+2,y-1,y+1};
        for(int i=0;i<8;i++) {
            if ((posx[i] >= 0 && posx[i] < 8 && posy[i] >= 0 && posy[i] < 8)) {
                if(getBoard().isEmpty(posx[i],posy[i]) || (getBoard().getColor(posx[i],posy[i])==2 && this.isWhite()) ||(getBoard().getColor(posx[i],posy[i])==1 && isBlack()) )
                    move.add(new int[]{posx[i], posy[i]});
            }
        }
        return move;
    }

    @Override
    public String toString() {
        return "A";
    }
}