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.canvas.Canvas;
- import javafx.scene.canvas.GraphicsContext;
- import javafx.scene.image.Image;
- import javafx.scene.input.KeyEvent;
- import javafx.stage.Stage;
- public class MazeGameOLD extends Application {
- Stage window;
- @Override
- public void start(Stage mainStage) throws Exception {
- window = mainStage;
- Generator generator = new Generator(50, 50);
- Group root = new Group();
- Scene scene = new Scene(root);
- window.setTitle("Maze Game");
- window.setScene(scene);
- Canvas canvas = new Canvas(generator.depth * 10, generator.width * 10);
- root.getChildren().add(canvas);
- GraphicsContext gc = canvas.getGraphicsContext2D();
- Sprite player = new Sprite();
- Image ppng = new Image(this.getClass().getResource("player.png").toExternalForm(), 10, 10, false, false);
- Image wpng = new Image(this.getClass().getResource("wall.png").toExternalForm(), 10, 10, false, false);
- Image epng = new Image(this.getClass().getResource("finish.png").toExternalForm(), 10, 10, false, false);
- player.setImage(ppng);
- player.setPosition(generator.sd * 10, generator.sw * 10);
- List<Sprite> walls = new ArrayList<Sprite>();
- for (int i = 0; i < generator.width; i++) {
- for (int j = 0; j < generator.depth; j++) {
- if (generator.maze[j][i] == 1) {
- Sprite wall = new Sprite();
- wall.setImage(wpng);
- wall.setPosition(j * 10, i * 10);
- walls.add(wall);
- }
- }
- }
- Sprite end = new Sprite();
- end.setImage(epng);
- end.setPosition(generator.ed * 10, generator.ew * 10);
- 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);
- System.out.println("Key Press Detected and Logged!");
- }
- }
- });
- scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
- @Override
- public void handle(KeyEvent e) {
- String code = e.getCode().toString();
- codes.remove(code);
- System.out.println("Key Release Detected and Logged!");
- }
- });
- new AnimationTimer() {
- long lnt = System.nanoTime();
- @Override
- public void handle(long cnt) {
- long elapsed = (long) ((cnt - lnt) / 1000000000.0);
- lnt = cnt;
- boolean canMove = true;
- if (codes.contains("LEFT")) {
- for (Sprite wall : walls) {
- if (player.getOffsetBoundary(-1, 0).intersects(wall.getBoundary())) {
- canMove = false;
- break;
- }
- }
- if (canMove)
- player.setPosition(player.getPosX()-1, player.getPosY());
- }
- if (codes.contains("UP")) {
- for (Sprite wall : walls) {
- if (player.getOffsetBoundary(0, -1).intersects(wall.getBoundary())) {
- canMove = false;
- break;
- }
- }
- if (canMove)
- player.setPosition(player.getPosX(), player.getPosY()-1);
- }
- if (codes.contains("RIGHT")) {
- for (Sprite wall : walls) {
- if (player.getOffsetBoundary(1, 0).intersects(wall.getBoundary())) {
- canMove = false;
- break;
- }
- }
- if (canMove)
- player.setPosition(player.getPosX()+1, player.getPosY());
- }
- if (codes.contains("DOWN")) {
- for (Sprite wall : walls) {
- if (player.getOffsetBoundary(0, 1).intersects(wall.getBoundary())) {
- canMove = false;
- break;
- }
- }
- if (canMove)
- player.setPosition(player.getPosX(), player.getPosY()+1);
- }
- player.update(elapsed);
- if (player.intersects(end)) {
- this.stop();
- }
- gc.clearRect(0, 0, 50 * 64, 50 * 64);
- player.render(gc);
- for (Sprite wall : walls)
- wall.render(gc);
- end.render(gc);
- }
- }.start();
- window.show();
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement