java - JAVAFX 骰子的最后值

标签 java javafx

我通常不会访问此类网站,但我遇到了一个严重的菜鸟问题,并且无法真正找到如何解决此问题。

所以我有一个简单的骰子,当你按下按钮时它就会滚动。它在控制台中打印出所有骰子数字。现在我想保存最后一个 int,这样我就可以用它进行计算等。现在的问题是我严重不知道如何获取骰子的最后一个整数并将其在控制台中打印出来。有谁有这方面的经验并且可以帮助我吗?这是我的代码:

btn.setText("Roll Die");
        btn.setOnAction((ActionEvent event) -> {
            btn.setDisable(true);//Disable Button
            Random random = new Random();
            int gekozen = Integer.parseInt(tf3.getText());

            Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(.3), (actionEvent) -> {
                int tempRandom = random.nextInt(6) + 1;
                System.out.println(tempRandom);
                die.setDieFace(tempRandom);

        }));

        timeline.setCycleCount(random.nextInt(20) + 1);
            timeline.play();
            timeline.setOnFinished(actionEvent -> {
                btn.setDisable(false);//Enable Button

            });


});

最佳答案

最好的选择是将值存储在某个地方。您的 Die 类(或 die 所属的任何类)似乎是一个很好的候选者。在设计良好的类中,如果将值传递给 set 方法,例如 setXyz(x),然后调用 getXyz(),则不会对同一对象进行任何操作同时,将返回相同的值x。因此,如果您按照标准 Java 模式设计了类,那么您可以这样做

timeline.setCycleCount(random.nextInt(20) + 1);
timeline.play();
timeline.setOnFinished(actionEvent -> {
    btn.setDisable(false);//Enable Button
    int dieValue = die.getDieFace();
    System.out.println(dieValue);
});

另一种选择是提前计算所有临时骰子值:

btn.setText("Roll Die");
btn.setOnAction((ActionEvent event) -> {
    btn.setDisable(true);//Disable Button
    Random random = new Random();
    int gekozen = Integer.parseInt(tf3.getText());

    int numTempValues = random.nextInt(20) + 1 ;
    int[] tempValues = random.ints(1, 7).limit(numTempValues).toArray();
    int finalDieValue = tempValues[numTempValues - 1];
    Timeline timeline = new Timeline() ;
    for (int i = 0 ; i < tempValues.length ; i++) {
        KeyFrame keyFrame = new KeyFrame(Duration.seconds(0.3).multiply(i+1), actionEvent -> {
            System.out.println(tempValues[i]);
            die.setDieFace(tempValues[i]);
        });
        timeline.getKeyFrames().add(keyFrame);
    }

    timeline.setOnFinished(actionEvent -> {
        btn.setDisable(false);//Enable Button
        System.out.println("You rolled: "+finalDieValue);
    });

    timeline.play();


});

关于java - JAVAFX 骰子的最后值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50030597/

相关文章:

java - 如何使 JavaFX MediaView 拉伸(stretch)媒体填充父容器?

javafx - JAXB marshall 属性

在新线程中执行任务时 JavaFX UI 卡住

java - FireStore 日期查询未按预期工作

java - 使用 google-http-java-client 发布多部分表单

JavaFX 从选项卡获取元素

JavaFX - 尺寸的 CSS 变量?

java - 作为泛型类型绑定(bind)的静态嵌套类不起作用

java - 理解java中的synchronizedlist

java - 将字符串转换为 ObservableValue<String>