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