import chapman.io.*;
public class DrawFigures {
    public static void main(String[] args) {
        Figure[] figure_list = getFigList();
        drawFigures(figure_list);
    }
    static Figure[] getFigList() {
        System.out.print("Number of figures? ");
        int num_figures = in.readInt();
        Figure[] list = new Figure[num_figures];
        for (int i = 0; i < num_figures; ++i) {
            list[i] = getFigure();
            list[i].read(in);
        }
        return list;
    }
    static Figure getFigure() {
        for (;;) {
            System.out.print("Figure type? ");
            String type = in.readString();
            Figure fig = makeFigure(type);
            if (fig != null)
              return fig;
            System.out.println("Sorry: " + type + " not supported.");
        }
    }
    static Figure makeFigure(String type) {
        if (type.equalsIgnoreCase("circle"))
            return new CircleFigure();
        if (type.equalsIgnoreCase("rectangle"))
            return new RectangleFigure();
        return null;
    }
    static void drawFigures(Figure[] figure_list) {
        java.util.Arrays.sort(figure_list);
        for (int y = -11; y <= 11; y++) {
            for (int x = -39; x <= 39; x++)
                drawPoint(figure_list, x, y);
            System.out.println();
        }           
    }
    static void drawPoint(Figure[] figure_list, int x, int y) {
        for (int i = 0; i < figure_list.length; ++i) {
            Figure fig = (Figure) figure_list[i];
            if (fig.contains(x, y)) {
                System.out.print(fig.getFill());
                return;
            }
        }
        System.out.print(' ');
    }
    static StdIn in = new StdIn();
}

