Skip to content

Commit c1b2ca6

Browse files
committed
added fen to BB converter
1 parent 2f3eec6 commit c1b2ca6

File tree

9 files changed

+344
-0
lines changed

9 files changed

+344
-0
lines changed

BitBoardGen/.classpath

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src"/>
4+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
5+
<classpathentry kind="output" path="bin"/>
6+
</classpath>

BitBoardGen/.project

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>BitBoardGen</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
</buildSpec>
14+
<natures>
15+
<nature>org.eclipse.jdt.core.javanature</nature>
16+
</natures>
17+
</projectDescription>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5+
org.eclipse.jdt.core.compiler.compliance=1.7
6+
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7+
org.eclipse.jdt.core.compiler.debug.localVariable=generate
8+
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9+
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10+
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11+
org.eclipse.jdt.core.compiler.source=1.7
1.26 KB
Binary file not shown.
3.97 KB
Binary file not shown.

BitBoardGen/data/game4.bb

Lines changed: 52 additions & 0 deletions
Large diffs are not rendered by default.

BitBoardGen/data/game4.fen

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R b KQkq - 1 1
2+
r1bqkbnr/pppppppp/2n5/8/8/5N2/PPPPPPPP/RNBQKB1R w KQkq - 2 2
3+
r1bqkbnr/pppppppp/2n5/8/8/5NP1/PPPPPP1P/RNBQKB1R b KQkq - 0 2
4+
r1bqkbnr/pppp1ppp/2n5/4p3/8/5NP1/PPPPPP1P/RNBQKB1R w KQkq e6 0 3
5+
r1bqkbnr/pppp1ppp/2n5/4p3/8/3P1NP1/PPP1PP1P/RNBQKB1R b KQkq - 0 3
6+
r1bqkb1r/pppp1ppp/2n2n2/4p3/8/3P1NP1/PPP1PP1P/RNBQKB1R w KQkq - 1 4
7+
r1bqkb1r/pppp1ppp/2n2n2/4p3/8/3P1NP1/PPP1PPBP/RNBQK2R b KQkq - 2 4
8+
r1bqk2r/pppp1ppp/2n2n2/2b1p3/8/3P1NP1/PPP1PPBP/RNBQK2R w KQkq - 3 5
9+
r1bqk2r/pppp1ppp/2n2n2/2b1p3/8/2PP1NP1/PP2PPBP/RNBQK2R b KQkq - 0 5
10+
r1bqk2r/1ppp1ppp/p1n2n2/2b1p3/8/2PP1NP1/PP2PPBP/RNBQK2R w KQkq - 0 6
11+
r1bqk2r/1ppp1ppp/p1n2n2/2b1p3/3P4/2P2NP1/PP2PPBP/RNBQK2R b KQkq - 0 6
12+
r1bqk2r/1ppp1ppp/p1n2n2/2b5/3p4/2P2NP1/PP2PPBP/RNBQK2R w KQkq - 0 7
13+
r1bqk2r/1ppp1ppp/p1n2n2/2b5/3P4/5NP1/PP2PPBP/RNBQK2R b KQkq - 0 7
14+
r1bqk2r/bppp1ppp/p1n2n2/8/3P4/5NP1/PP2PPBP/RNBQK2R w KQkq - 1 8
15+
r1bqk2r/bppp1ppp/p1n2n2/8/3P4/5NP1/PP2PPBP/RNBQ1RK1 b kq - 2 8
16+
r1bqk2r/bpp2ppp/p1n2n2/3p4/3P4/5NP1/PP2PPBP/RNBQ1RK1 w kq d6 0 9
17+
r1bqk2r/bpp2ppp/p1n2n2/3pN3/3P4/6P1/PP2PPBP/RNBQ1RK1 b kq - 1 9
18+
r1bqk2r/bpp2ppp/p4n2/3pN3/3n4/6P1/PP2PPBP/RNBQ1RK1 w kq - 0 10
19+
r1bqk2r/bpp2ppp/p4n2/3pN3/3n4/4P1P1/PP3PBP/RNBQ1RK1 b kq - 0 10
20+
r1bqk2r/bpp2ppp/p1n2n2/3pN3/8/4P1P1/PP3PBP/RNBQ1RK1 w kq - 1 11
21+
r1bqk2r/bpp2ppp/p1N2n2/3p4/8/4P1P1/PP3PBP/RNBQ1RK1 b kq - 0 11
22+
r1bqk2r/b1p2ppp/p1p2n2/3p4/8/4P1P1/PP3PBP/RNBQ1RK1 w kq - 0 12
23+
r1bqk2r/b1p2ppp/p1p2n2/3p4/8/2N1P1P1/PP3PBP/R1BQ1RK1 b kq - 1 12
24+
r1bq1rk1/b1p2ppp/p1p2n2/3p4/8/2N1P1P1/PP3PBP/R1BQ1RK1 w - - 2 13
25+
r1bq1rk1/b1p2ppp/p1p2n2/3p4/4P3/2N3P1/PP3PBP/R1BQ1RK1 b - - 0 13
26+
r1bqr1k1/b1p2ppp/p1p2n2/3p4/4P3/2N3P1/PP3PBP/R1BQ1RK1 w - - 1 14
27+
r1bqr1k1/b1p2ppp/p1p2n2/3P4/8/2N3P1/PP3PBP/R1BQ1RK1 b - - 0 14
28+
r2qr1k1/b1p2ppp/p1p2n2/3P4/6b1/2N3P1/PP3PBP/R1BQ1RK1 w - - 1 15
29+
r2qr1k1/b1p2ppp/p1p2n2/3P4/6b1/2N3P1/PP1Q1PBP/R1B2RK1 b - - 2 15
30+
r2qr1k1/b1p2ppp/p4n2/3p4/6b1/2N3P1/PP1Q1PBP/R1B2RK1 w - - 0 16
31+
r2qr1k1/b1p2ppp/p4n2/3N4/6b1/6P1/PP1Q1PBP/R1B2RK1 b - - 0 16
32+
r2qr1k1/b1p2ppp/p7/3n4/6b1/6P1/PP1Q1PBP/R1B2RK1 w - - 0 17
33+
r2qr1k1/b1p2ppp/p7/3B4/6b1/6P1/PP1Q1P1P/R1B2RK1 b - - 0 17
34+
1r1qr1k1/b1p2ppp/p7/3B4/6b1/6P1/PP1Q1P1P/R1B2RK1 w - - 1 18
35+
1r1qr1k1/b1p2ppp/p7/8/6b1/6P1/PP1Q1PBP/R1B2RK1 b - - 2 18
36+
1r2r1k1/b1p2ppp/p7/8/6b1/6P1/PP1q1PBP/R1B2RK1 w - - 0 19
37+
1r2r1k1/b1p2ppp/p7/8/6b1/6P1/PP1B1PBP/R4RK1 b - - 0 19
38+
4r1k1/b1p2ppp/p7/8/6b1/6P1/Pr1B1PBP/R4RK1 w - - 0 20
39+
4r1k1/b1p2ppp/p1B5/8/6b1/6P1/Pr1B1P1P/R4RK1 b - - 1 20
40+
6k1/b1p2ppp/p1B5/8/6b1/6P1/Pr1BrP1P/R4RK1 w - - 2 21
41+
6k1/b1p2ppp/p1B5/8/6b1/2B3P1/Pr2rP1P/R4RK1 b - - 3 21
42+
6k1/b1p2ppp/p1B5/8/6b1/2B3P1/r3rP1P/R4RK1 w - - 0 22
43+
6k1/b1p2ppp/p1B5/8/6b1/2B3P1/r3rP1P/3R1RK1 b - - 1 22
44+
6k1/b1p2pp1/p1B4p/8/6b1/2B3P1/r3rP1P/3R1RK1 w - - 0 23
45+
6k1/b1p2pp1/p6p/3B4/6b1/2B3P1/r3rP1P/3R1RK1 b - - 1 23
46+
6k1/b1p2pp1/p6p/3B4/6b1/2B3P1/2r1rP1P/3R1RK1 w - - 2 24
47+
6k1/b1p2pp1/p6p/3B4/6b1/6P1/2r1rP1P/B2R1RK1 b - - 3 24
48+
6k1/b1p2pp1/p6p/3B4/6b1/6P1/2r2r1P/B2R1RK1 w - - 0 25
49+
6k1/b1p2pp1/p6p/3B4/6b1/6P1/2r2r1P/B3RRK1 b - - 1 25
50+
6k1/b1p2pp1/p6p/3B4/6b1/6P1/2r3rP/B3RRK1 w - - 2 26
51+
6k1/b1p2pp1/p6p/3B4/6b1/6P1/2r3rP/B3RR1K b - - 3 26
52+
6k1/b1p2pp1/p6p/3B4/6b1/6P1/2r4r/B3RR1K w - - 0 27
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.rahul.bbgen;
2+
3+
import java.util.BitSet;
4+
5+
/**
6+
* This class takes in FEN strings which start from H1 and end at A8
7+
*
8+
* @author rahul
9+
*/
10+
public class BitBoard {
11+
12+
private BitSet bitBoard;
13+
public static final int BOARD_LENGTH = 64;
14+
15+
public BitBoard() {
16+
bitBoard = new BitSet(BOARD_LENGTH);
17+
}
18+
19+
public void flipBit(int index) {
20+
if (index >= 0 && index < BOARD_LENGTH)
21+
bitBoard.flip(index);
22+
}
23+
24+
public String getBitBoard() {
25+
StringBuilder builder = new StringBuilder();
26+
for (int i = 0; i < BOARD_LENGTH; i++) {
27+
builder.append(bitBoard.get(i) ? 1 : 0);
28+
}
29+
30+
return builder.toString();
31+
}
32+
33+
public static void main(String[] args) {
34+
BitBoard bb = new BitBoard();
35+
System.out.println(bb.getBitBoard());
36+
}
37+
}
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
package com.rahul.bbgen;
2+
3+
import java.io.BufferedReader;
4+
import java.io.File;
5+
import java.io.FileReader;
6+
import java.io.PrintWriter;
7+
8+
public class Main {
9+
10+
private BitBoard WRooks;
11+
private BitBoard WBishops;
12+
private BitBoard WPawns;
13+
private BitBoard WKnights;
14+
private BitBoard WKing;
15+
private BitBoard WQueen;
16+
17+
private BitBoard BRooks;
18+
private BitBoard BBishops;
19+
private BitBoard BPawns;
20+
private BitBoard BKnights;
21+
private BitBoard BKing;
22+
private BitBoard BQueen;
23+
24+
private void initBoards() {
25+
WRooks = new BitBoard();
26+
WBishops = new BitBoard();
27+
WPawns = new BitBoard();
28+
WKnights = new BitBoard();
29+
WKing = new BitBoard();
30+
WQueen = new BitBoard();
31+
32+
BRooks = new BitBoard();
33+
BBishops = new BitBoard();
34+
BPawns = new BitBoard();
35+
BKnights = new BitBoard();
36+
BKing = new BitBoard();
37+
BQueen = new BitBoard();
38+
}
39+
40+
public void createBoards(String fen) {
41+
initBoards();
42+
43+
int bitIndex = 0;
44+
char[] fenChars = fen.toCharArray();
45+
46+
for (int i = 0; i < fenChars.length && bitIndex < BitBoard.BOARD_LENGTH; i++) {
47+
// System.out.println(fenChars[i]);
48+
switch (fenChars[i]) {
49+
case 'R':
50+
WRooks.flipBit(bitIndex++);
51+
break;
52+
case 'N':
53+
WKnights.flipBit(bitIndex++);
54+
break;
55+
case 'B':
56+
WBishops.flipBit(bitIndex++);
57+
break;
58+
case 'P':
59+
WPawns.flipBit(bitIndex++);
60+
break;
61+
case 'K':
62+
WKing.flipBit(bitIndex++);
63+
break;
64+
case 'Q':
65+
WQueen.flipBit(bitIndex++);
66+
break;
67+
68+
case 'r':
69+
BRooks.flipBit(bitIndex++);
70+
break;
71+
case 'n':
72+
BKnights.flipBit(bitIndex++);
73+
break;
74+
case 'b':
75+
BBishops.flipBit(bitIndex++);
76+
break;
77+
case 'p':
78+
BPawns.flipBit(bitIndex++);
79+
break;
80+
case 'k':
81+
BKing.flipBit(bitIndex++);
82+
break;
83+
case 'q':
84+
BQueen.flipBit(bitIndex++);
85+
break;
86+
case '/':
87+
break;
88+
default:
89+
// System.out.println((int) fenChars[i] - 48);
90+
bitIndex += (int) fenChars[i] - 48;
91+
}
92+
}
93+
}
94+
95+
public String prettyPrintBoards() {
96+
StringBuilder builder = new StringBuilder();
97+
98+
builder.append("White Rooks : ");
99+
builder.append(WRooks.getBitBoard() + "\n");
100+
builder.append("White Knights : ");
101+
builder.append(WKnights.getBitBoard() + "\n");
102+
builder.append("White Bishops : ");
103+
builder.append(WBishops.getBitBoard() + "\n");
104+
builder.append("White Pawns : ");
105+
builder.append(WPawns.getBitBoard() + "\n");
106+
builder.append("White King : ");
107+
builder.append(WKing.getBitBoard() + "\n");
108+
builder.append("White Queen : ");
109+
builder.append(WQueen.getBitBoard() + "\n");
110+
111+
builder.append("Black Rooks : ");
112+
builder.append(BRooks.getBitBoard() + "\n");
113+
builder.append("Black Knights : ");
114+
builder.append(BKnights.getBitBoard() + "\n");
115+
builder.append("Black Bishops : ");
116+
builder.append(BBishops.getBitBoard() + "\n");
117+
builder.append("Black Pawns : ");
118+
builder.append(BPawns.getBitBoard() + "\n");
119+
builder.append("Black King : ");
120+
builder.append(BKing.getBitBoard() + "\n");
121+
builder.append("Black Queen : ");
122+
builder.append(BQueen.getBitBoard() + "\n");
123+
124+
return builder.toString();
125+
}
126+
127+
public String printBoards() {
128+
StringBuilder builder = new StringBuilder();
129+
130+
builder.append(WRooks.getBitBoard());
131+
builder.append(WKnights.getBitBoard());
132+
builder.append(WBishops.getBitBoard());
133+
builder.append(WPawns.getBitBoard());
134+
builder.append(WKing.getBitBoard());
135+
builder.append(WQueen.getBitBoard());
136+
137+
builder.append(BRooks.getBitBoard());
138+
builder.append(BKnights.getBitBoard());
139+
builder.append(BBishops.getBitBoard());
140+
builder.append(BPawns.getBitBoard());
141+
builder.append(BKing.getBitBoard());
142+
builder.append(BQueen.getBitBoard());
143+
144+
return builder.toString();
145+
}
146+
147+
public void buildBoards() {
148+
try {
149+
BufferedReader br = new BufferedReader(new FileReader(new File(
150+
"./data/game4.fen")));
151+
PrintWriter out = new PrintWriter("./data/game4.bb");
152+
String fen;
153+
154+
while ((fen = br.readLine()) != null) {
155+
createBoards(fen);
156+
out.println(printBoards());
157+
}
158+
br.close();
159+
out.close();
160+
} catch (Exception e) {
161+
e.printStackTrace();
162+
}
163+
}
164+
165+
public static void main(String[] args) {
166+
Main main = new Main();
167+
main.buildBoards();
168+
}
169+
}

0 commit comments

Comments
 (0)