import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Hanoi extends JPanel implements ActionListener {
	private JTextField input;
	private JTextArea output;
	
	public Hanoi() {
		input = new JTextField("0", 8);
		input.addActionListener(this);
		output = new JTextArea(32, 22);
		setLayout(new FlowLayout());
		add(input);
		add(output);
	}

	private void hanoi(int n, String a, String b, String c) {
		if (n > 0) {
			hanoi(n - 1, a, c, b);
			output.append("円盤 " + n + "を、" + a + "から" + b + "へ。\n");
			hanoi(n - 1, c, b, a);
		}
	}

	public void actionPerformed(ActionEvent e) {
		int n = Integer.parseInt(input.getText());

		hanoi(n, "棒A", "棒B", "棒C");
		output.append("以上\n\n");
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(() -> {
			JFrame frame = new JFrame("ハノイの塔");
			frame.add(new Hanoi());
			frame.pack();
			frame.setVisible(true);
			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		});
	}
}

