Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.56 KB | None | 0 0
  1. package fruitninja.controllers;
  2.  
  3. import fruitninja.App;
  4. import fruitninja.models.GameObject;
  5. import fruitninja.models.Player;
  6. import fruitninja.models.PlayingField;
  7. import fruitninja.models.Position;
  8. import javafx.application.Platform;
  9. import javafx.event.ActionEvent;
  10. import javafx.fxml.FXML;
  11. import javafx.fxml.FXMLLoader;
  12. import javafx.scene.Parent;
  13. import javafx.scene.Scene;
  14. import javafx.scene.control.Label;
  15. import javafx.scene.image.Image;
  16. import javafx.scene.image.ImageView;
  17. import javafx.scene.input.MouseEvent;
  18. import javafx.scene.layout.Pane;
  19. import javafx.scene.media.AudioClip;
  20. import javafx.scene.shape.Rectangle;
  21. import javafx.stage.Stage;
  22.  
  23. import java.io.IOException;
  24. import java.util.Timer;
  25. import java.util.TimerTask;
  26.  
  27. public class MainController {
  28. @FXML
  29. public Pane pnField;
  30. public Pane pnHeader;
  31. public Label lbScore;
  32. public Label lbLives;
  33. public ImageView ivObject;
  34.  
  35. private Player player;
  36. private PlayingField field;
  37.  
  38. private Timer timer;
  39. private AudioClip gameSound;
  40.  
  41. @FXML
  42. public void initialize() {
  43. player = new Player();
  44. field = new PlayingField();
  45.  
  46. pnField.addEventHandler(MouseEvent.MOUSE_PRESSED, event -> {
  47. Position pos = new Position(event.getX(), event.getY());
  48. field.getSlash().setStartingPoint(pos);
  49. });
  50.  
  51. pnField.addEventHandler(MouseEvent.MOUSE_RELEASED, event -> {
  52. Position pos = new Position(event.getX(), event.getY());
  53. field.getSlash().setEndingPosition(pos);
  54. handleMouse();
  55. });
  56.  
  57. pnField.setClip(new Rectangle(500, 500));
  58.  
  59. start();
  60. }
  61.  
  62. private void start() {
  63. gameSound = new AudioClip(getClass().getClassLoader().getResource("sound/game_music.wav").toString());
  64. gameSound.setCycleCount(AudioClip.INDEFINITE);
  65. gameSound.play();
  66.  
  67. newGameObject();
  68. handleTimer();
  69. }
  70.  
  71. private void newGameObject() {
  72. GameObject gameObject = field.createGameObject();
  73. String name = gameObject.getType().toString().toLowerCase();
  74.  
  75. Image image = new Image("/images/" + name + ".png");
  76. ivObject.setImage(image);
  77. ivObject.setLayoutX(gameObject.getPos().getX());
  78. ivObject.setLayoutY(gameObject.getPos().getY());
  79. ivObject.setFitWidth(gameObject.getSize());
  80. ivObject.setFitHeight(gameObject.getSize());
  81.  
  82. lbScore.setText("Score: " + player.getScore());
  83. lbLives.setText("Live: " + player.getLives());
  84. }
  85.  
  86. private void handleTimer() {
  87. timer = new Timer();
  88. timer.schedule(new TimerTask() {
  89. @Override
  90. public void run() {
  91. Platform.runLater(() -> handleMove());
  92.  
  93. // We need to check if the game object is out of the field
  94. // immediately. Otherwise there might be a move without an
  95. // image, because the move if ran later.
  96. if (field.objectOutOfBounds()) {
  97. newGameObject();
  98. }
  99. }
  100. }, 0, 6);
  101.  
  102. }
  103.  
  104. private void handleMove() {
  105. field.moveGameObject();
  106. ivObject.setLayoutX(field.getGameObject().getPos().getX());
  107. ivObject.setLayoutY(field.getGameObject().getPos().getY());
  108. }
  109.  
  110. private void handleMouse() {
  111. boolean slashed = field.getSlash().pathsCrossed(field.getGameObject());
  112.  
  113. if (!slashed) {
  114. return;
  115. }
  116.  
  117. AudioClip audioClip = new AudioClip(getClass().getClassLoader().getResource("sound/slash.wav").toString());
  118. audioClip.play();
  119.  
  120. boolean dead = field.getGameObject().successfulSlash(player);
  121.  
  122. if (dead) {
  123. timer.cancel();
  124. timer.purge();
  125. gameSound.stop();
  126. openEnd();
  127.  
  128.  
  129. } else {
  130. newGameObject();
  131. }
  132. }
  133.  
  134. public void openEnd(){
  135. try {
  136. int iScore = player.getScore();
  137. FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/EndScore.fxml"));
  138.  
  139. Parent root = (Parent)fxmlLoader.load();
  140. EndScoreController controller = fxmlLoader.<EndScoreController>getController();
  141. controller.endScore(iScore);
  142. Stage stage = new Stage();
  143. stage.setTitle("Fruit Ninja");
  144. stage.setScene(new Scene(root));
  145. stage.show();
  146. }
  147. catch (IOException e) {
  148. System.out.println("error");
  149. }
  150. }
  151.  
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement