Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.util.ArrayList;
- import java.util.Collections;
- import javafx.application.Application;
- import javafx.event.ActionEvent;
- import javafx.geometry.Insets;
- import javafx.scene.Scene;
- import javafx.scene.control.Alert;
- import javafx.scene.control.Button;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.layout.BorderPane;
- import javafx.scene.layout.GridPane;
- import javafx.scene.layout.StackPane;
- import javafx.stage.Stage;
- public class Puzzle extends Application {
- Button reset, btns[][], tmps[];
- int br;
- @Override
- public void start(Stage stage) {
- StackPane container = makeContainer();
- Scene s = new Scene(container);
- stage.setScene(s);
- stage.setTitle("Puzzle");
- stage.setResizable(false);
- stage.sizeToScene();
- stage.show();
- }
- private StackPane makeContainer() {
- tmps = new Button[2];
- br = 0;
- StackPane sp = new StackPane();
- sp.getChildren().add(makeBackground());
- sp.getChildren().add(makeButtons());
- return sp;
- }
- private ImageView makeBackground() {
- ImageView iv = new ImageView();
- FileInputStream path;
- try {
- path = new FileInputStream("pineapple.png");
- Image img = new Image(path);
- iv.setImage(img);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- return iv;
- }
- @SuppressWarnings("static-access")
- private BorderPane makeButtons() {
- BorderPane bp = new BorderPane();
- reset = new Button("Reset");
- reset.setOnAction(this::reseting);
- bp.setTop(reset);
- bp.setMargin(reset, new Insets(15,5,30,5));
- bp.setCenter(makeCenter());
- return bp;
- }
- @SuppressWarnings("static-access")
- private GridPane makeCenter() {
- GridPane gp = new GridPane();
- btns = new Button[4][4];
- for(int i = 0; i < 4; i++) {
- for(int j = 0; j < 4; j++) {
- btns[i][j] = new Button();
- btns[i][j].setPrefSize(97, 97);
- btns[i][j].setOnAction(this::clicked);
- gp.setMargin(btns[i][j], new Insets(5));
- gp.add(btns[i][j], i, j);
- }
- }
- setText();
- return gp;
- }
- private void setText() {
- ArrayList<Integer> list = new ArrayList<>();
- for(int i = 1; i < 9; i++) {
- list.add(i);
- list.add(i);
- }
- Collections.shuffle(list);
- int br = 0;
- for(int i = 0; i < 4; i++) {
- for(int j = 0; j < 4; j++) {
- btns[i][j].setVisible(true);
- btns[i][j].setText(list.get(br++).toString());
- }
- }
- }
- private void clicked(ActionEvent e) {
- if(br++ % 2 == 0) {
- tmps[0] = (Button) e.getSource();
- } else {
- tmps[1] = (Button) e.getSource();
- if(tmps[0].getText().equals(tmps[1].getText()) && tmps[0]!=tmps[1]) {
- tmps[0].setVisible(false);
- tmps[1].setVisible(false);
- if(isFinish()) showMessage();
- }
- }
- }
- private void reseting(ActionEvent e) {
- br = 0;
- setText();
- }
- private boolean isFinish() {
- for(int i = 0; i < 4; i++) {
- for(int j = 0; j < 4; j++) {
- if(btns[i][j].isVisible()) return false;
- }
- }
- return true;
- }
- private void showMessage() {
- Alert a = new Alert(Alert.AlertType.INFORMATION, "You finished this game with "
- + br + " trys.");
- a.showAndWait();
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement