// The copyright of this program is reserved by 哲猫. /* Turtle Graphics / 樹木曲線 cf. Ex061010b.java */ /* */ import java.awt.*; import javax.swing.*; import javax.swing.event.*; public class Ex061015b extends JApplet implements ChangeListener{ JSlider sl; double th,Leng; double minl=2.0; dTurtle t; JLabel lb; public void init(){ Container cp = getContentPane(); JPanel pl = new JPanel(); pl.setLayout(null); pl.setBackground(Color.black); sl = new JSlider(0,360,0); // sl.setMajorTickSpacing(60); // 大目盛りの間隔を設定 sl.setMinorTickSpacing(20); // 小目盛りの間隔を設定 sl.setPaintTicks(true); // 目盛りをスライダで表示するかどうかを設定 sl.setBounds(20,5,360,20); sl.addChangeListener(this); sl.setOpaque(false); pl.add(sl); lb = new JLabel("θ = 0°"); lb.setFont(new Font("Dialog", Font.BOLD, 18)); lb.setForeground(Color.cyan); lb.setBounds(310,380,90,20); lb.setVisible(true); pl.add(lb); t = new dTurtle(200,350); t.setColor(Color.yellow); cp.add(pl); } public void stateChanged(ChangeEvent e){ th = sl.getValue()/2.0; lb.setText("θ = "+th+"°"); if(th>90) minl=4.0; else minl=2.0; Leng=80.0; repaint(); } public void paint(Graphics g){ super.paint(g); tree(Leng,g); } public void tree(double length,Graphics g){ if(length>45) t.setColor(Color.white); if(length<=45 && length>25) t.setColor(Color.red); if(length<=25 && length>14) t.setColor(Color.green); if(length<14 && length>8) t.setColor(Color.blue); if(length<8 && length>6) t.setColor(Color.orange); if(length<6 && length>3) t.setColor(Color.cyan); if(length<3) t.setColor(Color.yellow); t.move(length,g); if(length>minl){ t.turn(th); tree(length*.75,g); t.turn(-th*2); tree(length*.75,g); t.turn(th); } t.warp(-length); } }