<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def draw_char(self, x, y, char, fg=Ellipsis, bg=Ellipsis):
 """Draws a single character. Args: x (int):
 x-coordinate to draw on. y (int):
 y-coordinate to draw on. char (Optional[Union[int, Text]]):
 An integer, single character string, or None. You can set the char parameter as None if you only want to change the colors of the tile. fg (Optional[Union[Tuple[int, int, int], int, Ellipsis]]) bg (Optional[Union[Tuple[int, int, int], int, Ellipsis]]) Raises: AssertionError: Having x or y values that can't be placed inside of the console will raise an AssertionError. You can use always use ((x, y) in console) to check if a tile is drawable. .. seealso:: :any:`get_char` """

        #x, y = self._normalizePoint(x, y)
        _put_char_ex(self.console_c, x, y, _format_char(char),
                     _format_color(fg, self._fg), _format_color(bg, self._bg), 1)