Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.05 KB | None | 0 0
  1.  
  2. Save New Duplicate & Edit Just Text
  3. package keyEventlearning;
  4.  
  5. import javafx.animation.*;
  6. import javafx.application.Application;
  7. import javafx.scene.Group;
  8. import javafx.scene.Scene;
  9. import javafx.scene.layout.Pane;
  10. import javafx.scene.paint.Color;
  11. import javafx.scene.shape.Rectangle;
  12. import javafx.stage.Stage;
  13. import javafx.util.Duration;
  14.  
  15. import java.util.ArrayList;
  16. import java.util.List;
  17.  
  18.  
  19. public class first extends Application {
  20. private List<Rectangle> snakeBody = new ArrayList<>();
  21. private Pane sp = new Pane();
  22. private dir direction = dir.right;
  23. private boolean running = false;
  24. private Rectangle snake = new Rectangle(0, 0, 25, 25);
  25. private Rectangle food = new Rectangle(25, 25);
  26. private Timeline timeline = new Timeline();
  27. private String s;
  28. private Group g = new Group();
  29.  
  30.  
  31. public enum dir {
  32. right, left, up, down
  33.  
  34. }
  35.  
  36. private void createFood() {
  37. food.setFill(Color.RED);
  38. food.setTranslateX((int) (Math.random() * (475)) / 25 * 25);
  39. food.setTranslateY((int) (Math.random() * (475)) / 25 * 25);
  40. }
  41.  
  42. public Rectangle r() {
  43. return new Rectangle(snake.getX(), snake.getY(), 25, 25);
  44. }
  45.  
  46.  
  47. private void createSnake() {
  48. snake.setFill(Color.BLUE);
  49. snake.setX((int) (Math.random() * (250)) / 25 * 25);
  50. snake.setY((int) (Math.random() * (250)) / 25 * 25);
  51. snakeBody.add(0, snake);
  52. new AnimationTimer() {
  53. private long lastUpdate = 0;
  54.  
  55. public void handle(long now) {
  56. if (now - lastUpdate >= 280000000) {
  57.  
  58.  
  59. if (snake.getX() == food.getTranslateX() && snake.getY() == food.getTranslateY()) {
  60. createFood();
  61. snakeBody.add(r());
  62. snakeBody.get(snakeBody.size()-1).setFill(Color.BLUE);
  63. g.getChildren().addAll(snakeBody.get(snakeBody.size()-1));
  64. }
  65. if (running) {
  66. switch (direction) {
  67. case right:
  68. if(snakeBody.size() > 1) {
  69. snakeBody.get(snakeBody.size()-1).setX(snake.getX());
  70. snakeBody.get(snakeBody.size()-1).setY(snake.getY());
  71.  
  72. }
  73. snake.setY(snake.getY());
  74. snake.setX(snake.getX()+25);
  75.  
  76. break;
  77. case left:
  78. if(snakeBody.size() > 1) {
  79. snakeBody.get(snakeBody.size()-1).setX(snake.getX());
  80. snakeBody.get(snakeBody.size()-1).setY(snake.getY());
  81.  
  82. }
  83. snake.setY(snake.getY());
  84. snake.setX(snake.getX()-25);
  85.  
  86. break;
  87. case up:
  88. if(snakeBody.size() > 1) {
  89. snakeBody.get(snakeBody.size()-1).setX(snake.getX());
  90. snakeBody.get(snakeBody.size()-1).setY(snake.getY());
  91.  
  92. }
  93. snake.setY(snake.getY()+25);
  94. snake.setX(snake.getX());
  95.  
  96. break;
  97. case down:
  98. if(snakeBody.size() > 1) {
  99. snakeBody.get(snakeBody.size()-1).setX(snake.getX());
  100. snakeBody.get(snakeBody.size()-1).setY(snake.getY());
  101.  
  102. }
  103. snake.setY(snake.getY()-25);
  104. snake.setX(snake.getX());
  105. break;
  106. }
  107. }
  108. lastUpdate = now;
  109. }
  110. }
  111. }.start();
  112.  
  113. }
  114.  
  115. private void startGame() {
  116. createFood();
  117. createSnake();
  118. running = false;
  119. }
  120.  
  121.  
  122. public static void main(String args) {
  123. launch(args);
  124. }
  125.  
  126. public void start(Stage primaryStage) {
  127. sp.setPrefSize(500, 500);
  128. g.getChildren().addAll(sp);
  129. sp.setPrefSize(500, 500);
  130. sp.getChildren().addAll(food,snake);
  131. Scene scene = new Scene(g, Color.FLORALWHITE);
  132. scene.setOnKeyPressed(e -> {
  133. s = e.getCode().toString();
  134. running = false;
  135. });
  136. KeyFrame kf = new KeyFrame(new Duration(20), e -> {
  137.  
  138.  
  139. if (!running) {
  140. switch (s) {
  141. case "W":
  142. if (direction != dir.up) {
  143. direction = dir.down;
  144. running = true;
  145. break;
  146. }
  147. case "S":
  148. if (direction != dir.down) {
  149. direction = dir.up;
  150. running = true;
  151. break;
  152. }
  153. case "A":
  154. if (direction != dir.right) {
  155. direction = dir.left;
  156. running = true;
  157. break;
  158. }
  159. case "D":
  160. if (direction != dir.left) {
  161. direction = dir.right;
  162. running = true;
  163. break;
  164. }
  165. }
  166. }
  167.  
  168.  
  169. });
  170. timeline.getKeyFrames().add(kf);
  171. timeline.setCycleCount(Animation.INDEFINITE);
  172. timeline.play();
  173.  
  174.  
  175. startGame();
  176. primaryStage.setScene(scene);
  177. primaryStage.setTitle("Hello");
  178. primaryStage.show();
  179.  
  180. }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement