Последнее значение из кости JAVAFX - PullRequest
0 голосов
/ 25 апреля 2018

Обычно я не хожу на подобные сайты, но у меня есть серьезный вопрос о нуби, и я не могу понять, как это исправить.

Поэтому у меня есть простая игра в кости, которая бросается, когда вы нажимаетекнопка.Он распечатывает все номера кубиков в консоли.Теперь я хочу сохранить последний int, чтобы я мог делать с ним вычисления и т.д.Теперь проблема в том, что я не имею ни малейшего представления, как получить последний 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

            });


});

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы можете добавить переменную int к классу Die.

import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

/**
 *
 * @author blj0011
 */
public class Die
{
    ImageView dieFace;
    Image[] images;
    int dieValue;

    public Die(Image[] images)
    {
        this.images = images;
        dieFace = new ImageView(this.images[0]);//set default to image 0
        dieValue = 1;
    }

    public Die(Image[] images, int dieFaceValue)
    {
        //Need to catch for values less than 1 and greater than 6!
        this.images = images;
        dieFace = new ImageView(this.images[dieFaceValue - 1]);
        dieValue = dieFaceValue;
    }

    public ImageView getdieFace()
    {
        return dieFace;
    }

    public int getDieValue()
    {
        return dieValue;
    }

    public void setDieFace(int dieFaceValue)
    {
        //Need to catch for values less than 1 and greater than 6!
        dieFace.setImage(this.images[dieFaceValue - 1]);
        dieValue = dieFaceValue;
    }
} 
0 голосов
/ 26 апреля 2018

Лучший вариант - просто хранить значения где-то.Ваш класс 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();


});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...