SHARE
TWEET

Untitled

a guest Jan 21st, 2020 64 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package javafxapplication31;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import javafx.application.Application;
  6. import javafx.event.ActionEvent;
  7. import javafx.event.EventHandler;
  8. import javafx.scene.Scene;
  9. import javafx.scene.control.Button;
  10. import javafx.scene.layout.Pane;
  11. import javafx.scene.layout.StackPane;
  12. import javafx.stage.Stage;
  13. import java.util.Random;
  14. import javafx.application.Application;
  15. import javafx.scene.Scene;
  16. import javafx.scene.input.KeyCode;
  17. import javafx.scene.layout.*;
  18. import javafx.scene.paint.Color;
  19. import javafx.scene.shape.Polygon;
  20. import javafx.scene.shape.Rectangle;
  21. import javafx.scene.text.Font;
  22. import javafx.scene.text.Text;
  23. import javafx.stage.Stage;
  24. import java.util.Random;
  25. import javafx.animation.AnimationTimer;
  26. import javafx.scene.Node;
  27. import javafx.scene.input.KeyEvent;
  28. import javafx.scene.shape.Shape;
  29.  
  30. public class JavaFXApplication31 extends Application {
  31.  
  32.      Random rand = new Random();
  33.     Pane canvas;
  34.     Scene scene;
  35.     double points1[] = {100, 100, 1200, 100, 1200, 900, 100, 900,};
  36.     Polygon poly1;
  37.     Text Score, HighScore;
  38.     Font font1;
  39.     Rectangle SnakeBody, Food;
  40.     ArrayList<Rectangle> Snakes;
  41.     int RIGHT = 0, UP = 1, LEFT = 2, DOWN = 3;
  42.     int facing;
  43.     int rightSpeed = 0, upSpeed = 0, leftSpeed = 0, downSpeed = 0;
  44.     int SnakeSpeed = 8;
  45.     int score;
  46.     int grow = 0;
  47.     int s;
  48.  
  49.     public void SnakeBodyandFood() {
  50.  
  51.         //SnakeBody = new Rectangle(300, 300, 30, 30);
  52.         //SnakeBody.setFill(Color.GOLD);
  53.         //SnakeBody.setStroke(Color.WHITE);
  54.         facing = RIGHT;
  55.  
  56.         Food = new Rectangle(600, 600, 20, 20);
  57.         Food.setStroke(Color.RED);
  58.         Food.setFill(Color.RED);
  59.  
  60.     }
  61.  
  62.     private class Timer extends AnimationTimer {
  63.  
  64.         public void handle(long l) {
  65.  
  66.             //Snake moving lines
  67.             if (rightSpeed > 0 && facing != RIGHT) {
  68.                 facing = RIGHT;
  69.             } else {
  70.                 for (int i=Snakes.size()-1; i>0; i--){
  71.                     Snakes.get(i).setX(Snakes.get(i-1).getX());
  72.                     Snakes.get(i).setY(Snakes.get(i-1).getY());
  73.                 }
  74.             }
  75.            
  76.             SnakeBody.setX(SnakeBody.getX() + rightSpeed - leftSpeed);
  77.             SnakeBody.setY(SnakeBody.getY() + downSpeed - upSpeed);
  78.             //Boundaries for the snake
  79.             if (SnakeBody.getX() <= 100) {
  80.                 SnakeBody.setX(100);
  81.             }
  82.             if (SnakeBody.getY() <= 100) {
  83.                 SnakeBody.setY(100);
  84.             }
  85.             if (SnakeBody.getX() >= 1170) {
  86.                 SnakeBody.setX(1170);
  87.             }
  88.             if (SnakeBody.getY() >= 870) {
  89.                 SnakeBody.setY(870);
  90.             }
  91.  
  92.            
  93.             Shape overlap = Shape.intersect(SnakeBody, Food);
  94.  
  95.             if (overlap.getBoundsInLocal().getWidth() > 0 || overlap.getBoundsInLocal().getHeight() > 0) {
  96.  
  97.                 Food.setX(rand.nextInt(1200));
  98.                 Food.setY(rand.nextInt(900));
  99.                 score = score + 1;
  100.                 Score.setText("Score: " + score);
  101.                 if (leftSpeed > 0){
  102.                     Rectangle r = new Rectangle(Snakes.get(Snakes.size()-1).getX() + 30, Snakes.get(Snakes.size()-1).getY(), 30, 30);
  103.                     Snakes.add(r);
  104.                     r.setFill(Color.GOLD);
  105.                     r.setStroke(Color.WHITE);
  106.                     canvas.getChildren().addAll(r);
  107.                 }
  108.                   if (rightSpeed > 0){
  109.                     Rectangle r = new Rectangle(Snakes.get(Snakes.size()-1).getX() - 30, Snakes.get(Snakes.size()-1).getY(), 30, 30);
  110.                     Snakes.add(r);
  111.                     r.setFill(Color.GOLD);
  112.                     r.setStroke(Color.WHITE);
  113.                     canvas.getChildren().addAll(r);
  114.                 }
  115.                     if (upSpeed > 0){
  116.                     Rectangle r = new Rectangle(Snakes.get(Snakes.size()-1).getX(), Snakes.get(Snakes.size()-1).getY()+30, 30, 30);
  117.                     Snakes.add(r);
  118.                     r.setFill(Color.GOLD);
  119.                     r.setStroke(Color.WHITE);
  120.                     canvas.getChildren().addAll(r);
  121.                 }
  122.                       if (downSpeed > 0){
  123.                     Rectangle r = new Rectangle(Snakes.get(Snakes.size()-1).getX(), Snakes.get(Snakes.size()-1).getY()-30, 30, 30);
  124.                     Snakes.add(r);
  125.                     r.setFill(Color.GOLD);
  126.                     r.setStroke(Color.WHITE);
  127.                     canvas.getChildren().addAll(r);
  128.                 }
  129.                 //canvas.getChildren().addAll(makeSnakeBodies(5));
  130.  
  131.             }
  132.  
  133.             if (Food.getX() <= 100) {
  134.                 Food.setX(rand.nextInt(1200));
  135.             }
  136.             if (Food.getY() <= 100) {
  137.                 Food.setY(rand.nextInt(900));
  138.             }
  139.             if (Food.getX() >= 1170) {
  140.                 Food.setX(rand.nextInt(1200));
  141.             }
  142.             if (Food.getY() >= 870) {
  143.                 Food.setY(rand.nextInt(900));
  144.  
  145.             }
  146.  
  147.         }
  148.  
  149.     }
  150.  
  151.     public void start(Stage primaryStage) {
  152.  
  153.         canvas = new Pane();
  154.         scene = new Scene(canvas, 1300, 1300, Color.BLACK);
  155.         SnakeBodyandFood();
  156.  
  157.         poly1 = new Polygon(points1);
  158.         poly1.setFill(Color.DARKBLUE);
  159.  
  160.         poly1.setStroke(Color.GREY);
  161.         poly1.setStrokeWidth(3);
  162.  
  163.         font1 = Font.font("Arial", 24);
  164.  
  165.         Score = new Text(250, 60, "Score: " + score);
  166.         Score.setFont(font1);
  167.         Score.setFill(Color.YELLOW);
  168.  
  169.         HighScore = new Text(700, 60, "High Score: ");
  170.         HighScore.setFont(font1);
  171.         HighScore.setFill(Color.YELLOW);
  172.  
  173.        
  174.        
  175.         canvas.getChildren().addAll(poly1, Score, HighScore, Food);
  176.  
  177.         Snakes = makeSnakeBodies();
  178.         canvas.getChildren().addAll(Snakes);
  179.  
  180.         scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
  181.             public void handle(KeyEvent evt) {
  182.  
  183.                 if (evt.getCode().equals(KeyCode.RIGHT)) {
  184.                     rightSpeed = SnakeSpeed;
  185.                     upSpeed = 0;
  186.                     leftSpeed = 0;
  187.                     downSpeed = 0;
  188.                 } else if (evt.getCode().equals(KeyCode.UP)) {
  189.                     upSpeed = SnakeSpeed;
  190.                     rightSpeed = 0;
  191.                     leftSpeed = 0;
  192.                     downSpeed = 0;
  193.                 } else if (evt.getCode().equals(KeyCode.DOWN)) {
  194.                     downSpeed = SnakeSpeed;
  195.                     rightSpeed = 0;
  196.                     leftSpeed = 0;
  197.                     upSpeed = 0;
  198.                 } else if (evt.getCode().equals(KeyCode.LEFT)) {
  199.                     leftSpeed = SnakeSpeed;
  200.                     rightSpeed = 0;
  201.                     upSpeed = 0;
  202.                     downSpeed = 0;
  203.                 }
  204.  
  205.             }
  206.         });
  207.  
  208.         primaryStage.setTitle("Snake");
  209.         primaryStage.setScene(scene);
  210.         primaryStage.show();
  211.  
  212.         Timer timer = new Timer();
  213.         timer.start();
  214.  
  215.     }
  216.  
  217.     /*public ArrayList<Rectangle> makeSnake(int x, int y) {
  218.         Rectangle SnakeBodies = new Rectangle();
  219.         if (leftSpeed > 0){
  220.             SnakeBodies = new Rectangle(SnakeBody.getX()+30, SnakeBody.getY(), 30, 30);
  221.         }
  222.         SnakeBodies.setFill(Color.GOLD);
  223.         SnakeBodies.setStroke(Color.WHITE);
  224.  
  225.         ArrayList<Shape> SnakeParts = new ArrayList<>();
  226.         SnakeParts.add(SnakeBodies);
  227.         return SnakeParts;
  228.     }*/
  229.  
  230.     public ArrayList<Rectangle> makeSnakeBodies() {
  231.  
  232.         ArrayList<Rectangle> joints = new ArrayList<>();
  233.  
  234.        
  235.         int x = rand.nextInt(800);
  236.         int y = rand.nextInt(100) + 200;
  237.         SnakeBody = new Rectangle(x, y, 30, 30);
  238.         SnakeBody.setFill(Color.GOLD);
  239.         SnakeBody.setStroke(Color.WHITE);
  240.        
  241.         joints.add(SnakeBody);
  242.        
  243.         return joints;
  244.     }
  245.  
  246. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top