import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Set; import java.util.TreeSet; public class Words { public static final int HEIGHT = 700; public static final int WIDTH = 440; private static int outputX = 15; private static int outputY = 150; private static int numPrinted = 0; private static DrawingPanel panel; private static String part; private static boolean paused = false; /* Given methods: print, choose, unchoose */ private static void words(String acc, int length) { String[] choices = { "a", "b", "c", "d" }; if (length == 0) { add(acc); } else { for (String c : choices) { //acc += c; //choose(c); words(acc + c, length - 1); //acc = acc.substring(0, acc.length() - 1); //unchoose(); } } } public static void words(int length) { words("", length); } public static void main(String[] args) { panel = new DrawingPanel(WIDTH, HEIGHT); panel.addMouseListener((MouseListener) new MouseAdapter() { public void mouseClicked(MouseEvent e) { Words.paused = !Words.paused; } }); drawUnderline(); placePartial(""); words(4); } public static void drawUnderline() { Graphics g = panel.getGraphics(); g.setColor(Color.RED); Font font = new Font("Arial", Font.PLAIN, 100); g.setFont(font); g.drawString("____", 100, 80); } public static void placePartial(String x) { if (x.length() == 0) { return; } Graphics g = panel.getGraphics(); g.setColor(Color.BLACK); Font font = new Font("Arial", Font.PLAIN, 100); g.setFont(font); g.setColor(Color.WHITE); g.fillRect(10, 5, 100 + 55 * (4), 80); if (x.length() > 1) { g.setColor(Color.BLACK); g.drawString(x.substring(0, x.length() - 1), 100, 80); } g.setColor(Color.BLUE); g.drawString(x.substring(x.length() - 1), 100 + 57 * (x.length() - 1), 80); g.setColor(Color.BLACK); pause(); } public static void add(String x) { Graphics g = panel.getGraphics(); Font font = new Font("Arial", Font.PLAIN, 20); g.setFont(font); g.drawString(x + ", ", outputX, outputY); outputX += 60; numPrinted++; if (numPrinted % 7 == 0) { outputY += 30; outputX = 15; } } public static void choose(String choice) { if (part == null) { part = ""; } part += choice; placePartial(part); } public static void unchoose() { part = part.substring(0, part.length() - 1); placePartial(part); } public static void print() { add(part); } public static void pause() { panel.sleep(800); while (paused) { panel.sleep(200); } } }