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); } }