import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class kz4 extends Applet{
	miCanvas mc;
	Panel pnl_1;

	Label lbl1 = new Label ("360までの数字を入れてボタンを押すと描画");
	TextField tf_numero = new TextField ("360");
	Button botonDibujar = new Button ("Draw");
 
	int n = Integer.parseInt(tf_numero.getText());
	
	// ＋方向
	Point[] p1 = new Point[n+1];
	Point[] p2 = new Point[n+1];
	Point[] p3 = new Point[n+1];
	Point[] p4 = new Point[n+1];
	
	// −方向
	Point[] pm1 = new Point[n+1];
	Point[] pm2 = new Point[n+1];
	Point[] pm3 = new Point[n+1];
	Point[] pm4 = new Point[n+1];   

	public void init (){
		setBackground(Color.white);
		setLayout (new BorderLayout ());
		add ("North", pnl_1 = new Panel());
		pnl_1.setBackground(Color.pink);    
		pnl_1.add(lbl1);
		pnl_1.add(tf_numero);
		pnl_1.add(botonDibujar);

		botonDibujar.addActionListener (new java.awt.event.ActionListener (){
			public void actionPerformed (ActionEvent e){
				int num = Integer.parseInt(tf_numero.getText());
				do_continuar (num);
			}
		});
	}   

	class miCanvas extends Canvas {
		int tf_numero = n;
	}

	public void paint(Graphics g){
		int i;
		double radio = 20.0;   
   
		int iR = 125;
		int iS = 150;
		int iR2 = 0;
		int iS2 = 50;		
		int iT = 10;
		int iT2 = 10;
		int b = 0;
		int m = n;
		for(int ie=1; ie<iT2+1; ie++){// 花の数	　縦
			
			for(int ir=1; ir<iT+1; ir++){// 花の数　横
						
					for (i=0; i<m+1; i++){// 回転数	
						double ang = 2.0*Math.PI*i/(m);// 右回り
						p1[i] = new Point((int)(radio* ang *Math.cos(ang)), (int)(radio* ang *Math.sin(ang)));
						p2[i] = new Point((int)(-radio* ang *Math.cos(ang)), (int)(-radio* ang *Math.sin(ang)));
						p3[i] = new Point((int)(radio* ang *Math.sin(ang)), (int)(radio* ang *Math.cos(ang)));
						p4[i] = new Point((int)(-radio* ang *Math.sin(ang)), (int)(-radio* ang *Math.cos(ang)));
			
						double ang2 = -2.0*Math.PI*i/(m);// 左回り	
						pm1[i] = new Point((int)(radio* ang2 *Math.cos(ang2)), (int)(radio* ang2 *Math.sin(ang2)));
						pm2[i] = new Point((int)(-radio* ang2 *Math.cos(ang2)), (int)(-radio* ang2 *Math.sin(ang2)));
						pm3[i] = new Point((int)(radio* ang2 *Math.sin(ang2)), (int)(radio* ang2 *Math.cos(ang2)));
						pm4[i] = new Point((int)(-radio* ang2 *Math.sin(ang2)), (int)(-radio* ang2 *Math.cos(ang2)));       
			
					} 
					
					int c = (int)(Math.random() * 10.0);
					
					// 色指定
					if(c==0){
						g.setColor(Color.blue); 
					}else if(c==1){
						g.setColor(Color.red); 
					}else if(c==2){
						g.setColor(Color.yellow); 
					}else if(c==3){
						g.setColor(Color.green); 
					}else if(c==4){
						g.setColor(Color.orange); 
					}else if(c==5){
						g.setColor(Color.cyan); 
					}else if(c==6){
						g.setColor(Color.magenta); 
					}else if(c==7){
						g.setColor(Color.pink); 
					}else if(c==8){
						g.setColor(Color.gray); 
					}else{
						g.setColor(Color.black); 
					}
				
					
				if(b%2==0){
					
					for(i=1; i<m+1; i++){// 位置
			
						// ＋方向
						g.drawLine(p1[i-1].x + iR, p1[i-1].y + iS, p1[i].x + iR, p1[i].y + iS);
						g.drawLine(p2[i-1].x + iR, p2[i-1].y + iS, p2[i].x + iR, p2[i].y + iS);
						g.drawLine(p3[i-1].x + iR, p3[i-1].y + iS, p3[i].x + iR, p3[i].y + iS);
						g.drawLine(p4[i-1].x + iR, p4[i-1].y + iS, p4[i].x + iR, p4[i].y + iS);
			
						// −方向
						g.drawLine(pm1[i-1].x + iR, pm1[i-1].y + iS, pm1[i].x + iR, pm1[i].y + iS);
						g.drawLine(pm2[i-1].x + iR, pm2[i-1].y + iS, pm2[i].x + iR, pm2[i].y + iS);
						g.drawLine(pm3[i-1].x + iR, pm3[i-1].y + iS, pm3[i].x + iR, pm3[i].y + iS);
						g.drawLine(pm4[i-1].x + iR, pm4[i-1].y + iS, pm4[i].x + iR, pm4[i].y + iS);  
						
					}
	
					iR += 250;
				
				}else{
					
					for(i=1; i<m+1; i++){// 位置
						
									// ＋方向
						g.drawLine((p1[i-1].x + iR2)/2, (p1[i-1].y + iS2)/2, (p1[i].x + iR2)/2, (p1[i].y + iS2)/2);
						g.drawLine((p2[i-1].x + iR2)/2, (p2[i-1].y + iS2)/2, (p2[i].x + iR2)/2, (p2[i].y + iS2)/2);
						g.drawLine((p3[i-1].x + iR2)/2, (p3[i-1].y + iS2)/2, (p3[i].x + iR2)/2, (p3[i].y + iS2)/2);
						g.drawLine((p4[i-1].x + iR2)/2, (p4[i-1].y + iS2)/2, (p4[i].x + iR2)/2, (p4[i].y + iS2)/2);
			
						// −方向
						g.drawLine((pm1[i-1].x + iR2)/2, (pm1[i-1].y + iS2)/2, (pm1[i].x + iR2)/2, (pm1[i].y + iS2)/2);
						g.drawLine((pm2[i-1].x + iR2)/2, (pm2[i-1].y + iS2)/2, (pm2[i].x + iR2)/2, (pm2[i].y + iS2)/2);
						g.drawLine((pm3[i-1].x + iR2)/2, (pm3[i-1].y + iS2)/2, (pm3[i].x + iR2)/2, (pm3[i].y + iS2)/2);
						g.drawLine((pm4[i-1].x + iR2)/2, (pm4[i-1].y + iS2)/2, (pm4[i].x + iR2)/2, (pm4[i].y + iS2)/2);  
						
					}
					
					iR2 += 500;
					
				}
				
				b++;
				
			}
			
			iR = 125;
			iS += 250;
			iR2 = 0;
			iS2 += 500;
		
		}
		
	} 

	void do_continuar (int c){
		n = c;
		repaint ();
	}

}