Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package checkthecheck;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- class Main {
- public static void main(String[] args) throws IOException {
- char [][]gameboard = new char[8][8];
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String line = null;
- int numberOfTheGame = 1;
- int inCheck = 0;
- int xCoordWhiteKing=0;
- int yCoordWhiteKing=0;
- int xCoordBlackKing = 0;
- int yCoordBlackKing = 0;
- boolean isOver = false;
- boolean moreBoards = true;
- boolean found = false;
- int tmp=0;
- int tmp1 = 0;
- int tmp2 = 0;
- int nonDotChars = 0;
- //start huge cycle here
- while(moreBoards)
- {
- nonDotChars = 0;
- inCheck = 0;
- found = false;
- for(int i = 0; i<8;i++)
- {
- line = br.readLine();
- for(int j = 0; j <8; j++)
- {
- gameboard[i][j] = line.charAt(j);
- }
- }
- for(int i = 0; i<8;i++)
- {
- for(int j = 0; j <8; j++)
- {
- if(gameboard[i][j]!='.')
- {
- nonDotChars++;
- }
- }
- }
- if(nonDotChars == 0)
- {
- break;
- }
- // for(int i = 0 ; i < 8 ; i++)
- // {
- // for(int j =0;j<8;j++)
- // {
- // System.out.print(gameboard[i][j]);
- // }
- // System.out.println();
- // }
- for(int i = 0; i <8; i++)
- {
- for(int j = 0; j<8;j++)
- {
- if(gameboard[i][j]=='K')
- {
- xCoordWhiteKing = i;
- yCoordWhiteKing = j;
- }
- if(gameboard[i][j]=='k')
- {
- xCoordBlackKing = i;
- yCoordBlackKing = j;
- }
- }
- }
- //////////////////////////
- //////// WHITE KING //////
- //////////////////////////
- //check if white king (K) has check from black tower(r) and black queen(q) from sides
- tmp = xCoordWhiteKing - 1;
- //top from king
- if(found == false)
- while((tmp >=0) &&
- ((gameboard[tmp][yCoordWhiteKing]=='.')||(gameboard[tmp][yCoordWhiteKing]=='r')
- ||(gameboard[tmp][yCoordWhiteKing]=='q')))
- {
- if(gameboard[tmp][yCoordWhiteKing]=='r' || gameboard[tmp][yCoordWhiteKing]=='q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.1");
- found = true;
- ++numberOfTheGame;
- }
- tmp--;
- }
- tmp = xCoordWhiteKing + 1;
- //bot from king
- if(found == false)
- while((tmp <=7) &&
- ((gameboard[tmp][yCoordWhiteKing]=='.')||(gameboard[tmp][yCoordWhiteKing]=='r')
- ||(gameboard[tmp][yCoordWhiteKing]=='q')))
- {
- if(gameboard[tmp][yCoordWhiteKing]=='r' || gameboard[tmp][yCoordWhiteKing]=='q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.2");
- found = true;
- ++numberOfTheGame;
- }
- tmp++;
- }
- tmp = yCoordWhiteKing -1;
- //left from king
- if(found == false)
- while((tmp >=0) &&
- ((gameboard[xCoordWhiteKing][tmp]=='.')||(gameboard[xCoordWhiteKing][tmp]=='r')
- ||(gameboard[xCoordWhiteKing][tmp]=='q')))
- {
- if(gameboard[xCoordWhiteKing][tmp]=='r' || gameboard[xCoordWhiteKing][tmp]=='q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.3");
- found = true;
- ++numberOfTheGame;
- }
- tmp--;
- }
- tmp = yCoordWhiteKing +1;
- //left from king
- if(found == false)
- while((tmp <=7) &&
- ((gameboard[xCoordWhiteKing][tmp]=='.')||(gameboard[xCoordWhiteKing][tmp]=='r')
- ||(gameboard[xCoordWhiteKing][tmp]=='q')))
- {
- if(gameboard[xCoordWhiteKing][tmp]=='r' || gameboard[xCoordWhiteKing][tmp]=='q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.4");
- found = true;
- ++numberOfTheGame;
- }
- tmp++;
- }
- //check if the white king(K)is in check by bishops and queen from diagonal
- //top left from king
- tmp1 = xCoordWhiteKing - 1;
- tmp2 = yCoordWhiteKing - 1;
- if(found == false)
- while((tmp1 >=0 && tmp2>=0) &&
- ((gameboard[tmp1][tmp2]=='.')||(gameboard[tmp1][tmp2]=='b')
- ||(gameboard[tmp1][tmp2]=='q')))
- {
- if(gameboard[tmp1][tmp2]=='b' || gameboard[tmp1][tmp2]=='q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.5");
- found = true;
- ++numberOfTheGame;
- }
- tmp1--;
- tmp2--;
- }
- //bot left from king
- tmp1 = xCoordWhiteKing - 1;
- tmp2 = yCoordWhiteKing + 1;
- if(found == false)
- while((tmp1 >=0 && tmp2<=7) &&
- ((gameboard[tmp1][tmp2]=='.')||(gameboard[tmp1][tmp2]=='b')
- ||(gameboard[tmp1][tmp2]=='q')))
- {
- if(gameboard[tmp1][tmp2]=='b' || gameboard[tmp1][tmp2]=='q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.6");
- found = true;
- ++numberOfTheGame;
- }
- tmp1--;
- tmp2++;
- }
- //bot right from king
- tmp1 = xCoordWhiteKing + 1;
- tmp2 = yCoordWhiteKing + 1;
- if(found == false)
- while((tmp1 <=7 && tmp2<=7) &&
- ((gameboard[tmp1][tmp2]=='.')||(gameboard[tmp1][tmp2]=='b')
- ||(gameboard[tmp1][tmp2]=='q')))
- {
- if(gameboard[tmp1][tmp2]=='b' || gameboard[tmp1][tmp2]=='q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.7");
- found = true;
- ++numberOfTheGame;
- }
- tmp1++;
- tmp2++;
- }
- //top right from king
- tmp1 = xCoordWhiteKing + 1;
- tmp2 = yCoordWhiteKing - 1;
- if(found == false)
- while((tmp1 <=7 && tmp2>=7) &&
- ((gameboard[tmp1][tmp2]=='.')||(gameboard[tmp1][tmp2]=='b')
- ||(gameboard[tmp1][tmp2]=='q')))
- {
- if(gameboard[tmp1][tmp2]=='b' || gameboard[tmp1][tmp2]=='q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.8");
- found = true;
- ++numberOfTheGame;
- }
- tmp1++;
- tmp2--;
- }
- //check if the white king(K)is in check by pawns
- if(xCoordWhiteKing>0)
- {
- //if king is not at sides of the board
- if(yCoordWhiteKing>0 && yCoordWhiteKing <7)
- {
- if(found == false)
- if(gameboard[xCoordWhiteKing-1][yCoordWhiteKing-1]=='p'
- || gameboard[xCoordWhiteKing-1][yCoordWhiteKing+1]=='p')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.9");
- found = true;
- ++numberOfTheGame;
- }
- }
- //if king is on the most left side
- if(xCoordWhiteKing > 0 && yCoordWhiteKing==0)
- if(found == false)
- if(gameboard[xCoordWhiteKing-1][yCoordWhiteKing+1]=='p')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.10");
- found = true;
- ++numberOfTheGame;
- }
- if(found == false)
- if(xCoordWhiteKing > 0 && yCoordWhiteKing==7)
- if(gameboard[xCoordWhiteKing-1][yCoordWhiteKing-1]=='p')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.11");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the white king(K)is in check by knights
- tmp1 = xCoordWhiteKing + 1;
- tmp2 = yCoordWhiteKing - 2;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='n')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.12");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the white king(K)is in check by knights
- tmp1 = xCoordWhiteKing + 2;
- tmp2 = yCoordWhiteKing + 1;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='n')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.13");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the white king(K)is in check by knights
- tmp1 = xCoordWhiteKing + 2;
- tmp2 = yCoordWhiteKing - 1;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='n')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.14");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the white king(K)is in check by knights
- tmp1 = xCoordWhiteKing + 1;
- tmp2 = yCoordWhiteKing + 2;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='n')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.15");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the white king(K)is in check by knights
- tmp1 = xCoordWhiteKing - 1;
- tmp2 = yCoordWhiteKing - 2;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='n')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.16");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the white king(K)is in check by knights
- tmp1 = xCoordWhiteKing - 2;
- tmp2 = yCoordWhiteKing - 1;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='n')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.17");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the white king(K)is in check by knights
- tmp1 = xCoordWhiteKing - 2;
- tmp2 = yCoordWhiteKing + 1;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='n')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.18");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the white king(K)is in check by knights
- tmp1 = xCoordWhiteKing - 1;
- tmp2 = yCoordWhiteKing + 2;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='n')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": white king is in check.19");
- found = true;
- ++numberOfTheGame;
- }
- }
- //////////////////////////
- //////// BLACK KING //////
- //////////////////////////
- //check if the black king(K)is in check by knights
- tmp1 = xCoordBlackKing + 1;
- tmp2 = yCoordBlackKing - 2;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='N')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.20");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the black king(K)is in check by knights
- tmp1 = xCoordBlackKing + 2;
- tmp2 = yCoordBlackKing + 1;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='N')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.21");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the black king(K)is in check by knights
- tmp1 = xCoordBlackKing + 2;
- tmp2 = yCoordBlackKing - 1;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='N')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.22");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the black king(K)is in check by knights
- tmp1 = xCoordBlackKing + 1;
- tmp2 = yCoordBlackKing + 2;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='N')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.23");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the black king(K)is in check by knights
- tmp1 = xCoordBlackKing - 1;
- tmp2 = yCoordBlackKing - 2;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='N')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.24");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the black king(K)is in check by knights
- tmp1 = xCoordBlackKing - 2;
- tmp2 = yCoordBlackKing - 1;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='N')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.25");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the black king(K)is in check by knights
- tmp1 = xCoordBlackKing - 2;
- tmp2 = yCoordBlackKing + 1;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='N')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.26");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if the black king(K)is in check by knights
- tmp1 = xCoordBlackKing - 1;
- tmp2 = yCoordBlackKing + 2;
- if(found == false)
- if(tmp1>=0 && tmp1<=7)
- if(tmp2>=0 && tmp2<=7)
- {
- if(gameboard[tmp1][tmp2]=='N')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.27");
- found = true;
- ++numberOfTheGame;
- }
- }
- //check if black king (K) has check from white tower(r) and white queen(q) from sides
- tmp = xCoordBlackKing - 1;
- //top from king
- if(found == false)
- while((tmp >=0) &&
- ((gameboard[tmp][yCoordBlackKing]=='.')||(gameboard[tmp][yCoordBlackKing]=='R')
- ||(gameboard[tmp][yCoordBlackKing]=='Q')))
- {
- if(gameboard[tmp][yCoordBlackKing]=='R' || gameboard[tmp][yCoordBlackKing]=='Q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.28");
- found = true;
- ++numberOfTheGame;
- }
- tmp--;
- }
- tmp = xCoordBlackKing+1;
- //bot from king
- if(found == false)
- while((tmp <=7) &&
- ((gameboard[tmp][yCoordBlackKing]=='.')||(gameboard[tmp][yCoordBlackKing]=='R')
- ||(gameboard[tmp][yCoordBlackKing]=='Q')))
- {
- if(gameboard[tmp][yCoordBlackKing]=='R' || gameboard[tmp][yCoordBlackKing]=='Q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.29");
- found = true;
- ++numberOfTheGame;
- }
- tmp++;
- }
- tmp = yCoordBlackKing -1;
- //left from king
- if(found == false)
- while((tmp >=0) &&
- ((gameboard[xCoordBlackKing][tmp]=='.')||(gameboard[xCoordBlackKing][tmp]=='R')
- ||(gameboard[xCoordBlackKing][tmp]=='Q')))
- {
- if(gameboard[xCoordBlackKing][tmp]=='R' || gameboard[xCoordBlackKing][tmp]=='Q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.30");
- found = true;
- ++numberOfTheGame;
- }
- tmp--;
- }
- tmp = yCoordBlackKing +1;
- //left from king
- if(found == false)
- while((tmp <=7) &&
- ((gameboard[xCoordBlackKing][tmp]=='.')||(gameboard[xCoordBlackKing][tmp]=='R')
- ||(gameboard[xCoordBlackKing][tmp]=='Q')))
- {
- if(gameboard[xCoordBlackKing][tmp]=='R' || gameboard[xCoordBlackKing][tmp]=='Q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.31");
- found = true;
- ++numberOfTheGame;
- }
- tmp++;
- }
- //check if the black king(k)is in check by bishops and queen from diagonal
- //top left from king
- tmp1 = xCoordBlackKing - 1;
- tmp2 = yCoordBlackKing - 1;
- if(found == false)
- while((tmp1 >=0 && tmp2>=0) &&
- ((gameboard[tmp1][tmp2]=='.')||(gameboard[tmp1][tmp2]=='B')
- ||(gameboard[tmp1][tmp2]=='Q')))
- {
- if(gameboard[tmp1][tmp2]=='B' || gameboard[tmp1][tmp2]=='Q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.32");
- found = true;
- ++numberOfTheGame;
- }
- tmp1--;
- tmp2--;
- }
- //bot left from king
- tmp1 = xCoordBlackKing - 1;
- tmp2 = yCoordBlackKing + 1;
- if(found == false)
- while((tmp1 >=0 && tmp2<=7) &&
- ((gameboard[tmp1][tmp2]=='.')||(gameboard[tmp1][tmp2]=='B')
- ||(gameboard[tmp1][tmp2]=='Q')))
- {
- if(gameboard[tmp1][tmp2]=='B' || gameboard[tmp1][tmp2]=='Q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.33");
- found = true;
- ++numberOfTheGame;
- }
- tmp1--;
- tmp2++;
- }
- //bot right from king
- tmp1 = xCoordBlackKing + 1;
- tmp2 = yCoordBlackKing + 1;
- if(found == false)
- while((tmp1 <=7 && tmp2<=7) &&
- ((gameboard[tmp1][tmp2]=='.')||(gameboard[tmp1][tmp2]=='B')
- ||(gameboard[tmp1][tmp2]=='Q')))
- {
- if(gameboard[tmp1][tmp2]=='B' || gameboard[tmp1][tmp2]=='Q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.34");
- found = true;
- ++numberOfTheGame;
- }
- tmp1++;
- tmp2++;
- }
- //top right from king
- tmp1 = xCoordBlackKing + 1;
- tmp2 = yCoordBlackKing - 1;
- if(found == false)
- while((tmp1 <=7 && tmp2>=0) &&
- ((gameboard[tmp1][tmp2]=='.')||(gameboard[tmp1][tmp2]=='B')
- ||(gameboard[tmp1][tmp2]=='Q')))
- {
- if(gameboard[tmp1][tmp2]=='B' || gameboard[tmp1][tmp2]=='Q')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.35");
- found = true;
- ++numberOfTheGame;
- }
- tmp1++;
- tmp2--;
- }
- //check if black king has check from white Pawn(P)
- if(found == false)
- if(xCoordBlackKing!=7)
- {
- if(yCoordBlackKing<7 && yCoordBlackKing>0)
- {
- if(gameboard[xCoordBlackKing+1][yCoordBlackKing-1]=='P'
- || gameboard[xCoordBlackKing+1][yCoordBlackKing+1]=='P')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.36");
- found = true;
- ++numberOfTheGame;
- }
- }
- }
- if(found == false)
- if(yCoordBlackKing==0 && xCoordBlackKing<7)
- {
- if(gameboard[xCoordBlackKing+1][yCoordBlackKing+1]=='P')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.37");
- found = true;
- ++numberOfTheGame;
- }
- }
- if(found == false)
- if(yCoordBlackKing==7 && xCoordBlackKing<7)
- {
- if(gameboard[xCoordBlackKing+1][yCoordBlackKing-1]=='P')
- {
- inCheck = 1;
- System.out.println("Game #"+ numberOfTheGame +": black king is in check.38");
- found = true;
- ++numberOfTheGame;
- }
- }
- if(inCheck==0)
- {
- System.out.println("Game #"+numberOfTheGame +": no king is in check.39");
- ++numberOfTheGame;
- }
- //sc.nextLine();
- br.readLine();
- }
- //end cycle here
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement