Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 22.54 KB | None | 0 0
  1. package sample;
  2.  
  3. import javafx.animation.Animation;
  4. import javafx.animation.AnimationTimer;
  5. import javafx.geometry.Rectangle2D;
  6. import javafx.scene.Scene;
  7. import javafx.scene.image.Image;
  8. import javafx.scene.image.ImageView;
  9. import javafx.scene.input.KeyCode;
  10. import javafx.scene.layout.*;
  11. import javafx.scene.paint.Color;
  12. import javafx.scene.shape.Rectangle;
  13. import javafx.scene.shape.Shape;
  14. import javafx.scene.text.Text;
  15. import javafx.stage.Stage;
  16. import javafx.util.Duration;
  17.  
  18. import java.io.*;
  19. import java.util.*;
  20.  
  21. public class GameManager
  22. {
  23.  
  24.     PrintWriter writer;
  25.  
  26.     private static final int HEIGHT = 800;
  27.     private static final int WIDTH = 600;
  28.     private AnchorPane mainPane;
  29.     private Scene mainScene;
  30.     private Stage mainStage;
  31.     private Player player;
  32.     private Gravity gravity;
  33.     private AnimationTimer gameTimer;
  34.  
  35.     private Rectangle gamer;
  36.  
  37.     private boolean isLeftKeyPressed = false;
  38.     private boolean isRightKeyPressed = false;
  39.     private boolean isSpaceBarPressed = false;
  40.     private boolean isSuperJump = false;
  41.  
  42.     private int rotateCombo;
  43.     private boolean startedGame = false;
  44.     private double a = 0;
  45.     private StackPane scoreStack = new StackPane();
  46.     private StackPane infos = new StackPane();
  47.     private Stage menuStage;
  48.     private int score = 0;
  49.     private int fullScore = 0;
  50.     private boolean changedLevels = false;
  51.     private boolean changedLevel5 = false;
  52.     private int upScore = 1;
  53.  
  54.     private double stepsVelocity = 2;
  55.  
  56.     List<Step> steps = new ArrayList<>();
  57.     List<Rectangle> stepsShapes = new ArrayList<>();
  58.  
  59.     private GridPane gridPane1;
  60.     private GridPane gridPane2;
  61.     private static String BACKGROUND_IMAGE = "sample/brickWall.png";
  62.  
  63.     private Text textScore;
  64.  
  65.     private Text infoTextFaster;
  66.  
  67.     private boolean isAddCombo;
  68.  
  69.  
  70.  
  71.     public GameManager()
  72.     {
  73.  
  74.         initializeStage();
  75.         createKeyListeners();
  76.     }
  77.  
  78.     public void createNewGame(Stage menuStage) {
  79.         this.menuStage = menuStage;
  80.         this.menuStage.hide();
  81.         initializePlayer();
  82.         mainPane.getChildren().add(gamer);
  83.         gamer.setLayoutX(player.getPositionX());
  84.         gamer.setLayoutY(player.getPositionY());
  85.         mainStage.show();
  86.         mainPane.getChildren().add(player.getSprite());
  87.  
  88.         createBackground();
  89.         createSteps();
  90.  
  91.         initializeTextFields();
  92.  
  93.         player.getSprite().toFront();
  94.         gameLoop();
  95.     }
  96.  
  97.     private void initializeTextFields()
  98.     {
  99.         textScore = new Text("STEPS: " + score + "\nSCORE: " + fullScore);
  100.         Rectangle rect = new Rectangle(0,0,100,40);
  101.         rect.setFill(Color.GRAY);
  102.         scoreStack.getChildren().addAll(rect, textScore);
  103.         mainPane.getChildren().add(scoreStack);
  104.  
  105.         infoTextFaster = new Text("FASTER!");
  106.         infoTextFaster.setStyle("-fx-font: 32 arial;");
  107.         infoTextFaster.setFill(Color.RED);
  108.         Rectangle rectx = new Rectangle(0,0,300,100);
  109.         rectx.setFill(Color.rgb(150,0,100,0));
  110.         infos.setLayoutX(100);
  111.         infos.setLayoutY(-100);
  112.         infos.getChildren().addAll(rectx, infoTextFaster);
  113.         mainPane.getChildren().add(infos);
  114.     }
  115.  
  116.     /*
  117.     Inicjacja ustawienia gracza w grze
  118.      */
  119.     private void initializePlayer()
  120.     {
  121.         player = new Player();
  122.         player.setPositionX(250);
  123.         player.setPositionY(613);
  124.         player.setVelocityX(0);
  125.         player.setVelocityY(0);
  126.         player.setOnGround(false);
  127.         gravity = new Gravity(1   );
  128.         this.gamer = player.getGraph();
  129.     }
  130.  
  131.     /*
  132.     Procedura wyswietlajaca wynik gracza w lewym gornym prostokącie
  133.      */
  134.     private void displayScore()
  135.     {
  136.         textScore.setText("STEPS: " + score + "\nSCORE: " + fullScore);
  137.     }
  138.  
  139.     /*
  140.     Procedura kontrolujaca koniec gry
  141.      */
  142.  
  143.  
  144.     private static void b_sort(int tab[]){
  145.         int temp;
  146.         int zmiana = 1;
  147.         while(zmiana > 0){
  148.             zmiana = 0;
  149.             for(int i=0; i<tab.length-1; i++){
  150.                 if(tab[i]>tab[i+1]){
  151.                     temp = tab[i+1];
  152.                     tab[i+1] = tab[i];
  153.                     tab[i] = temp;
  154.                     zmiana++;
  155.                 }
  156.             }
  157.         }
  158.  
  159.     }
  160.  
  161.     private static void odwroc(int[] wejscie) {
  162.  
  163.         // indeks pierwszego elementu
  164.         int poczatek  = 0;
  165.         // indeks ostatniego elementu
  166.         int koniec = wejscie.length-1;
  167.  
  168.         // dopóki indeks początkowy jest mniejszy od indeksu końcowego
  169.         while (poczatek < koniec) {
  170.             // zamieniamy elementy
  171.             int pomoc = wejscie[poczatek];
  172.             wejscie[poczatek]  = wejscie[koniec];
  173.             wejscie[koniec] = pomoc;
  174.  
  175.             // przesuwamy się w kierunku środka wektora zwiększając i zmniejszając odpowiednio indeksy
  176.             poczatek++;
  177.             koniec--;
  178.         }
  179.     }
  180.  
  181.  
  182.  
  183.  
  184.  
  185.     private void isGameOver() throws FileNotFoundException {
  186.         //jezeli pozycja gracza na mapie jest > 800px czyli jest poza oknem wyswietlania to koniec gry
  187.         if(player.getPositionY() > 800) {
  188.  
  189.             gameTimer.stop();
  190.  
  191.             File file = new File("src/sample/score.txt");
  192.             Scanner in = new Scanner(file);
  193.             int wynik[] = new int[6];
  194.             for (int i=0;i<5;i++)
  195.             {
  196.                 wynik[i]= Integer.parseInt(in.nextLine());
  197.             }
  198.             wynik[5]=fullScore;
  199.             b_sort(wynik);
  200.             odwroc(wynik);
  201.          
  202.  
  203.             PrintWriter zapis = new PrintWriter("src/sample/score.txt");
  204.             for (int i=0;i<5;i++)
  205.             {
  206.                 zapis.println(wynik[i]);
  207.             }
  208.  
  209.             zapis.close();
  210.  
  211.  
  212.         }
  213.  
  214.  
  215.     }
  216.  
  217.     /*
  218.     Procedura ruszajaca schodkami w momencie wystartowania gry
  219.      */
  220.     private void startMovingSteps()
  221.     {
  222.         //Uznaje sie, ze gra wystartowala jak gracz znalazl sie ponad 400px okna gry (czyli jego pozycja Y jest mniejsza niz 400px) ( u gory 0 na dole 750)
  223.         if(player.getPositionY() < 400) startedGame = true;
  224.         if(startedGame)
  225.         {
  226.             moveSteps(); // startujemy jezeli flaga ustawiona na true
  227.             moveBackground();
  228.         }
  229.         else
  230.         {
  231.             if(player.isOnGround() == true) player.setVelocityY(-1);
  232.             //jezeli gra nie wystartowala musimy dzialac naprzeciw grawitacji aby gracz nie spadl se schodka startowego
  233.         }
  234.     }
  235.  
  236.     /*
  237.     Procedura poruszajaca `kamera' do gory jezeli gracz znajduje sie przy gornym krancu ekranu
  238.      */
  239.     private void moveCameraUp()
  240.     {
  241.         if(player.getPositionY() < 100)
  242.         {
  243.             player.setPositionY(player.getPositionY()-player.getVelocityY()*1.1);
  244.             for(int i = 0; i< steps.size(); i++)
  245.             {
  246.                 steps.get(i).setPositionY(steps.get(i).getPositionY()-player.getVelocityY()*1.1);
  247.                 if(!isAddCombo)
  248.                 {
  249.                     fullScore+=1;
  250.                     isAddCombo = true;
  251.                 }
  252.             }
  253.  
  254.         }
  255.         else isAddCombo = false;
  256.     }
  257.  
  258.     /*
  259.     Funkcja animujaca wszystkie zachowania gracza
  260.      */
  261.     private void animatePlayer()
  262.     {
  263.         //ustawienie predkosci pionowej gracza (uzalezniona od dzialajacej grawitacji)
  264.         player.setVelocityY(player.getVelocityY()+gravity.getGravity());
  265.  
  266.         //przyspiesznie chwilowe gracza w ruchu w poziomie
  267.         if(player.getVelocityX() > 0 && player.getVelocityX()+a < 10 && a < 5) a+=1;
  268.         else if(player.getVelocityX() < 0 && player.getVelocityX()-a > -10 && a > -5) a+=-1;
  269.         else a = 0;
  270.  
  271.         //predkosc pozioma gracza
  272.         player.setVelocityX(player.getVelocityX()+a);
  273.  
  274.         //czy gracz nie probuje wyjsc poza mape - aktualizacja pozycji gracza w poziomie
  275.         if(player.getPositionX()+player.getVelocityX() <560 && player.getPositionX()+player.getVelocityX() > -0) player.setPositionX(player.getPositionX()+ player.getVelocityX());
  276.  
  277.         //aktualizacja pozycji gracza pionie
  278.         player.setPositionY(player.getPositionY()+player.getVelocityY());
  279.  
  280.         //sprawdzanie czy gracz na ziemi
  281.         if(player.isOnGround() == true) player.setFallingDown(false);
  282.         else player.setFallingDown(true);
  283.  
  284.         //ustawienie stanu gracza w zaleznosci od predkosci pionowej
  285.         if(player.getVelocityY() > -2) player.setFallingDown(true);
  286.         else player.setFallingDown(false);
  287.  
  288.         //rotowanie obiektem gracza
  289.         if(player.isOnGround() == false)
  290.         {
  291.             //player.getSprite().setRotate(rotateCombo);
  292.             //player.getGraph().setRotate(rotateCombo);
  293.         } else player.getSprite().setRotate(0);
  294.         rotateCombo+=25;
  295.         if(rotateCombo > 360) rotateCombo = 0;
  296.  
  297.         //ustawienie gracza na ekranie
  298.         gamer.setLayoutX(player.getPositionX());
  299.         gamer.setLayoutY(player.getPositionY());
  300.  
  301.  
  302.         if(player.getPositionX() > 0 && player.getPositionX() < 10) player.setVelocityX(30);
  303.         if(player.getPositionX() > 550 && player.getPositionX() < 560) player.setVelocityX(-30);
  304.         /*if(player.getPositionX() > 555 && player.getPositionX() < 560) player.setVelocityX(player.getVelocityX()*(-1) -5);
  305.         else if(player.getPositionX() > 0 && player.getPositionX() < 5) player.setVelocityX(player.getVelocityX()*(-1) +5);*/
  306.  
  307.  
  308.         /*
  309.         Obsluge sprite'ow gracza (do uproszczenia)
  310.          */
  311.         if(player.isOnGround()) {
  312.             if(player.getVelocityX() > 0) { // ruch w prawo sprite chodzenia w prawo
  313.                 player.animation.setColumns(3);
  314.                 player.animation.setCount(3);
  315.                 player.animation.setOffsetY(55);
  316.                 player.animation.setOffsetX(0);
  317.                // player.animation.play();
  318.             }
  319.             else if(player.getVelocityX() < 0) { // ruch w lewo sprite chodzenia w lewo
  320.                 player.animation.setColumns(3);
  321.                 player.animation.setCount(3);
  322.                 player.animation.setOffsetY(111);
  323.                 player.animation.setOffsetX(0);
  324.                 //player.animation.play();
  325.             }
  326.             else { //jezeli na schodku to ustawiamy sprite wyswietlajacego spirte stojacego na ziemi
  327.                 player.animation.setOffsetY(0);
  328.                 player.animation.setOffsetX(0);
  329.                 player.animation.setColumns(3);
  330.                 player.animation.setCount(3);
  331.                 player.animation.play();
  332.             }
  333.         }
  334.         else if(player.getVelocityY() != 0 && player.getVelocityX() == 0) // sprite skakania pionowego
  335.         {
  336.             player.animation.setOffsetY(167);
  337.             player.animation.setOffsetX(58);
  338.             player.animation.setColumns(1);
  339.             player.animation.setCount(1);
  340.           //  player.animation.play();
  341.         }
  342.         else if(player.getVelocityY() != 0 && player.getVelocityX() != 0) // sprite skakania w raz z ruchem poziomym
  343.         {
  344.             player.animation.setOffsetY(167);
  345.             player.animation.setOffsetX(8);
  346.             player.animation.setColumns(1);
  347.             player.animation.setCount(1);
  348.            // player.animation.play();
  349.         }
  350.         else
  351.         { // jezeli nie spelniono powyzszych to po prostu sprite stania na schodku
  352.             player.animation.stop();
  353.         }
  354.  
  355.         /*
  356.         poruszanie spritem (obiektem gracza) po ekranie
  357.          */
  358.  
  359.         player.getSprite().setLayoutY(player.getPositionY()-30);
  360.         player.getSprite().setLayoutX(player.getPositionX());
  361.     }
  362.  
  363.     /*
  364.     Petla gry tutaj sie dzieje magia uruchamiane jest wiekszosc procedur :)
  365.      */
  366.     private void gameLoop() {
  367.  
  368.         gameTimer = new AnimationTimer() {
  369.             @Override
  370.             public void handle(long l) {
  371.                 try {
  372.                     isGameOver();
  373.                 } catch (FileNotFoundException e) {
  374.                     e.printStackTrace();
  375.                 }
  376.                 startMovingSteps();
  377.                 changeStepsVelocity();
  378.                 movePlayer();
  379.                moveCameraUp();
  380.  
  381.                 animatePlayer();
  382.                 checkShapeIntersection(player.getGraph());
  383.  
  384.                 moveUpStepsAndReIndex();
  385.             }
  386.         };
  387.         gameTimer.start();
  388.  
  389.     }
  390.  
  391.     /*
  392.     Procedura sprawdzajaca czy sa wcisniete klawisze jezeli tak to odpowiednie dzialanie
  393.      */
  394.     private void movePlayer()
  395.     {
  396.         if(isLeftKeyPressed && !isRightKeyPressed) // jezeli flaga wcisnietego lewego jest true i flaga prawego jest false (czyli nie wcisniety) to w lewo
  397.         {
  398.             if(player.getPositionX() > - 20) // zeby nie wypadl poza ekran
  399.             {
  400.                 player.setVelocityX(-8); // predkosc gracza -8 bo w lewo sie porusza
  401.             }
  402.         }
  403.         if(isRightKeyPressed && !isLeftKeyPressed) // jak wyzej (ale w prawo
  404.         {
  405.             if(player.getPositionX() < 560) // zeby nie wypadl poza ekran
  406.             {
  407.                 player.setVelocityX(8); // predkosc gracza 8 bo w prawo sie porusza
  408.             }
  409.         }
  410.         if(!isLeftKeyPressed && !isRightKeyPressed) // jezeli zaden nie wcisniety to stoi w miejscu
  411.         {
  412.             player.setVelocityX(0); // predkosc pozioma 0
  413.         }
  414.  
  415.         if(isSpaceBarPressed) // jezeli wcisnieto spacje to skok w gore
  416.         {
  417.             if(player.isOnGround() == true) {
  418.                 if(player.getVelocityX() > 0) player.setVelocityY(-16 + player.getVelocityX() * (-0.75)); // bonusy za predkosc pozioma
  419.                 else if(player.getVelocityX() < 0) player.setVelocityY(-16 + player.getVelocityX()*0.75); // bonusy za predkosc pozioma
  420.                 else player.setVelocityY(-18); // skok w pionie bez prekosci poziomen (slabszy niz bez predkosci poziomej)
  421.                 player.setOnGround(false); // ustawiamy flage ze graczc nie stoi na schodku (nie jest na ziemii)
  422.             }
  423.         }
  424.         if(!isSpaceBarPressed)
  425.         {
  426.             // nic nie rob jak spacja nei wcisnieta
  427.         }
  428.         if(isSuperJump) // super skok dla testow :)
  429.         {
  430.             if(player.isOnGround() == true) {
  431.                 player.setVelocityY(-100);
  432.                 player.setOnGround(false);
  433.             }
  434.         }
  435.         if(!isSuperJump)
  436.         {
  437.  
  438.         }
  439.     }
  440.  
  441.  
  442.     /*
  443.     Procedura umozliwiajaca przesuwanie schodkow ktore juz gracz minal tak aby nie bylo konieczne generowanie nowych
  444.      */
  445.     private void moveUpStepsAndReIndex()
  446.     {
  447.         /* przesuwanie pierwszych 400 schodkow */
  448.         if(upScore > 1 && 600*(upScore-1)-((upScore-2)*100) > score && score > 500*(upScore-1) && changedLevel5 == false)
  449.         {
  450.             System.out.println("Przeniesiono");
  451.             for(int i = 404; i<505;i++)
  452.             {
  453.                 steps.get(i).setPositionY(steps.get(i).getPositionY() - (500) * 150);
  454.                 steps.get(i).setIndex(steps.get(i).getIndex() + 500);
  455.                 steps.get(i).getTextInStep().setText("-" + steps.get(i).getIndex() + " - ");
  456.             }
  457.             changedLevel5 = true;
  458.         }
  459.         if(score > 600*(upScore-1)) changedLevel5 = false;
  460.         /* przesuwanie 400-500 */
  461.         if(500*upScore > score && score > 400*upScore+((upScore-1)*100) && changedLevels == false)
  462.         {
  463.             System.out.println("ZMIENIONO" + upScore );
  464.  
  465.             for(int i = 0; i<=403;i++)
  466.             {
  467.                 steps.get(i).setPositionY(steps.get(i).getPositionY() - (500) * 150);
  468.                 System.out.println(i + "-- " + steps.get(i).getIndex() +  " -- " + steps.get(i).getPositionX() + " " + steps.get(i).getPositionY());
  469.                 steps.get(i).setIndex(steps.get(i).getIndex() + 500);
  470.                 steps.get(i).getTextInStep().setText("-" + steps.get(i).getIndex() + " - ");
  471.             }
  472.             upScore +=1;
  473.             changedLevels = true;
  474.         }
  475.         else
  476.         {
  477.             changedLevels = false;
  478.         }
  479.  
  480.     }
  481.  
  482.     private void changeStepsVelocity()
  483.     {
  484.         int s = score/100;
  485.         if(s+2 > stepsVelocity)
  486.         {
  487.             stepsVelocity = s+2;
  488.             infos.setLayoutY(300);
  489.         }
  490.         else
  491.         {
  492.             if(infos.getLayoutY() > -100) infos.setLayoutY(infos.getLayoutY()-2);
  493.         }
  494.     }
  495.  
  496.     /*
  497. Procedura ustawiania kolorow schodkow (do zmiany na grafike)cc
  498.  */
  499.  
  500.     /*
  501.     Procedura tworzaca schodki
  502.      */
  503.     private void createSteps()
  504.     {
  505.         Random rand = new Random();
  506.         int j;
  507.         int nr;
  508.         double size;
  509.         double xPos;
  510.         int numColor = 0;
  511.         for(int level = 0;level < 10;level++) {
  512.             j=100;
  513.             nr = 100*(level+1);
  514.             for (int i = 0+level*100; i <= 100+level*100; i++) {
  515.                 size = (double) rand.nextInt(100) + 150;
  516.                 xPos = (double) rand.nextInt(600-(int)size) + 1;
  517.                 if (j == 0) {
  518.                     xPos = 0;
  519.                     size = 600;
  520.                 }
  521.                 Step step = new Step(xPos, i * 150, size, nr);
  522.                 step.changeBackgroundImage(numColor);
  523.                 step.setPositionY(step.getPositionY() - (95+level*200) * 150);
  524.                 step.getStack().setLayoutY(step.getPositionY());
  525.                 step.getStack().setLayoutX(step.getPositionX());
  526.                 steps.add(step);
  527.                 stepsShapes.add(new Rectangle(step.getPositionX(), step.getPositionY(), step.getWidth(), 15));
  528.                 if(level <5) mainPane.getChildren().add(step.getStack());
  529.                 j--;
  530.                 nr--;
  531.             }
  532.             numColor++;
  533.             if(numColor == 5) numColor = 0;
  534.         }
  535.  
  536.     }
  537.  
  538.     /*
  539.     Poruszanie schodkami w ramach gry (schodki `ida` w dol)
  540.      */
  541.     private void moveSteps()
  542.     {
  543.         for(int level = 0; level < 10; level++) {
  544.             for (int i = level*100; i < 100+level*100; i++) {
  545.                 steps.get(i).setPositionY(steps.get(i).getPositionY()+stepsVelocity); // 2 to predkosc schodkow
  546.                 steps.get(i).getStack().setLayoutY(steps.get(i).getPositionY());
  547.             }
  548.         }
  549.     }
  550.  
  551.  
  552.     /*
  553.     Procedura sprawdzajaca kolizje miedzy schodkami a graczem
  554.      */
  555.     private void checkShapeIntersection(Shape block) {
  556.         boolean collisionDetected = false;
  557.         int index = 0;
  558.         for (int i = 0; i<505; i++) {
  559.             Shape static_bloc = steps.get(i).getShape();
  560.             if (static_bloc != block) {
  561.                 Shape intersect = Shape.intersect(block, static_bloc);
  562.                 if (intersect.getBoundsInLocal().getWidth() != -1) {
  563.                     collisionDetected = true;
  564.                     index = i;
  565.  
  566.                 }
  567.             }
  568.         }
  569.  
  570.         int combo = 0;
  571.         if (collisionDetected && player.isFallingDown() == true) {
  572.             player.setVelocityY(stepsVelocity-1); // predkosc_schodkow - 1 ( do zautomatyzowania )
  573.             player.setFallingDown(false);
  574.             player.setOnGround(true);
  575.             /* TUTAJ ZAGNIEZDZONE JEST ZAPISYWANIE SCORE'U */
  576.             if(steps.get(index).getIndex() > score)
  577.             {
  578.                 combo = steps.get(index).getIndex() - score;
  579.                 combo *=combo;
  580.                 fullScore +=combo;
  581.                 score = steps.get(index).getIndex();
  582.             }
  583.             displayScore(); // wyswietlanie wyniku w momencie zmiany na nowy
  584.         } else {
  585.             player.setOnGround(false);
  586.         }
  587.     }
  588.  
  589.  
  590.  
  591.     /*
  592.     Procedura nasluchujaca wcisniete klawisze
  593.     Na podstawie wcisnietych klawiszy ustawia flagi wcisnietych klawiszy ;)
  594.      */
  595.     private void createKeyListeners() {
  596.         mainScene.setOnKeyPressed(keyEvent -> {
  597.             if (keyEvent.getCode() == KeyCode.LEFT) {
  598.                 isLeftKeyPressed = true;
  599.             }
  600.             if (keyEvent.getCode() == KeyCode.RIGHT) {
  601.                 isRightKeyPressed = true;
  602.             }
  603.             if (keyEvent.getCode() == KeyCode.SPACE) {
  604.                 isSpaceBarPressed = true;
  605.             }
  606.             if (keyEvent.getCode() == KeyCode.F) {
  607.                 player.setPositionY(400);
  608.                 player.setVelocityY(0);
  609.             }
  610.             if (keyEvent.getCode() == KeyCode.H) {
  611.                     isSuperJump = true;
  612.             }
  613.             if (keyEvent.getCode() == KeyCode.S) { // boosty ( do testow )
  614.                 for(int i = 0; i< steps.size(); i++)
  615.                 {
  616.                     steps.get(i).setPositionY(steps.get(i).getPositionY()+500);
  617.                 }
  618.             }
  619.             if (keyEvent.getCode() == KeyCode.D) { // boosty ( do testow )
  620.                 for(int i = 0; i< steps.size(); i++)
  621.                 {
  622.                     steps.get(i).setPositionY(steps.get(i).getPositionY()-500);
  623.                 }
  624.             }
  625.         });
  626.         mainScene.setOnKeyReleased(keyEvent ->
  627.         {
  628.             if(keyEvent.getCode() == KeyCode.LEFT) {
  629.                 isLeftKeyPressed = false;
  630.             }
  631.             if(keyEvent.getCode() == KeyCode.RIGHT) {
  632.                 isRightKeyPressed = false;
  633.             }
  634.             if(keyEvent.getCode() == KeyCode.SPACE) {
  635.                 isSpaceBarPressed = false;
  636.             }
  637.             if(keyEvent.getCode() == KeyCode.H) {
  638.                 isSuperJump = false;
  639.             }
  640.         });
  641.     }
  642.  
  643.     /*
  644.     Procedura inicjalizujaca scene grys
  645.      */
  646.     private void initializeStage()
  647.     {
  648.         this.mainPane = new AnchorPane();
  649.         this.mainScene = new Scene(mainPane, WIDTH, HEIGHT);
  650.         this.mainStage = new Stage();
  651.         this.mainStage.setScene(mainScene);
  652.     }
  653.  
  654.  
  655.     private void createBackground()
  656.     {
  657.         gridPane1 = new GridPane();
  658.         gridPane2 = new GridPane();
  659.  
  660.         for(int i = 0; i<12; i++)
  661.         {
  662.             ImageView backgroundImage1 = new ImageView(BACKGROUND_IMAGE);
  663.             ImageView backgroundImage2 = new ImageView(BACKGROUND_IMAGE);
  664.             GridPane.setConstraints(backgroundImage1,i%3,i/3);
  665.             GridPane.setConstraints(backgroundImage2,i%3,i/3);
  666.             gridPane1.getChildren().add(backgroundImage1);
  667.             gridPane2.getChildren().add(backgroundImage2);
  668.         }
  669.         gridPane2.setLayoutY(-1024);
  670.         mainPane.getChildren().addAll(gridPane1,gridPane2);
  671.     }
  672.  
  673.     private void moveBackground()
  674.     {
  675.         gridPane2.setLayoutY(gridPane2.getLayoutY() + 0.5);
  676.         gridPane1.setLayoutY(gridPane1.getLayoutY() + 0.5);
  677.  
  678.         if(gridPane1.getLayoutY() >= 1024) gridPane1.setLayoutY(-1024);
  679.         if(gridPane2.getLayoutY() >= 1024) gridPane2.setLayoutY(-1024);
  680.     }
  681. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement