Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fruitninja.controllers;
- import fruitninja.App;
- import fruitninja.models.GameObject;
- import fruitninja.models.Player;
- import fruitninja.models.PlayingField;
- import fruitninja.models.Position;
- import javafx.application.Platform;
- import javafx.event.ActionEvent;
- import javafx.fxml.FXML;
- import javafx.fxml.FXMLLoader;
- import javafx.scene.Parent;
- import javafx.scene.Scene;
- import javafx.scene.control.Label;
- import javafx.scene.image.Image;
- import javafx.scene.image.ImageView;
- import javafx.scene.input.MouseEvent;
- import javafx.scene.layout.Pane;
- import javafx.scene.media.AudioClip;
- import javafx.scene.shape.Rectangle;
- import javafx.stage.Stage;
- import java.io.IOException;
- import java.util.Timer;
- import java.util.TimerTask;
- public class MainController {
- @FXML
- public Pane pnField;
- public Pane pnHeader;
- public Label lbScore;
- public Label lbLives;
- public ImageView ivObject;
- private Player player;
- private PlayingField field;
- private Timer timer;
- private AudioClip gameSound;
- @FXML
- public void initialize() {
- player = new Player();
- field = new PlayingField();
- pnField.addEventHandler(MouseEvent.MOUSE_PRESSED, event -> {
- Position pos = new Position(event.getX(), event.getY());
- field.getSlash().setStartingPoint(pos);
- });
- pnField.addEventHandler(MouseEvent.MOUSE_RELEASED, event -> {
- Position pos = new Position(event.getX(), event.getY());
- field.getSlash().setEndingPosition(pos);
- handleMouse();
- });
- pnField.setClip(new Rectangle(500, 500));
- start();
- }
- private void start() {
- gameSound = new AudioClip(getClass().getClassLoader().getResource("sound/game_music.wav").toString());
- gameSound.setCycleCount(AudioClip.INDEFINITE);
- gameSound.play();
- newGameObject();
- handleTimer();
- }
- private void newGameObject() {
- GameObject gameObject = field.createGameObject();
- String name = gameObject.getType().toString().toLowerCase();
- Image image = new Image("/images/" + name + ".png");
- ivObject.setImage(image);
- ivObject.setLayoutX(gameObject.getPos().getX());
- ivObject.setLayoutY(gameObject.getPos().getY());
- ivObject.setFitWidth(gameObject.getSize());
- ivObject.setFitHeight(gameObject.getSize());
- lbScore.setText("Score: " + player.getScore());
- lbLives.setText("Live: " + player.getLives());
- }
- private void handleTimer() {
- timer = new Timer();
- timer.schedule(new TimerTask() {
- @Override
- public void run() {
- Platform.runLater(() -> handleMove());
- // We need to check if the game object is out of the field
- // immediately. Otherwise there might be a move without an
- // image, because the move if ran later.
- if (field.objectOutOfBounds()) {
- newGameObject();
- }
- }
- }, 0, 6);
- }
- private void handleMove() {
- field.moveGameObject();
- ivObject.setLayoutX(field.getGameObject().getPos().getX());
- ivObject.setLayoutY(field.getGameObject().getPos().getY());
- }
- private void handleMouse() {
- boolean slashed = field.getSlash().pathsCrossed(field.getGameObject());
- if (!slashed) {
- return;
- }
- AudioClip audioClip = new AudioClip(getClass().getClassLoader().getResource("sound/slash.wav").toString());
- audioClip.play();
- boolean dead = field.getGameObject().successfulSlash(player);
- if (dead) {
- timer.cancel();
- timer.purge();
- gameSound.stop();
- openEnd();
- } else {
- newGameObject();
- }
- }
- public void openEnd(){
- try {
- int iScore = player.getScore();
- FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/EndScore.fxml"));
- Parent root = (Parent)fxmlLoader.load();
- EndScoreController controller = fxmlLoader.<EndScoreController>getController();
- controller.endScore(iScore);
- Stage stage = new Stage();
- stage.setTitle("Fruit Ninja");
- stage.setScene(new Scene(root));
- stage.show();
- }
- catch (IOException e) {
- System.out.println("error");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement