-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathknight.java
More file actions
115 lines (108 loc) · 2.63 KB
/
knight.java
File metadata and controls
115 lines (108 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
public class Knight {
public static String movesW(int i)
{
String move = "", oldPiece;
String newPos = "";
int r=i/8, c=i%8;
for (int j=1; j>=-1; j-=2)
{
for (int k=1; k>=-1; k-=2)
{
if (j!=0 || k!=0)
{
try {
newPos = Board.chessBoard[(r+2*j)][(c+k)];
if (Character.isLowerCase(newPos.charAt(0)) || " ".equals(newPos))
{
oldPiece=newPos;
Board.makeMove(""+r+c+((r+2*j))+(c+k)+oldPiece);
if (King.kingSafeW())
move = move+r+c+((r+2*j))+(c+k)+oldPiece;
Board.undoMove(""+r+c+((r+2*j))+(c+k)+oldPiece);
}
} catch (Exception e) {};
try {
newPos = Board.chessBoard[(r+j)][(c+2*k)];
if (Character.isLowerCase(newPos.charAt(0)) || " ".equals(newPos))
{
oldPiece=newPos;
Board.makeMove(""+r+c+((r+j))+(c+2*k)+oldPiece);
if (King.kingSafeW())
move = move+r+c+((r+j))+(c+2*k)+oldPiece;
Board.undoMove(""+r+c+((r+j))+(c+2*k)+oldPiece);
}
} catch (Exception e) {};
}
}
}
return move;
}
public static String movesB(int i)
{
String move = "", oldPiece;
String newPos = "";
int r=i/8, c=i%8;
for (int j=1; j>=-1; j-=2)
{
for (int k=1; k>=-1; k-=2)
{
if (j!=0 || k!=0)
{
try {
newPos = Board.chessBoard[(r+2*j)][(c+k)];
if (Character.isUpperCase(newPos.charAt(0)) || " ".equals(newPos))
{
oldPiece=newPos;
Board.makeMove(""+r+c+((r+2*j))+(c+k)+oldPiece);
if (King.kingSafeB())
move = move+r+c+((r+2*j))+(c+k)+oldPiece;
Board.undoMove(""+r+c+((r+2*j))+(c+k)+oldPiece);
}
} catch (Exception e) {};
try{
newPos = Board.chessBoard[(r+j)][(c+2*k)];
if (Character.isUpperCase(newPos.charAt(0)) || " ".equals(newPos))
{
oldPiece=newPos;
Board.makeMove(""+r+c+((r+j))+(c+2*k)+oldPiece);
if (King.kingSafeB())
move = move+r+c+((r+j))+(c+2*k)+oldPiece;
Board.undoMove(""+r+c+((r+j))+(c+2*k)+oldPiece);
}
} catch (Exception e) {};
}
}
}
return move;
}
public static void controlW(int i)
{
int r=i/8, c=i%8;
for (int j=1; j>=-1; j-=2)
{
for (int k=1; k>=-1; k-=2)
{
if (j!=0 || k!=0)
{
try { BB.nMovesW[(r+2*j)*8+(c+k)] = true; } catch (Exception e) {};
try { BB.nMovesW[(r+j)*8+(c+2*k)] = true; } catch (Exception e) {};
}
}
}
}
public static void controlB(int i)
{
int r=i/8, c=i%8;
for (int j=1; j>=-1; j-=2)
{
for (int k=1; k>=-1; k-=2)
{
if (j!=0 || k!=0)
{
try { BB.nMovesB[(r+2*j)*8+(c+k)] = true; } catch (Exception e) {};
try { BB.nMovesB[(r+j)*8+(c+2*k)] = true; } catch (Exception e) {};
}
}
}
}
}