Advertisement
Guest User

Untitled

a guest
Apr 16th, 2018
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.11 KB | None | 0 0
  1. package koala.mg;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import javafx.animation.AnimationTimer;
  7. import javafx.application.Application;
  8. import javafx.event.EventHandler;
  9. import javafx.scene.Group;
  10. import javafx.scene.Scene;
  11. import javafx.scene.canvas.Canvas;
  12. import javafx.scene.canvas.GraphicsContext;
  13. import javafx.scene.image.Image;
  14. import javafx.scene.input.KeyEvent;
  15. import javafx.stage.Stage;
  16.  
  17. public class MazeGameOLD extends Application {
  18.  
  19. Stage window;
  20.  
  21. @Override
  22. public void start(Stage mainStage) throws Exception {
  23. window = mainStage;
  24.  
  25. Generator generator = new Generator(50, 50);
  26.  
  27. Group root = new Group();
  28. Scene scene = new Scene(root);
  29.  
  30. window.setTitle("Maze Game");
  31.  
  32. window.setScene(scene);
  33.  
  34. Canvas canvas = new Canvas(generator.depth * 10, generator.width * 10);
  35. root.getChildren().add(canvas);
  36.  
  37. GraphicsContext gc = canvas.getGraphicsContext2D();
  38.  
  39. Sprite player = new Sprite();
  40.  
  41. Image ppng = new Image(this.getClass().getResource("player.png").toExternalForm(), 10, 10, false, false);
  42. Image wpng = new Image(this.getClass().getResource("wall.png").toExternalForm(), 10, 10, false, false);
  43. Image epng = new Image(this.getClass().getResource("finish.png").toExternalForm(), 10, 10, false, false);
  44.  
  45. player.setImage(ppng);
  46. player.setPosition(generator.sd * 10, generator.sw * 10);
  47.  
  48. List<Sprite> walls = new ArrayList<Sprite>();
  49.  
  50. for (int i = 0; i < generator.width; i++) {
  51. for (int j = 0; j < generator.depth; j++) {
  52. if (generator.maze[j][i] == 1) {
  53. Sprite wall = new Sprite();
  54. wall.setImage(wpng);
  55. wall.setPosition(j * 10, i * 10);
  56.  
  57. walls.add(wall);
  58. }
  59. }
  60. }
  61.  
  62. Sprite end = new Sprite();
  63. end.setImage(epng);
  64. end.setPosition(generator.ed * 10, generator.ew * 10);
  65.  
  66. List<String> codes = new ArrayList<String>();
  67.  
  68. scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
  69. @Override
  70. public void handle(KeyEvent e) {
  71. String code = e.getCode().toString();
  72.  
  73. if (!codes.contains(code)) {
  74. codes.add(code);
  75. System.out.println("Key Press Detected and Logged!");
  76. }
  77. }
  78. });
  79.  
  80. scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
  81. @Override
  82. public void handle(KeyEvent e) {
  83. String code = e.getCode().toString();
  84.  
  85. codes.remove(code);
  86.  
  87. System.out.println("Key Release Detected and Logged!");
  88. }
  89. });
  90.  
  91. new AnimationTimer() {
  92.  
  93. long lnt = System.nanoTime();
  94.  
  95. @Override
  96. public void handle(long cnt) {
  97.  
  98. long elapsed = (long) ((cnt - lnt) / 1000000000.0);
  99. lnt = cnt;
  100.  
  101. boolean canMove = true;
  102.  
  103.  
  104. if (codes.contains("LEFT")) {
  105. for (Sprite wall : walls) {
  106. if (player.getOffsetBoundary(-1, 0).intersects(wall.getBoundary())) {
  107. canMove = false;
  108. break;
  109. }
  110. }
  111. if (canMove)
  112. player.setPosition(player.getPosX()-1, player.getPosY());
  113. }
  114. if (codes.contains("UP")) {
  115. for (Sprite wall : walls) {
  116. if (player.getOffsetBoundary(0, -1).intersects(wall.getBoundary())) {
  117. canMove = false;
  118. break;
  119. }
  120. }
  121. if (canMove)
  122. player.setPosition(player.getPosX(), player.getPosY()-1);
  123. }
  124. if (codes.contains("RIGHT")) {
  125. for (Sprite wall : walls) {
  126. if (player.getOffsetBoundary(1, 0).intersects(wall.getBoundary())) {
  127. canMove = false;
  128. break;
  129. }
  130. }
  131. if (canMove)
  132. player.setPosition(player.getPosX()+1, player.getPosY());
  133. }
  134. if (codes.contains("DOWN")) {
  135. for (Sprite wall : walls) {
  136. if (player.getOffsetBoundary(0, 1).intersects(wall.getBoundary())) {
  137. canMove = false;
  138. break;
  139. }
  140. }
  141. if (canMove)
  142. player.setPosition(player.getPosX(), player.getPosY()+1);
  143. }
  144.  
  145. player.update(elapsed);
  146.  
  147. if (player.intersects(end)) {
  148. this.stop();
  149. }
  150.  
  151. gc.clearRect(0, 0, 50 * 64, 50 * 64);
  152. player.render(gc);
  153. for (Sprite wall : walls)
  154. wall.render(gc);
  155.  
  156. end.render(gc);
  157.  
  158. }
  159. }.start();
  160.  
  161. window.show();
  162.  
  163. }
  164.  
  165. public static void main(String[] args) {
  166. launch(args);
  167. }
  168.  
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement