diff options
| -rwxr-xr-x | 10284/fen.in | 37 | ||||
| -rw-r--r-- | 10284/fen2.cpp | 63 |
2 files changed, 69 insertions, 31 deletions
diff --git a/10284/fen.in b/10284/fen.in index 8d5ef93..266a2ed 100755 --- a/10284/fen.in +++ b/10284/fen.in @@ -1,25 +1,14 @@ -8/8/8/8/3b4/8/8/8
-8/8/8/8/3B4/8/8/8
-8/8/8/8/3r4/8/8/8
-8/8/8/8/3R4/8/8/8
-8/8/8/8/3q4/8/8/8
-8/8/8/8/3Q4/8/8/8
-8/8/8/8/3n4/8/8/8
-8/8/8/8/3N4/8/8/8
-8/8/8/8/3k4/8/8/8
-8/8/8/8/3K4/8/8/8
-8/8/8/8/3p4/8/8/8
-8/8/8/8/3P4/8/8/8
-8/8/8/3Q4/3N4/8/8/8
-8/8/8/8/7B/6N1/8/7R
-8/8/8/8/1p1p1p2/8/P1P1P1P1/8
5k1r/2q3p1/p3p2p/1B3p1Q/n4P2/6P1/bbP2N1P/1K1RR3
-8/8/8/8/8/8/8/7r
-rrrrrrrr/8/8/8/8/8/8/8
-1n1n1n1n/n1n1n1n1/1n1n1n1n/n1n1n1n1/1n1n1n1n/n1n1n1n1/1n1n1n1n/n1n1n1n1
-n7/8/8/8/8/8/8/7N
-Q7/8/8/8/8/8/8/8
-Qp6/PP6/8/8/8/8/8/8
-Kp6/PP6/8/8/8/8/8/8
-Bp6/PP6/8/8/8/8/8/8
-Np6/PP6/8/8/8/8/8/8
+rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
+q7/8/8/8/8/8/8
+r7/8/8/8/8/8/8
+8/8/8/8/8/8/8/5r2
+8/8/8/8/8/8/8/7q
+8/8/8/8/8/8/8/7k
+8/8/8/8/4k3/8/8/8
+8/8/8/8/4n3/8/8/8
+8/8/8/8/4q3/8/8/8
+8/8/8/4p3/4P3/8/8/8
+8/8/8/4b3/4B3/8/8/8
+8/8/8/3ppp2/3pQp2/3PPP2/8/8
+8/8/8/3ppp2/3pNp2/3PPP2/8/8
\ No newline at end of file diff --git a/10284/fen2.cpp b/10284/fen2.cpp index 1f238b5..ae52fe5 100644 --- a/10284/fen2.cpp +++ b/10284/fen2.cpp @@ -4,7 +4,7 @@ using namespace std; void addattack(int, int, int[][8]); void addbishopattack(int, int, int[][8]); - +void addrookattack(int i, int j, int board[][8]); int main(){ string fen; @@ -49,13 +49,13 @@ void addattack(int i, int j, int board[][8]){ //PAWNS if(board[i][j]==112){ //p if(i+1<8 && j-1>=0 && board[i+1][j-1]==0) - board[i+1][i-1]=1; + board[i+1][j-1]=1; if(i+1<8 && j+1<=7 && board[i+1][j+1]==0) board[i+1][j+1]=1; } else if(board[i][j]==80){//P if(i-1>=0 && j+1<=7 && board[i-1][j+1]==0) - board[i-1][j+1]=0; + board[i-1][j+1]=1; if(i-1>=0 && j-1>=0 && board[i-1][j-1]==0) board[i-1][j-1]=1; } @@ -95,6 +95,16 @@ void addattack(int i, int j, int board[][8]){ addbishopattack(i, j, board); } + //ROOKS + else if(board[i][j]==114 || board[i][j]==82){ + addrookattack(i, j, board); + } + + //QUEEN + else if(board[i][j]==81 || board[i][j]==113){ + addrookattack(i, j, board); + addbishopattack(i, j, board); + } } @@ -103,7 +113,7 @@ void addbishopattack(int i, int j, int board[][8]){ int trow=i, tcol=j; while(!conf){ tcol++;trow++; - if(tcol>=8 || trow>=8 || (board[trow][tcol]!=0 && board[trow][tcol]!=1)) + if(tcol>=8 || trow>=8 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } @@ -112,7 +122,7 @@ void addbishopattack(int i, int j, int board[][8]){ trow=i;tcol=j; while(!conf){ tcol++;trow--; - if(tcol>=8 || trow<0 || (board[trow][tcol]!=0 && board[trow][tcol]!=1)) + if(tcol>=8 || trow<0 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } @@ -121,7 +131,7 @@ void addbishopattack(int i, int j, int board[][8]){ trow=i; tcol=j; while(!conf){ tcol--;trow--; - if(tcol<0 || trow<0 || (board[trow][tcol]!=0 && board[trow][tcol]!=1)) + if(tcol<0 || trow<0 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } @@ -130,7 +140,46 @@ void addbishopattack(int i, int j, int board[][8]){ trow=i; tcol=j; while(!conf){ tcol--;trow++; - if(tcol<0 || trow>=8 || (board[trow][tcol]!=0 && board[trow][tcol]!=1)) + if(tcol<0 || trow>=8 || board[trow][tcol]>1) + conf=true; + else board[trow][tcol]=1; + } +} + +void addrookattack(int i, int j, int board[][8]){ + bool conf=false; + + int trow=i, tcol=j; + while(!conf){ + trow++; + if(trow>=8 || board[trow][tcol]>1) + conf=true; + else board[trow][tcol]=1; + } + + conf=false; + trow=i; tcol=j; + while (!conf){ + trow--; + if(trow<0 || board[trow][tcol]>1) + conf=true; + else board[trow][tcol]=1; + } + + conf=false; + trow=i; tcol=j; + while (!conf){ + tcol++; + if(tcol>=8 || board[trow][tcol]>1) + conf=true; + else board[trow][tcol]=1; + } + + conf=false; + trow=i;tcol=j; + while (!conf){ + tcol--; + if(tcol<0 || board[trow][tcol]>1) conf=true; else board[trow][tcol]=1; } |
