// CS 1711B, November 25, 1998 // places queens on a chess board #include void clear_board(char brd[][8]); // places . in all of brd[i][j] void place_queen(char brd[][8], int row, int col); // places queen in position row,col of brd if the space is unused // marks protected squares // does nothing if position is occupied int board_empty(const char brd[][8], int row, int col); // tests whether brd[row][col] is a . void display_board(const char brd[][8]); // displays brd to screen int main() { char brd[8][8]; char resp; // continue placing? int row, col; clear_board(brd); // display_board(brd); do{ cout << "\nwhat row and column? (between 1 and 8)?\n"; cin >> row >> col; row--; col--; //decrement to place between 0 and 7 place_queen(brd,row,col); display_board(brd); cout << "\nanother?\n"; cin >> resp; } while((resp == 'y')||(resp=='Y')); return 0; } void clear_board(char brd[][8]) { int i,j; for(i = 0; i <8; i++) { for(j = 0; j <8; j++) { brd[i][j] = '.';} } } void place_queen(char brd[][8], int row, int col) { int i,j,u,d,l,r; if(board_empty(brd,row,col)) // do place queen { // marks row, then column... for(j = 0; j <8; j++) { if (brd[row][j] == '.') brd[row][j] = 'X';} for(i = 0; i <8; i++) { if (brd[i][col] == '.') brd[i][col] = 'X';} // marks diagonals, first u(p) and l(eft)... u = row-1; l = col-1; while((u >=0)&&(l>=0)) { if (brd[u][l] == '.') brd[u][l] = 'X'; u--; l--; } // then u(p) and r(ight)... u = row-1; r = col+1; while((u >=0)&&(r < 8)) { if (brd[u][r] == '.') brd[u][r] = 'X'; u--; r++; } // d(own) and ... d = row+1; l = col-1; while((d < 8)&&(l >= 0)) { if (brd[d][l] == '.') brd[d][l] = 'X'; d++; l--; } d = row+1; r = col+1; while((d < 8)&&(r < 8)) { if (brd[d][r] == '.') brd[d][r] = 'X'; d++; r++; } // finally queen is placed brd[row][col] = 'Q'; } else cout << "\nThere was no change\n"; } int board_empty(const char brd[][8], int row, int col) { if(brd[row][col] == '.') return 1; else return 0; } void display_board(const char brd[][8]) { int i,j; cout << endl; for(i = 0; i <8; i++) { for(j = 0; j <8; j++) { cout << " " << brd[i][j];} cout << endl; } }