Advertisement
Guest User

Untitled

a guest
Apr 16th, 2018
650
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 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.control.Button;
  12. import javafx.scene.input.KeyEvent;
  13. import javafx.scene.paint.Color;
  14. import javafx.scene.shape.Circle;
  15. import javafx.scene.shape.Rectangle;
  16. import javafx.scene.shape.Shape;
  17. import javafx.scene.text.Font;
  18. import javafx.scene.text.FontPosture;
  19. import javafx.scene.text.FontWeight;
  20. import javafx.scene.text.Text;
  21. import javafx.stage.Stage;
  22.  
  23. public class MazeGame extends Application {
  24.  
  25. Stage window;
  26.  
  27. Shape walls = null;
  28. Rectangle end;
  29. Circle player;
  30.  
  31. @Override
  32. public void start(Stage mainStage) {
  33. try {
  34. window = mainStage;
  35.  
  36. Button ao = new Button("Another One");
  37. ao.setOnAction(e -> {
  38. window.close();
  39. start(new Stage());
  40. });
  41.  
  42. Generator generator = new Generator(50, 50);
  43.  
  44. Group root = new Group();
  45. Scene scene = new Scene(root);
  46.  
  47. window.setTitle("Maze Game");
  48.  
  49. window.setScene(scene);
  50.  
  51. player = new Circle((generator.sd * 10) + 5, (generator.sw * 10) + 5, 4, Color.BLUE);
  52.  
  53. List<Rectangle> walls = new ArrayList<Rectangle>();
  54.  
  55. for (int i = 0; i < generator.width; i++) {
  56. for (int j = 0; j < generator.depth; j++) {
  57. if (generator.maze[j][i] == 1) {
  58.  
  59. Rectangle rect = new Rectangle(j * 10, i * 10, 10, 10);
  60. rect.setFill(Color.BLACK);
  61. rect.setStroke(Color.BLACK);
  62.  
  63. walls.add(rect);
  64. root.getChildren().add(rect);
  65.  
  66. }
  67. }
  68. }
  69.  
  70. end = new Rectangle(generator.ed * 10, generator.ew * 10, 10, 10);
  71. end.setFill(Color.GREEN);
  72.  
  73. root.getChildren().addAll(end, player);
  74.  
  75. List<String> codes = new ArrayList<String>();
  76.  
  77. scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
  78. @Override
  79. public void handle(KeyEvent e) {
  80. String code = e.getCode().toString();
  81.  
  82. if (!codes.contains(code)) {
  83. codes.add(code);
  84. }
  85. }
  86. });
  87.  
  88. scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
  89. @Override
  90. public void handle(KeyEvent e) {
  91. String code = e.getCode().toString();
  92.  
  93. codes.remove(code);
  94. }
  95. });
  96.  
  97. new AnimationTimer() {
  98.  
  99. @Override
  100. public void handle(long cnt) {
  101.  
  102. boolean canMoveLeft = true;
  103. boolean canMoveRight = true;
  104. boolean canMoveUp = true;
  105. boolean canMoveDown = true;
  106.  
  107. // This part does not function as expected vvv
  108. if (codes.contains("LEFT")) {
  109. for (Rectangle rect : walls) {
  110. if (rect.intersects(
  111. new Circle(player.getCenterX() - 1, player.getCenterY(), 4).getBoundsInLocal())) {
  112. canMoveLeft = false;
  113. break;
  114. }
  115. }
  116. if (canMoveLeft)
  117. player.setCenterX(player.getCenterX() - 1);
  118. }
  119. if (codes.contains("RIGHT")) {
  120. for (Rectangle rect : walls) {
  121. if (rect.intersects(
  122. new Circle(player.getCenterX() + 1, player.getCenterY(), 4).getBoundsInLocal())) {
  123. canMoveRight = false;
  124. break;
  125. }
  126. }
  127. if (canMoveRight)
  128. player.setCenterX(player.getCenterX() + 1);
  129. }
  130. if (codes.contains("UP")) {
  131. for (Rectangle rect : walls) {
  132. if (rect.intersects(
  133. new Circle(player.getCenterX(), player.getCenterY() - 1, 4).getBoundsInLocal())) {
  134. canMoveUp = false;
  135. break;
  136. }
  137. }
  138. if (canMoveUp)
  139. player.setCenterY(player.getCenterY() - 1);
  140. }
  141. if (codes.contains("DOWN")) {
  142. for (Rectangle rect : walls) {
  143. if (rect.intersects(
  144. new Circle(player.getCenterX(), player.getCenterY() + 1, 4).getBoundsInLocal())) {
  145. canMoveDown = false;
  146. break;
  147. }
  148. }
  149. if (canMoveDown)
  150. player.setCenterY(player.getCenterY() + 1);
  151. }
  152.  
  153. if (player.intersects(end.getBoundsInLocal())) {
  154. root.getChildren().removeAll(player, end);
  155. root.getChildren().removeAll(walls);
  156. Text text = new Text("YOU WIN!");
  157. text.setFont(Font.font("Comic Sans MS", FontWeight.BOLD, FontPosture.REGULAR, 85));
  158. text.setFill(Color.web("#ff00ff"));
  159. text.setStroke(Color.web("#ff00ff"));
  160. text.setX(20);
  161. text.setY(250);
  162. root.getChildren().add(text);
  163. root.getChildren().add(ao);
  164. this.stop();
  165. }
  166. }
  167. }.start();
  168.  
  169. window.show();
  170. } catch (Exception err) {
  171. err.printStackTrace();
  172. }
  173.  
  174. }
  175.  
  176. public static void main(String[] args) {
  177. launch(args);
  178. }
  179.  
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement