Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package koala.mg;
- import java.util.ArrayList;
- import java.util.List;
- import javafx.animation.AnimationTimer;
- import javafx.application.Application;
- import javafx.event.EventHandler;
- import javafx.scene.Group;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.input.KeyEvent;
- import javafx.scene.paint.Color;
- import javafx.scene.shape.Circle;
- import javafx.scene.shape.Rectangle;
- import javafx.scene.shape.Shape;
- import javafx.scene.text.Font;
- import javafx.scene.text.FontPosture;
- import javafx.scene.text.FontWeight;
- import javafx.scene.text.Text;
- import javafx.stage.Stage;
- public class MazeGame extends Application {
- Stage window;
- Shape walls = null;
- Rectangle end;
- Circle player;
- @Override
- public void start(Stage mainStage) {
- try {
- window = mainStage;
- Button ao = new Button("Another One");
- ao.setOnAction(e -> {
- window.close();
- start(new Stage());
- });
- Generator generator = new Generator(50, 50);
- Group root = new Group();
- Scene scene = new Scene(root);
- window.setTitle("Maze Game");
- window.setScene(scene);
- player = new Circle((generator.sd * 10) + 5, (generator.sw * 10) + 5, 4, Color.BLUE);
- List<Rectangle> walls = new ArrayList<Rectangle>();
- for (int i = 0; i < generator.width; i++) {
- for (int j = 0; j < generator.depth; j++) {
- if (generator.maze[j][i] == 1) {
- Rectangle rect = new Rectangle(j * 10, i * 10, 10, 10);
- rect.setFill(Color.BLACK);
- rect.setStroke(Color.BLACK);
- walls.add(rect);
- root.getChildren().add(rect);
- }
- }
- }
- end = new Rectangle(generator.ed * 10, generator.ew * 10, 10, 10);
- end.setFill(Color.GREEN);
- root.getChildren().addAll(end, player);
- List<String> codes = new ArrayList<String>();
- scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
- @Override
- public void handle(KeyEvent e) {
- String code = e.getCode().toString();
- if (!codes.contains(code)) {
- codes.add(code);
- }
- }
- });
- scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
- @Override
- public void handle(KeyEvent e) {
- String code = e.getCode().toString();
- codes.remove(code);
- }
- });
- new AnimationTimer() {
- @Override
- public void handle(long cnt) {
- boolean canMoveLeft = true;
- boolean canMoveRight = true;
- boolean canMoveUp = true;
- boolean canMoveDown = true;
- // This part does not function as expected vvv
- if (codes.contains("LEFT")) {
- for (Rectangle rect : walls) {
- if (rect.intersects(
- new Circle(player.getCenterX() - 1, player.getCenterY(), 4).getBoundsInLocal())) {
- canMoveLeft = false;
- break;
- }
- }
- if (canMoveLeft)
- player.setCenterX(player.getCenterX() - 1);
- }
- if (codes.contains("RIGHT")) {
- for (Rectangle rect : walls) {
- if (rect.intersects(
- new Circle(player.getCenterX() + 1, player.getCenterY(), 4).getBoundsInLocal())) {
- canMoveRight = false;
- break;
- }
- }
- if (canMoveRight)
- player.setCenterX(player.getCenterX() + 1);
- }
- if (codes.contains("UP")) {
- for (Rectangle rect : walls) {
- if (rect.intersects(
- new Circle(player.getCenterX(), player.getCenterY() - 1, 4).getBoundsInLocal())) {
- canMoveUp = false;
- break;
- }
- }
- if (canMoveUp)
- player.setCenterY(player.getCenterY() - 1);
- }
- if (codes.contains("DOWN")) {
- for (Rectangle rect : walls) {
- if (rect.intersects(
- new Circle(player.getCenterX(), player.getCenterY() + 1, 4).getBoundsInLocal())) {
- canMoveDown = false;
- break;
- }
- }
- if (canMoveDown)
- player.setCenterY(player.getCenterY() + 1);
- }
- if (player.intersects(end.getBoundsInLocal())) {
- root.getChildren().removeAll(player, end);
- root.getChildren().removeAll(walls);
- Text text = new Text("YOU WIN!");
- text.setFont(Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 85));
- text.setFill(Color.web("#ff00ff"));
- text.setStroke(Color.web("#ff00ff"));
- text.setX(20);
- text.setY(250);
- root.getChildren().add(text);
- root.getChildren().add(ao);
- this.stop();
- }
- }
- }.start();
- window.show();
- } catch (Exception err) {
- err.printStackTrace();
- }
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement