import javafx.application.Application;
import javafx.scene.layout.VBox;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;

public class Hanoi extends Application {

    private TextArea output;
    public void start(Stage stage) {
        stage.setTitle("ハノイの塔");
        TextField input = new TextField("0");
        output = new TextArea("");
        output.setPrefColumnCount(32);
        output.setPrefRowCount(22);
        input.setOnAction(e -> {
            int n = Integer.parseInt(input.getText());
            hanoi(n, "棒A", "棒B", "棒C");
            output.setText(output.getText() + "以上\n\n");
        });

        VBox root = new VBox();
        root.getChildren().addAll(input, output);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }

    private void hanoi(int n, String a, String b, String c) {
        if (n == 1) {
            output.setText(output.getText() + "円盤 1を、" + a + "から" + b + "へ。\n");
        }
        else {
            hanoi(n - 1, a, c, b);
            output.setText(output.getText() + "円盤 " + n + "を、" + a + "から" + b + "へ。\n");
            hanoi(n - 1, c, b, a);
        }
    }

    public static void main(String... args) {
        launch(args);
    }
}
