public boolean move(char sc, int sr, char dc, int dr) {
		int[] array = translateMove(sc, sr, dc, dr);
		int sRow = array[0];
		int sCol = array[1];
		int dRow = array[2];
		int dCol = array[3];
		
		if (outOfBounds(sRow, sCol) || outOfBounds(dRow, dCol)) {
			System.out.println("Out of bounds!");
			return false;
		}
		
		ChessPiece piece = board[sRow][sCol];
		if (piece == null) {
			System.out.println("No chess piece at source location!");
			return false;
		}
		
		if (piece.isWhite != whiteTurn) {
			System.out.println("Cannot move a piece belonging to your opponent!");
			return false;
		}
		
		if (!piece.isLegalMove(sRow, sCol, dRow, dCol)) {
			System.out.println("Illegal move!");
			return false;
		}
		
		// move is legal
		board[dRow][dCol] = piece;
		board[sRow][sCol] = null;
		
		// increment turn
		whiteTurn ^= true;
		
		drawBoard();
		return true;
	}