SHARE
TWEET

Untitled

a guest Jan 19th, 2020 73 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package dskdev_game_dice;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5. import java.util.List;
  6.  
  7. import javafx.application.Application;
  8. import javafx.event.ActionEvent;
  9. import javafx.event.EventHandler;
  10. import javafx.scene.Scene;
  11. import javafx.scene.control.Alert;
  12. import javafx.scene.control.Alert.AlertType;
  13. import javafx.scene.control.Button;
  14. import javafx.scene.control.Menu;
  15. import javafx.scene.control.MenuBar;
  16. import javafx.scene.control.MenuItem;
  17. import javafx.scene.control.ToolBar;
  18. import javafx.scene.image.Image;
  19. import javafx.scene.image.ImageView;
  20. import javafx.scene.input.MouseButton;
  21. import javafx.scene.input.MouseEvent;
  22. import javafx.scene.layout.Pane;
  23. import javafx.scene.layout.VBox;
  24. import javafx.stage.Stage;
  25.  
  26. public class Game extends Application {
  27.  
  28.     public static void main(String[] args) {
  29.         Application.launch(args);
  30.     }
  31.    
  32.     @Override
  33.     public void start(Stage game) throws Exception {
  34.         game.setTitle("Gra w kości");
  35.         VBox panel = new VBox(createMenu());
  36.         Scene scene = new Scene(panel, 800, 600);
  37.         game.setScene(scene);
  38.         game.show();
  39.     }
  40.    
  41.     // tworzenie menu górnego głównej aplikacji
  42.     private MenuBar createMenu() {
  43.         MenuBar menu = new MenuBar();
  44.         Menu dicesNumber = new Menu("Wybierz ilość kości");
  45.         MenuItem two = new MenuItem("Dwie");
  46.         MenuItem three = new MenuItem("Trzy");
  47.         MenuItem four = new MenuItem("Cztery");
  48.         MenuItem five = new MenuItem("Pięć");
  49.        
  50.         two.setOnAction(new showChoseOption(2));
  51.         three.setOnAction(new showChoseOption(3));
  52.         four.setOnAction(new showChoseOption(4));
  53.         five.setOnAction(new showChoseOption(5));
  54.        
  55.         dicesNumber.getItems().addAll(two, three, four, five);
  56.         menu.getMenus().add(dicesNumber);
  57.         return menu;
  58.     }
  59.    
  60.     // tworzenie przycisku który będzie odpowiadał za przerzucenie kości
  61.     private ToolBar createToolBar() {
  62.         ToolBar bar = new ToolBar();
  63.         Button roll = new Button("Przerzuć kości");
  64.        
  65.         roll.setOnAction(event -> {
  66.             Alert rollAlert = new Alert(AlertType.INFORMATION);
  67.             rollAlert.setTitle("ALERT");
  68.             rollAlert.setHeaderText("Pomyślnie przerzucono kości");
  69.            
  70.             rollAlert.showAndWait();
  71.         });
  72.        
  73.         bar.getItems().add(roll);
  74.         return bar;
  75.     }
  76.    
  77.     private List<Image> createDiceImagesList() {
  78.         Image img1 = new Image("dskdev_game_dice/die_1.png");
  79.         Image img2 = new Image("dskdev_game_dice/die_2.png");
  80.         Image img3 = new Image("dskdev_game_dice/die_3.png");
  81.         Image img4 = new Image("dskdev_game_dice/die_4.png");
  82.         Image img5 = new Image("dskdev_game_dice/die_5.png");
  83.         Image img6 = new Image("dskdev_game_dice/die_6.png");
  84.        
  85.         List<Image> images = new ArrayList<>();
  86.        
  87.         Collections.addAll(images, img1, img2, img3, img4, img5, img6);
  88.        
  89.         return images;
  90.     }
  91.    
  92.     // reszta logiki - generowanie kości, przerzucanie
  93.     private class showChoseOption implements EventHandler<ActionEvent> {
  94.        
  95.         int number;
  96.        
  97.         public showChoseOption(int n) {
  98.             number = n;
  99.         }
  100.        
  101.         @Override
  102.         public void handle(ActionEvent event) {
  103.             Alert alertWindow = new Alert(AlertType.INFORMATION);
  104.             alertWindow.setTitle("Wybrano opcję");
  105.             alertWindow.setHeaderText("Ilość kości, które będą do przerzucenia: " + number);
  106.             alertWindow.showAndWait();
  107.            
  108.             Stage diceGameStage = new Stage(); // nowe okno z kośćmi
  109.             VBox dicePanel = new VBox(createToolBar()); // ogólny VBox dla kości podzielony na menu + obszar rysowania kości
  110.             Pane diceArea = new Pane(); // obszar rysowania kości
  111.             dicePanel.getChildren().add(diceArea); // dodanie obszaru rysowania kości do VBoxa
  112.             Scene diceScene = new Scene(dicePanel, 450, 400);
  113.            
  114.             List<Image> images = createDiceImagesList();
  115.            
  116.             int diePosX = 20;
  117.             final int diePosY = 90;
  118.            
  119.             for(int i = 0; i < number; i++) {
  120.                 ImageView view = new ImageView(images.get((int) Math.floor(Math.random() * 6)));
  121.                 view.setFitHeight(50);
  122.                 view.setFitWidth(50);
  123.                 view.setX(diePosX);
  124.                 view.setY(diePosY);
  125.                 diceArea.getChildren().add(view);
  126.                 diePosX += 90;
  127.  
  128.                 view.addEventHandler(MouseEvent.MOUSE_CLICKED, e -> {
  129.                     if(e.getButton() == MouseButton.PRIMARY) {
  130.                         view.setScaleX(1.4);
  131.                         view.setScaleY(1.4);
  132.                     } else if(e.getButton() == MouseButton.SECONDARY) {
  133.                         view.setScaleX(1);
  134.                         view.setScaleY(1);
  135.                     }
  136.                 });
  137.             }
  138.            
  139.             diceGameStage.setTitle("Przerzucenie");
  140.             diceGameStage.setScene(diceScene);
  141.             diceGameStage.show();
  142.            
  143.         }
  144.     }
  145.  
  146. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top