簡単な◯×クイズを作っています。
進むボタンを押すと、次の問題がランダムに表示されるようにしたいのですが、うまくいきません。
18行目に int j = new Random().nextInt(6);を入れているからダメだということはわかっているのですが、
next.setOnAction( のところに int j = new Random().nextInt(6);を入れると、maruとbatuで判定ができなくなります。
どのようなプログラムだとうまくいくのかご教授お願いします。
import java.util.Random; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.FlowPane; import javafx.stage.Stage; //javaFXを使うときはpublicをつける。 public class a extends Application { public static void main(String[] args) { launch(args); } public void start(Stage myStage) { int j = new Random().nextInt(6); myStage.setTitle("◯ × クイズ"); FlowPane rootNode = new FlowPane(30, 30);//(横幅, 縦幅) rootNode.setAlignment(Pos.TOP_LEFT); //配置位置を設定 // Sceneの作成 Scene myScene = new Scene(rootNode, 450, 600); // stage上にsceneを作成 myStage.setScene(myScene); // label,ImageViewを作成 Label response = new Label(); //テキストを配置するためのもの response.setText("◯ × クイズ\nスタート"); //画像を配置するためのもの ImageView logo = new ImageView(); ImageView logo2 = new ImageView(); Image img = new Image("https://frame-illust.com/fi/wp-content/uploads/2016/02/6728.png", 150, 150, false, false); // ◯ logo.setImage(img); Image img2 = new Image("https://illust8.com/wp-content/uploads/2020/10/batsu_cute_cat_11250.png", 150, 150, false, false); // × logo2.setImage(img2); //Buttonの作成 Button next = new Button("進む"); Button clear = new Button("リセット"); Button maru = new Button("◯"); maru.setPrefWidth(50); Button batu = new Button("×"); batu.setPrefWidth(50); //nextボタンが押された時の処理 next.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent ae) { Image img = new Image("https://frame-illust.com/fi/wp-content/uploads/2016/02/6728.png", 150, 150, false, false); // ◯ logo.setImage(img); Image img2 = new Image("https://illust8.com/wp-content/uploads/2020/10/batsu_cute_cat_11250.png", 150, 150, false, false); // × logo2.setImage(img2); if (j == 0) { response.setText("\n1円玉の直径は1センチメートルである。");//× } else if (j == 1) { response.setText("\n夏になると増える蚊ですが、主食は人間の血液である。");//× } else if (j == 2) { response.setText("\n地球上で一番素早く動ける動物はチーターである。");//×︎ } else if (j == 3) { response.setText("\nキラキラネームで「プリンセスキャンディ」と命名された方が実在する。");//◯︎ } else if (j == 4) { response.setText("\n食用として飼育されている豚の体脂肪率は、一般的には30%である。");//× } else if (j == 5) { response.setText("\n涙の味は感情によって変化する。");//◯︎ } rootNode.getChildren().addAll(maru, batu); } }); //◯ボタンが押された時の処理 maru.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent ae) { if (j == 0) { response.setText("\n残念!\n答えは×で直径2センチメートルでした。\n\n\n\n"); } else if (j == 1) { response.setText("\n残念!\n答えは×で主食は花や密などでした。\n\n\n\n\n\n"); } else if (j == 2) { response.setText("\n残念!\n答えは×でハヤブサの時速389kmでした。\n\n\n\n"); } else if (j == 3) { response.setText("\n正解です!\n月曜から夜更かしという番組で紹介されました。"); } else if (j == 4) { response.setText("\n残念!\n答えは×で豚の体脂肪率は、14~18%です。何気にマッチョです。"); } else if (j == 5) { response.setText("\n正解です!\nうれしい時に流す涙は比較的含まれるナトリウム量が少ないため、味が薄いです。\n怒っている時など感情が昂っている際はナトリウムの量が増え、塩辛くなります。"); } } }); //×ボタンが押された時の処理 batu.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent ae) { if (j == 0) { response.setText("正解です!\n直径2センチメートルでした。\n\n\n\n\n\n"); } else if (j == 1) { response.setText("正解です!\n主食は花や密などです。\n\n\n\n\n\n\n\n"); } else if (j == 2) { response.setText("正解です!\nハヤブサの時速389kmです。\n\n\n\n\n\n\n"); } else if (j == 3) { response.setText("残念!\n答えは◯で月曜から夜更かしという番組で紹介されています。"); } else if (j == 4) { response.setText("正解です。\n豚の体脂肪率は、14~18%です。何気にマッチョです。"); } else if (j == 5) { response.setText("残念!\n答えは◯で実はうれしい時に流す涙は比較的含まれるナトリウム量が少ないため、味が薄いです。\n怒っている時など感情が昂っている際はナトリウムの量が増え、塩辛くなります。"); } } }); //リセットボタンを押した後の処理 clear.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent ae) { response.setText(null); } }); // sceneにテキストフィールド、ボタン、ラベルを設置 rootNode.getChildren().addAll(clear, next, response, logo, logo2); myStage.show(); } }
Eclipseを使っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/16 11:41