Draw a circle with the given color on the screen and optionally fill it with fillcolor.

        :param pos: Center of the circle
        :param radius: Radius
        :param color: Color for border
        :param fillcolor: Color for infill
        :type pos: tuple
        :type radius: int
        :type color: tuple
        :type fillcolor: tuple

def draw_circle(self, pos, radius, color, fillcolor=None):
        """
        Draw a circle with the given color on the screen and optionally fill it with fillcolor.

        :param pos: Center of the circle
        :param radius: Radius
        :param color: Color for border
        :param fillcolor: Color for infill
        :type pos: tuple
        :type radius: int
        :type color: tuple
        :type fillcolor: tuple
        """
        #TODO: This still produces rubbish but it's on a good way to success
        def dist(d, p, r):
            return abs(math.sqrt((p[0] - d[0])**2 + (p[1] - d[1])**2) - r)

        points = []
        for x in range(pos[0] - radius, pos[0] + radius):
            for y in range(pos[1] - radius, pos[1] + radius):
                if 0 < x < self.width and 0 < y < self.height:
                    if dist((x, y), pos, radius) < 1.3:
                        points.append((x, y))

        # draw fill color
        if fillcolor:
            for point in points:
                pass
        # draw outline
        for point in points:
            self.draw_dot(point, color)