Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Java by anonymous ( 15 years ago )
import java.io.*;

public class Assignment2 implements Check{

 private static char[][] convertChessboard(String chessConfiguration){
  char chessboard[][] = new char[8][8];
  int row = 0;
  int column = 0;
  for(int i = 0; i < chessConfiguration.length(); i++){
   chessboard[column][row] = chessConfiguration.charAt(i);
   column++;
   if(column == 7){
    column = 0;
    row++;
   }
  }
  return chessboard;
 }
 
 private static int pawnChecks(char[][] chessboard, char colorOfPawn,  int rowOfPawn, int columnOfPawn){
  if(colorOfPawn == 'p'){
   if(chessboard[columnOfPawn-1][rowOfPawn+1] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfPawn+1][rowOfPawn+1] == 'K'){
    return 2;
   }
   else{return 0;}
  }
  else{
   if(chessboard[columnOfPawn-1][rowOfPawn-1] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfPawn+1][rowOfPawn-1] == 'k'){
    return 1;
   }
   else{return 0;}
  }
 }

 private static int rookChecks(char[][] chessboard, char colorOfRook,  int rowOfRook, int columnOfRook){
  int column = columnOfRook;
  int row = rowOfRook;
  if(colorOfRook == 'r'){
   while(column > 0){
    column--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfRook;
      break;
     }
    }
   }
   while(column < chessboard.length-1){
    column++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfRook;
      break;
     }
    }
   }
   while(row > 0){
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      row = rowOfRook;
      break;
     }
    }
   }
   while(row < chessboard.length-1){
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      row = rowOfRook;
      break;
     }
    }
   }
  }
  else{
   while(column > 0){
    column--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 1;
     }
     else{
      column = columnOfRook;
      break;
     }
    }
   }
   while(column < chessboard.length-1){
    column++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 1;
     }
     else{
      column = columnOfRook;
      break;
     }
    }
   }
   while(row > 0){
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 1;
     }
     else{
      row = rowOfRook;
      break;
     }
    }
   }
   while(row < chessboard.length-1){
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 1;
     }
     else{
      row = rowOfRook;
      break;
     }
    }
   }
  }
  return 0;
 }
 
 private static int bishopChecks(char[][] chessboard, char colorOfBishop,  int rowOfBishop, int columnOfBishop){
  int column = columnOfBishop;
  int row = rowOfBishop;
  if(colorOfBishop == 'b'){
   while(column > 0 && row > 0){
    column--;
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfBishop;
      row = rowOfBishop;
      break;
     }
    }
   }
   while(column > 0 && row < chessboard.length-1){
    column--;
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfBishop;
      row = rowOfBishop;
      break;
     }
    }
   }
   while(column < chessboard.length-1 && row > 0){
    column++;
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfBishop;
      row = rowOfBishop;
      break;
     }
    }
   }
   while(column < chessboard.length-1 && row < chessboard.length-1){
    column++;
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfBishop;
      row = rowOfBishop;
      break;
     }
    }
   }
  }
  else{
   while(column > 0 && row > 0){
    column--;
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 2;
     }
     else{
      column = columnOfBishop;
      row = rowOfBishop;
      break;
     }
    }
   }
   while(column > 0 && row < chessboard.length-1){
    column--;
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 2;
     }
     else{
      column = columnOfBishop;
      row = rowOfBishop;
      break;
     }
    }
   }
   while(column < chessboard.length-1 && row > 0){
    column++;
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 2;
     }
     else{
      column = columnOfBishop;
      row = rowOfBishop;
      break;
     }
    }
   }
   while(column < chessboard.length-1 && row < chessboard.length-1){
    column++;
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 2;
     }
     else{
      column = columnOfBishop;
      row = rowOfBishop;
      break;
     }
    }
   }
  }
  return 0;
 }
  
 private static int queenChecks(char[][] chessboard, char colorOfQueen,  int rowOfQueen, int columnOfQueen){
  int column = columnOfQueen;
  int row = rowOfQueen;
  if(colorOfQueen == 'q'){
   while(column > 0){
    column--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfQueen;
      break;
     }
    }
   }
   while(column < chessboard.length-1){
    column++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfQueen;
      break;
     }
    }
   }
   while(row > 0){
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      row = rowOfQueen;
      break;
     }
    }
   }
   while(row < chessboard.length-1){
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      row = rowOfQueen;
      break;
     }
    }
   }
   while(column > 0 && row > 0){
    column--;
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfQueen;
      row = rowOfQueen;
      break;
     }
    }
   }
   while(column > 0 && row < chessboard.length-1){
    column--;
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfQueen;
      row = rowOfQueen;
      break;
     }
    }
   }
   while(column < chessboard.length-1 && row > 0){
    column++;
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfQueen;
      row = rowOfQueen;
      break;
     }
    }
   }
   while(column < chessboard.length-1 && row < chessboard.length-1){
    column++;
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'K'){
      return 2;
     }
     else{
      column = columnOfQueen;
      row = rowOfQueen;
      break;
     }
    }
   }
  }
  else{
   while(column > 0){
    column--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 1;
     }
     else{
      column = columnOfQueen;
      break;
     }
    }
   }
   while(column < chessboard.length-1){
    column++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 1;
     }
     else{
      column = columnOfQueen;
      break;
     }
    }
   }
   while(row > 0){
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 1;
     }
     else{
      row = rowOfQueen;
      break;
     }
    }
   }
   while(row < chessboard.length-1){
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 1;
     }
     else{
      row = rowOfQueen;
      break;
     }
    }
   }
   while(column > 0 && row > 0){
    column--;
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 2;
     }
     else{
      column = columnOfQueen;
      row = rowOfQueen;
      break;
     }
    }
   }
   while(column > 0 && row < chessboard.length-1){
    column--;
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 2;
     }
     else{
      column = columnOfQueen;
      row = rowOfQueen;
      break;
     }
    }
   }
   while(column < chessboard.length-1 && row > 0){
    column++;
    row--;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 2;
     }
     else{
      column = columnOfQueen;
      row = rowOfQueen;
      break;
     }
    }
   }
   while(column < chessboard.length-1 && row < chessboard.length-1){
    column++;
    row++;
    if(chessboard[column][row] != '.'){
     if(chessboard[column][row] == 'k'){
      return 2;
     }
     else{
      column = columnOfQueen;
      row = rowOfQueen;
      break;
     }
    }
   }
  }
  return 0;
 }

 private static int kingChecks(char[][] chessboard, char colorOfKing,  int rowOfKing, int columnOfKing){
  if(colorOfKing == 'k'){
   if(chessboard[columnOfKing-1][rowOfKing] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKing-1][rowOfKing-1] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKing-1][rowOfKing+1] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKing][rowOfKing-1] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKing][rowOfKing+1] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKing+1][rowOfKing-1] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKing+1][rowOfKing] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKing+1][rowOfKing+1] == 'K'){
    return 2;
   }
  }
  else{
   if(chessboard[columnOfKing-1][rowOfKing] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKing-1][rowOfKing-1] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKing-1][rowOfKing+1] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKing][rowOfKing-1] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKing][rowOfKing+1] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKing+1][rowOfKing-1] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKing+1][rowOfKing] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKing+1][rowOfKing+1] == 'k'){
    return 1;
   }
  }
  return 0;
 }
 
 private static int knightChecks(char[][] chessboard, char colorOfKnight,  int rowOfKnight, int columnOfKnight){
  if(colorOfKnight == 'n'){
   if(chessboard[columnOfKnight-2][rowOfKnight-1] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKnight-2][rowOfKnight+1] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKnight-1][rowOfKnight-2] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKnight-1][rowOfKnight+2] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKnight+1][rowOfKnight-2] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKnight+1][rowOfKnight+2] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKnight+2][rowOfKnight-1] == 'K'){
    return 2;
   }
   else if(chessboard[columnOfKnight+2][rowOfKnight+1] == 'K'){
    return 2;
   }
  }
  else{
   if(chessboard[columnOfKnight-2][rowOfKnight-1] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKnight-2][rowOfKnight+1] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKnight-1][rowOfKnight-2] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKnight-1][rowOfKnight+2] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKnight+1][rowOfKnight-2] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKnight+1][rowOfKnight+2] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKnight+2][rowOfKnight-1] == 'k'){
    return 1;
   }
   else if(chessboard[columnOfKnight+2][rowOfKnight+1] == 'k'){
    return 1;
   }
  }
  return 0;
 }
 
 public int whoIsInCheck(String chessConfiguration) throws Exception{
  int check = 0;
  int column = 0;
  int row = 0;
  char[][] chessboard = convertChessboard(chessConfiguration);
  for(int i = 0; i < 64; i++){
   if(chessboard[column][row] != '.'){
    switch(chessboard[column][row]){
     case 'p':  check = pawnChecks(chessboard, 'p', row, column);
        if(check != 0){break;}
     case 'P':  check = pawnChecks(chessboard, 'P', row, column);
        if(check != 0){break;}
     case 'r':  check = rookChecks(chessboard, 'r', row, column);
        if(check != 0){break;}
     case 'R':  check = rookChecks(chessboard, 'R', row, column);
        if(check != 0){break;}
     case 'b':  check = bishopChecks(chessboard, 'b', row, column);
        if(check != 0){break;}
     case 'B':  check = bishopChecks(chessboard, 'B', row, column);
        if(check != 0){break;}
     case 'q':  check = queenChecks(chessboard, 'q', row, column);
        if(check != 0){break;}
     case 'Q':  check = queenChecks(chessboard, 'Q', row, column);
        if(check != 0){break;}
     case 'k':  check = kingChecks(chessboard, 'k', row, column);
        if(check != 0){break;}
     case 'K':  check = kingChecks(chessboard, 'K', row, column);
        if(check != 0){break;}
     case 'n':  check = knightChecks(chessboard, 'n', row, column);
        if(check != 0){break;}
     case 'N':  check = knightChecks(chessboard, 'N', row, column);
        if(check != 0){break;}
    }
   }
   if(check != 0){return check;}
   column++;
   if(column == 8){
    column = 0;
    row++;
   }
  }
  return check;
 }
 public static void main(String[] args){
  String chessConfig1 = SAMPLE1;
  String chessConfig2 = SAMPLE2;
  String chessConfig3 = SAMPLE3;
  
  int chess1 = whoIsInCheck(chessConfig1);
  int chess2 = whoIsInCheck(chessConfig2);
  int chess3 = whoIsInCheck(chessConfig3);
  
  System.out.println();
  if(chess1 == 0){System.out.println("SAMPLE1: NONE_IN_CHECK");}
  else if(chess1 == 1){System.out.println("SAMPLE1: BLACK_IN_CHECK");}
  else if(chess1 == 2){System.out.println("SAMPLE1: WHITE_IN_CHECK");}
  System.out.println();
  if(chess2 == 0){System.out.println("SAMPLE2: NONE_IN_CHECK");}
  else if(chess2 == 1){System.out.println("SAMPLE2: BLACK_IN_CHECK");}
  else if(chess2 == 2){System.out.println("SAMPLE1: WHITE_IN_CHECK");}
  System.out.println();
  if(chess3 == 0){System.out.println("SAMPLE3: NONE_IN_CHECK");}
  else if(chess3 == 1){System.out.println("SAMPLE3: BLACK_IN_CHECK");}
  else if(chess3 == 2){System.out.println("SAMPLE3: WHITE_IN_CHECK");}
  System.out.println();
 }
}

 

Revise this Paste

Your Name: Code Language: