Игра памяти JavaFX (проблема скрытия значений тайлов) - PullRequest
1 голос
/ 06 марта 2020

Я делаю игру памяти для школы, и у меня возникли некоторые проблемы с сокрытием плиток в моей сетке. У меня есть отдельный класс, где я использую свои обработчики событий. Я использовал ObservableList, чтобы заполнить свою сетку панелями, но я понятия не имел, как заставить их исчезнуть. Спасибо, что посмотрели, я попытался использовать FadeTransition в классе представления.

Представление

public class GameView extends GridPane {
    private static final int PAREN = 10;
    private Label scoreSpeler1;
    private Label countDown;
    private Label title;
    private final static Color backgroundColor = Color.rgb(225, 93, 68);
    int waarde = 0;
    ObservableList<Button> vakken;



    public GameView() {
        this.initialiseNodes();
        this.layoutNodes();
        this.verdwijnWaarde();
        this.toonWaarde();
    }

    private void initialiseNodes() {
        scoreSpeler1 = new Label("Score: 0");
        countDown = new Label("Tijd: 60");
        title = new Label("Memory");
        /*knoppen met cijfers*/
        vakken = FXCollections.observableArrayList(new ArrayList<>());
        for (int i = 0; i < PAREN; i++) {
            vakken.add(new Button(String.valueOf(waarde)));
            vakken.add(new Button(String.valueOf(waarde)));
            waarde++;
        }

        FXCollections.shuffle(vakken);


    }

    private void layoutNodes() {
        //score en tijd plaatsen
        this.add(scoreSpeler1, 0, 0);
        this.add(title, 2, 0);
        this.add(countDown, 4, 0);

        //memory knoppen plaatsen
        int k = 0;
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 4; j++) {
                this.add(vakken.get(k), i, j + 2);
                k++;
            }
        }

        //label uiterlijk
        GridPane.setHalignment(countDown, HPos.RIGHT);
        GridPane.setHalignment(title, HPos.CENTER);


        title.setId("titelGame");
        scoreSpeler1.setId("scoreSpeler1");
        countDown.setId("countDown");
        //button/memory uiterlijk
        for (Button button : vakken) {
            button.setPrefHeight(120);
            button.setPrefWidth(90);
        }

        //gridpane uiterlijk
        this.setGridLinesVisible(false);
        this.setBackground(new Background(new BackgroundFill(backgroundColor, null, null)));

        this.setHgap(15);
        this.setVgap(15);
        this.setPadding(new Insets(10, 10, 10, 10));

        this.autosize();

        this.setAlignment(Pos.CENTER);


    }

    public void verdwijnWaarde() {
        FadeTransition verstopWaardes = new FadeTransition();
        verstopWaardes.durationProperty(Duration.seconds(2), this.vakken.get(1));
        verstopWaardes.setToValue(0);
        verstopWaardes.play();
    }

    public void toonWaarde() {
        FadeTransition toonWaardes = new FadeTransition();
        toonWaardes.durationProperty(Duration.seconds(0.5), vakken);
        toonWaardes.setToValue(1);
        toonWaardes.play();
    }

}

Presenter

public class GamePresenter {
    private MemoryModel model;
    private GameView gameView;

     public GamePresenter(MemoryModel model, GameView gameView){
         this.model = model;
         this.gameView = gameView;
         addEventHandlers();

     }

     private void addEventHandlers(){
         gameView.setOnMouseClicked(new EventHandler<MouseEvent>() {
             @Override
             public void handle(MouseEvent mouseEvent) {
            gameView.toonWaarde();
             }
         });

     }
     private void updateView(){

     }
     public void addWindowEventHandlers(){

     }


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