import java.awt.*; import java.applet.*; public class Co extends Applet { static double PI = 3.1415; static int STPY = 50; int ddep, dlen; boolean drun = false; TextField TFlen; public void init() { Button Btn0, Btn1, Btn2, Btn3, Btn4, Btn5, Btn6, Btn7; Label Llen, Ldep; Panel Pnl; Btn0 = new Button("0"); Btn1 = new Button("1"); Btn2 = new Button("2"); Btn3 = new Button("3"); Btn4 = new Button("4"); Btn5 = new Button("5"); Btn6 = new Button("6"); Btn7 = new Button("7"); Pnl = new Panel(); Llen = new Label("Line length:"); Ldep = new Label("Draw Depth:"); TFlen = new TextField("300"); Pnl.add(Llen); Pnl.add(TFlen); Pnl.add(Ldep); Pnl.add(Btn0); Pnl.add(Btn1); Pnl.add(Btn2); Pnl.add(Btn3); Pnl.add(Btn4); Pnl.add(Btn5); Pnl.add(Btn6); Pnl.add(Btn7); add(Pnl); } public boolean action(Event e, Object obj) { if (e.target instanceof Button) { drun = true; ddep = Integer.parseInt(obj.toString()); dlen = Integer.parseInt(TFlen.getText()); repaint(); } return true; } public void paint (Graphics g) { if(drun) { double l, h, t; drun = false; l = dlen; h = l*Math.sin(PI*1/3); t = h*1/3 + STPY; drawTogeline(g, ddep, 0, t, l, t); drawTogeline(g, ddep, l, t, l/2, t+h); drawTogeline(g, ddep, l/2, t+h, 0, t); } } public void drawTogeline(Graphics g, int lev, double sx, double sy, double ex, double ey) { if(lev != 0) { double ftlx, ftly, ftrx, ftry, topx, topy; ftlx = sx+(ex-sx)*1/3; ftly = sy+(ey-sy)*1/3; ftrx = sx+(ex-sx)*2/3; ftry = sy+(ey-sy)*2/3; topx = ftlx+(ftrx-ftlx)*Math.cos(PI*1/3)+(ftry-ftly)*Math.sin(PI*1/3); topy = ftly+(ftry-ftly)*Math.cos(PI*1/3)-(ftrx-ftlx)*Math.sin(PI*1/3); drawTogeline(g, lev-1, sx, sy, ftlx, ftly); drawTogeline(g, lev-1, ftlx, ftly, topx, topy); drawTogeline(g, lev-1, topx, topy, ftrx, ftry); drawTogeline(g, lev-1, ftrx, ftry, ex, ey ); } else { g.drawLine((int)sx, (int)sy, (int)ex, (int)ey); } } }