Ok、JavaFXを使用してGUIを使用してテキストベースのゲームを作成しようとしています。私は実際のゲームのループに入る前に、すべてうまくいきました。いったん私はゲームループにコードを入れても、プログラムは起動しませんでした。エラーや例外なく実行されますが、ウィンドウは単にポップアップしません。ウィンドウを閉じると、IntelliJのすべてのコマンドラインに「Exit code 130で処理が完了しました」と表示されます。これは、ユーザーがCtrl + Cキーを押してプログラムが終了したことを意味しているようです。これはウィンドウがポップアップしていないためではありません。そのため、ユーザーはCtrl + Cを押してプログラムを終了することはできません。だから私の質問は、ウィンドウをポップアップすることを拒否せずに、ゲームループ(whileループ)で自分のプログラムを実行できるようにするには何ができるのだろうか。ここにある私のコードです:whileループを使用すると、JavaFXプログラムが起動しない
package sample;
/**
* Created by Angel on 7/26/16.
*/
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
public class Game {
// Inventory is a class that i made,
// but im sure it has nothing to do with my problem
private Inventory inv = new Inventory();
private String levels;
private Scene scene;
private Label topText;
private Button btn1;
private Button btn2;
private Button btn3;
private boolean gameOn;
public void gameStart(){
// Setting the GUI
// Setting up the window
VBox window = new VBox(210);
// setting up the top text holder.
HBox textHolder = new HBox();
textHolder.setAlignment(Pos.CENTER);
// setting up the label
topText = new Label();
topText.setText("You in a dark room, what do you do?");
// setting up the button holder
HBox buttonHolder = new HBox(50);
buttonHolder.setAlignment(Pos.CENTER);
// setting up the buttons
btn1 = new Button();
btn1.setPrefWidth(260);
btn1.setPrefHeight(30);
btn1.getStyleClass().add("gameButtons");
btn1.setText("1");
btn2 = new Button();
btn2.setPrefWidth(260);
btn2.setPrefHeight(30);
btn2.getStyleClass().add("gameButtons");
btn2.setText("2");
btn3 = new Button();
btn3.setPrefWidth(260);
btn3.setPrefHeight(30);
btn3.getStyleClass().add("gameButtons");
btn3.setText("3");
// finalizing the gui, by putting it all together
textHolder.getChildren().add(topText);
buttonHolder.getChildren().addAll(btn1, btn2, btn3);
window.getChildren().addAll(textHolder, buttonHolder);
// setting up the scene
scene = new Scene(window, 800, 600);
//adding the css script
// adding css script
scene.getStylesheets().add(this.getClass().getResource("game.css").toExternalForm());
// the game loop.
levels = "Storyline";
gameOn = true;
while(gameOn) {
switch (levels) {
case "Storyline":
btn1.setText("search around");
btn2.setText("turn the light on");
btn3.setText("stand in fear");
btn2.setOnAction(e -> levels = "level1");
break;
case "level1":
topText.setText("You turned the light on");
break;
}
}
}
public Scene getScene(){
return scene;
}
}
なぜテキストを絶えず設定する無限ループを使用していますか? –
ああ私の神様、私はそれをやっていることに気づいていませんでした。他の方法はありますか?私は他の方法でそれをする方法を知らない...ループなしでそれを書いて間違っているだろうか?または非従来の方法ですか? switch文を使用しようとしています。ループを使用せずにswitch文をもう一度実行して実行する方法はありますか?@krzyk –
@AngelGarciaはメソッドとオブジェクトを使用します。 – SomeJavaGuy