Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.27 KB | None | 0 0
  1.  
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6.  
  7. import javafx.application.Application;
  8. import javafx.event.ActionEvent;
  9. import javafx.geometry.Insets;
  10. import javafx.scene.Scene;
  11. import javafx.scene.control.Alert;
  12. import javafx.scene.control.Button;
  13. import javafx.scene.image.Image;
  14. import javafx.scene.image.ImageView;
  15. import javafx.scene.layout.BorderPane;
  16. import javafx.scene.layout.GridPane;
  17. import javafx.scene.layout.StackPane;
  18. import javafx.stage.Stage;
  19.  
  20. public class Puzzle extends Application {
  21.  
  22.    
  23.     Button reset, btns[][], tmps[];
  24.     int br;
  25.    
  26.    
  27.     @Override
  28.     public void start(Stage stage) {
  29.         StackPane container = makeContainer();
  30.        
  31.         Scene s = new Scene(container);
  32.         stage.setScene(s);
  33.         stage.setTitle("Puzzle");
  34.         stage.setResizable(false);
  35.         stage.sizeToScene();
  36.         stage.show();
  37.     }
  38.    
  39.     private StackPane makeContainer() {
  40.         tmps = new Button[2];
  41.         br = 0;
  42.         StackPane sp = new StackPane();
  43.         sp.getChildren().add(makeBackground());
  44.         sp.getChildren().add(makeButtons());
  45.         return sp;
  46.     }
  47.    
  48.     private ImageView makeBackground() {
  49.         ImageView iv = new ImageView();
  50.         FileInputStream path;
  51.         try {
  52.             path = new FileInputStream("pineapple.png");
  53.             Image img = new Image(path);
  54.             iv.setImage(img);
  55.         } catch (FileNotFoundException e) {
  56.             e.printStackTrace();
  57.         }
  58.         return iv;
  59.     }
  60.    
  61.     @SuppressWarnings("static-access")
  62.     private BorderPane makeButtons() {
  63.         BorderPane bp = new BorderPane();
  64.         reset = new Button("Reset");
  65.         reset.setOnAction(this::reseting);
  66.         bp.setTop(reset);
  67.         bp.setMargin(reset, new Insets(15,5,30,5));
  68.         bp.setCenter(makeCenter());
  69.         return bp;
  70.     }
  71.    
  72.     @SuppressWarnings("static-access")
  73.     private GridPane makeCenter() {
  74.         GridPane gp = new GridPane();
  75.         btns = new Button[4][4];
  76.         for(int i = 0; i < 4; i++) {
  77.             for(int j = 0; j < 4; j++) {
  78.                 btns[i][j] = new Button();
  79.                 btns[i][j].setPrefSize(97, 97);
  80.                 btns[i][j].setOnAction(this::clicked);
  81.                 gp.setMargin(btns[i][j], new Insets(5));
  82.                 gp.add(btns[i][j], i, j);
  83.             }
  84.         }
  85.         setText();
  86.         return gp;
  87.     }
  88.    
  89.     private void setText() {
  90.         ArrayList<Integer> list = new ArrayList<>();
  91.         for(int i = 1; i < 9; i++) {
  92.             list.add(i);
  93.             list.add(i);
  94.         }
  95.         Collections.shuffle(list);
  96.         int br = 0;
  97.         for(int i = 0; i < 4; i++) {
  98.             for(int j = 0; j < 4; j++) {
  99.                 btns[i][j].setVisible(true);
  100.                 btns[i][j].setText(list.get(br++).toString());
  101.             }
  102.         }
  103.     }
  104.    
  105.     private void clicked(ActionEvent e) {
  106.         if(br++ % 2 == 0) {
  107.             tmps[0] = (Button) e.getSource();
  108.         } else {
  109.             tmps[1] = (Button) e.getSource();
  110.             if(tmps[0].getText().equals(tmps[1].getText()) && tmps[0]!=tmps[1]) {
  111.                 tmps[0].setVisible(false);
  112.                 tmps[1].setVisible(false);
  113.                 if(isFinish()) showMessage();
  114.             }
  115.            
  116.         }
  117.     }
  118.    
  119.     private void reseting(ActionEvent e) {
  120.         br = 0;
  121.         setText();
  122.     }
  123.    
  124.     private boolean isFinish() {
  125.         for(int i = 0; i < 4; i++) {
  126.             for(int j = 0; j < 4; j++) {
  127.                 if(btns[i][j].isVisible()) return false;
  128.             }
  129.         }
  130.         return true;
  131.     }
  132.  
  133.     private void showMessage() {
  134.         Alert a = new Alert(Alert.AlertType.INFORMATION, "You finished this game with "
  135.                 + br + " trys.");
  136.         a.showAndWait();
  137.     }
  138.    
  139.     public static void main(String[] args) {
  140.         launch(args);
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement