import java.applet.Applet;
import java.awt.*;
import java.util.*;

public class M0104447_Tree extends Applet{
    double scale=0.7101;
    int n=9;
    int angle=30;
    int w,h;
    double ang=90.0;
    double len=100.0;
	int Flag = 1;


    public void paint(Graphics g){
		double b = 4*Math.random();
		int f = (int)b;

		if(f==0){
			Flag=0;
		}else if(f==1){
			Flag=1;
		}else if(f==2){
			Flag=2;
		}else{
			Flag=3;
		}
	System.out.println("f="+f);//Šm”F—p

	w=getSize().width;
    h=getSize().height;
      double x0,y0;
      x0=w/2;
      y0=0+55;
      g.setColor(Color.black);
      g.fillRect(0,0,w,h);
      g.setColor(new Color(145,42,42));

      rtree(g,n,x0,y0,len,ang);
  	for(int i = 0 ; i < 20; i++){
			 rtree(g,n,x0,y0+(i*50+50),len,ang);
	     	 rtree(g,n,x0+(i*50+50),y0+(i*50+50),len,ang);
	     	 rtree(g,n,x0-(i*50+50),y0+(i*50+50),len,ang);
	     	 rtree(g,n,x0-(i*50+50),y0,len,ang);
	     	 rtree(g,n,x0+(i*50+50),y0,len,ang);
  		}
    }
    public void rtree(Graphics g,int nn,double x0,double y0,double len,double ang){

	 if(Flag == 0){
		 //H
		  if(nn<=0){
			return;
		  }if(nn==1){
			g.setColor(new Color(255,140,0));
		  }if(nn==2){
			g.setColor(new Color(200,20,20));
		  }if(nn==3){
			g.setColor(new Color(100,100,100));
		  }if(nn==4){
			g.setColor(new Color(255,100,10));
		  }

	  } if(Flag == 1){
		  //t
			  if(nn<=0){
					return;
				  }if(nn==1){
					g.setColor(new Color(247, 171, 166));
				  }if(nn==2){
					g.setColor(new Color(247, 100, 100));
				  }if(nn==3){
					g.setColor(new Color(247, 171, 166));
				  }if(nn==4){
					g.setColor(new Color(200, 100, 100));
				}

	 }if(Flag == 2){
		 //“~
			if(nn<=0){
				return;
			  }if(nn==1){
				g.setColor(new Color(255,255,255));
			  }if(nn==2){
				g.setColor(new Color(50,50,50));
			  }if(nn==3){
				g.setColor(new Color(255,255,255));
			  }if(nn==4){
				g.setColor(new Color(10,10,10));
			  }
	 }if(Flag == 3){
		  //‰Ä
		   if(nn<=0){
		  			return;
		  		  }if(nn==1){
		  			g.setColor(new Color(0,55,0));
		  		  }if(nn==2){
		  			g.setColor(new Color(80,255,80));
		  		  }if(nn==3){
		  			g.setColor(new Color(100,255,100));
		  		  }if(nn==4){
		  			g.setColor(new Color(0,255,0));
		  }
	 }

      double x,y;
      final double RAD=Math.PI/180.0;
      x=len*Math.cos(RAD*ang)+x0;
      y=len*Math.sin(RAD*ang)+y0;

      g.drawLine((int)x0,(int)(h-y0),(int)x,(int)(h-y));
      int ang_r1=(int)(Math.random()*100);
      int ang_r2=(int)(Math.random()*100);
      int ang_r3=(int)(Math.random()*100);
      rtree(g,nn-1,x,y,len*scale,ang-ang_r1);
      rtree(g,nn-1,x,y,len*scale,ang+ang_r2);
      rtree(g,nn-1,x,y,len*scale,ang+ang_r3);
      g.setColor(new Color(145,42,42));
  }
}

