Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement