Add files via upload

This commit is contained in:
Coding with Tom
2025-01-12 22:42:08 +00:00
committed by GitHub
parent 6a0607ff0d
commit 55c3acf98e
10 changed files with 9918 additions and 13 deletions

121
Java/Board.java Normal file
View File

@@ -0,0 +1,121 @@
import java.math.BigInteger;
public class Board
{
public static BigInteger[] bitboard_array_global = new BigInteger[12];
public static boolean is_white_global = true;
public static boolean[] castle_rights_global = new boolean[4];
public static int ep;
static final BigInteger BP_STARTING_POSITIONS = new BigInteger("65280");
static final BigInteger WP_STARTING_POSITIONS = new BigInteger("71776119061217280");
static final BigInteger BK_STARTING_POSITION = new BigInteger("16");
static final BigInteger WK_STARTING_POSITION = new BigInteger("1152921504606846976");
static final BigInteger BN_STARTING_POSITIONS = new BigInteger("66");
static final BigInteger WN_STARTING_POSITIONS = new BigInteger("4755801206503243776");
static final BigInteger WR_STARTING_POSITIONS = new BigInteger("9295429630892703744");
static final BigInteger BR_STARTING_POSITIONS = new BigInteger("129");
static final BigInteger BB_STARTING_POSITIONS = new BigInteger("36");
static final BigInteger WB_STARTING_POSITIONS = new BigInteger("2594073385365405696");
static final BigInteger WQ_STARTING_POSITION = new BigInteger("576460752303423488");
static final BigInteger BQ_STARTING_POSITION = new BigInteger("8");
public static void SetTrickyPosition() {
ep = GenConst.NO_SQUARE;
is_white_global = true;
castle_rights_global[0] = true;
castle_rights_global[1] = true;
castle_rights_global[2] = true;
castle_rights_global[3] = true;
bitboard_array_global[GenConst.WP] = new BigInteger("65020788473856000");
bitboard_array_global[GenConst.WN] = new BigInteger("4398314946560");
bitboard_array_global[GenConst.WB] = new BigInteger("6755399441055744");
bitboard_array_global[GenConst.WR] = new BigInteger("9295429630892703744");
bitboard_array_global[GenConst.WQ] = new BigInteger("35184372088832");
bitboard_array_global[GenConst.WK] = new BigInteger("1152921504606846976");
bitboard_array_global[GenConst.BP] = new BigInteger("140746083544320");
bitboard_array_global[GenConst.BN] = new BigInteger("2228224");
bitboard_array_global[GenConst.BB] = new BigInteger("81920");
bitboard_array_global[GenConst.BR] = new BigInteger("129");
bitboard_array_global[GenConst.BQ] = new BigInteger("4096");
bitboard_array_global[GenConst.BK] = new BigInteger("16");
}
public static void SetStartingPosition() {
ep = GenConst.NO_SQUARE;
is_white_global = true;
castle_rights_global[0] = true;
castle_rights_global[1] = true;
castle_rights_global[2] = true;
castle_rights_global[3] = true;
bitboard_array_global[GenConst.WP] = WP_STARTING_POSITIONS;
bitboard_array_global[GenConst.WN] = WN_STARTING_POSITIONS;
bitboard_array_global[GenConst.WB] = WB_STARTING_POSITIONS;
bitboard_array_global[GenConst.WR] = WR_STARTING_POSITIONS;
bitboard_array_global[GenConst.WQ] = WQ_STARTING_POSITION;
bitboard_array_global[GenConst.WK] = WK_STARTING_POSITION;
bitboard_array_global[GenConst.BP] = BP_STARTING_POSITIONS;
bitboard_array_global[GenConst.BN] = BN_STARTING_POSITIONS;
bitboard_array_global[GenConst.BB] = BB_STARTING_POSITIONS;
bitboard_array_global[GenConst.BR] = BR_STARTING_POSITIONS;
bitboard_array_global[GenConst.BQ] = BQ_STARTING_POSITION;
bitboard_array_global[GenConst.BK] = BK_STARTING_POSITION;
}
static final char[] PieceNames = {'P', 'N', 'B', 'R', 'Q', 'K', 'P', 'N', 'B', 'R', 'Q', 'K', '_'};
static final char[] PieceColours = {'W', 'W', 'W', 'W', 'W', 'W', 'B', 'B', 'B', 'B', 'B', 'B', '_'};
static final int EMPTY = 12;
static boolean IsOccupied(BigInteger bitboard, int square) {
return !bitboard.and(MoveConstants.SQUARE_BBS[square]).equals(BigInteger.ZERO);
}
static int GetOccupiedIndex(int square) {
for (int i = 0; i < 12; i++) {
if (IsOccupied(bitboard_array_global[i], square)) {
return i;
}
}
return EMPTY;
}
static int[] fillBoardArray() {
int[] boardArray = new int[64];
for (int i = 0; i < 64; i++) {
boardArray[i] = GetOccupiedIndex(i);
}
return boardArray;
}
public static void PrintBoard() {
System.out.println("Board:");
int[] boardArray = fillBoardArray();
for (int rank = 0; rank < 8; rank++) {
System.out.print(" ");
for (int file = 0; file < 8; file++) {
int square = (rank * 8) + file;
System.out.printf("%c%c ", PieceColours[boardArray[square]], PieceNames[boardArray[square]]);
}
System.out.println();
}
System.out.println();
System.out.printf("White to play: %b\n", is_white_global);
System.out.printf("Castle: %b %b %b %b\n", castle_rights_global[0], castle_rights_global[1], castle_rights_global[2], castle_rights_global[3]);
System.out.printf("ep: %d\n", ep);
System.out.println();
System.out.println();
}
}