Skip to content
Snippets Groups Projects
Select Git revision
  • 1e826ea4876d1808017ba1ec287f0eaee53aeff1
  • master default
  • v0.52.5
  • v0.52.4
  • v0.52.3
  • v0.52.2
  • v0.52.1
  • v0.52.0
  • v0.51.0
  • v0.50.0
  • v0.49.0
11 results

user.sls

Blame
  • MainMenu.java 6.90 KiB
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.Random;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    
    import javafx.animation.FadeTransition;
    import javafx.animation.ParallelTransition;
    import javafx.animation.TranslateTransition;
    import javafx.application.Application;
    import javafx.application.Platform;
    import javafx.geometry.Pos;
    import javafx.scene.Node;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.image.Image;
    import javafx.scene.image.ImageView;
    import javafx.scene.input.KeyCode;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.Pane;
    import javafx.scene.layout.VBox;
    import javafx.scene.paint.Color;
    import javafx.scene.text.Font;
    import javafx.scene.text.FontWeight;
    import javafx.scene.text.Text;
    import javafx.stage.Stage;
    import javafx.util.Duration;
    
    
    public class MainMenu extends Application  {
        private static final Font FONT = Font.font("", FontWeight.BOLD, 18);
        
        private Stage primaryStage;
        private Scene startScene;
        private Scene menuScene;
        
    	private VBox menuBox;
    	private VBox startBox;
    	private  MenuItem startItem;
    	
    	protected int currItem=0;
        private Random rand = new Random();
    	private int playerNum = (int) ((Math.random()*656)+44);
        private int randNumber= 0;
        
        private ScheduledExecutorService bgThread = Executors.newSingleThreadScheduledExecutor();
        private Duration durationInSeconds = Duration.seconds(0.4);
        private Duration durationInMillis=Duration.millis(1000);
    
    
    	private int temPlayerNum;
    
        private Parent createMainMenuContent() throws FileNotFoundException {
            Pane root = new Pane();
            root.setPrefSize(900, 600);
    
            final Image background = new Image(readFoto("Images/snakeBG.png"));
            final ImageView background_node = new ImageView(background);
            
            ContentFrame frame1 = new ContentFrame(createLeftContent());
            ContentFrame frame2 = new ContentFrame(createRightContent());
            
            HBox mainInfoBox = new HBox(300, frame1, frame2);
            mainInfoBox.setTranslateX(100);
            mainInfoBox.setTranslateY(50);
    
    
            startItem = new MenuItem("Start");
            // Hier ist das Problem
    //        startItem.setOnActivate(new Runnable() {     	
    //				@Override
    //				public void run() {
    //					try {
    //						System.out.println(createStartContent());
    //						startScene= new Scene(createStartContent());
    //					} catch (FileNotFoundException e) {
    //						e.printStackTrace();
    //					}
    //					actions(startScene, startBox);
    //					primaryStage.setScene(startScene);
    //					primaryStage.show();
    //				}
    //        });
     
            MenuItem exitItem = new MenuItem("EXIT");
            exitItem.setOnActivate(() -> System.exit(0));
    
            menuBox = new VBox(10,
            		startItem,
                    new MenuItem("Settings"),
                    new MenuItem("About"),
                    exitItem);
            menuBox.setAlignment(Pos.TOP_CENTER);
            menuBox.setTranslateX(360);
            menuBox.setTranslateY(300);
    
            getMenuItem(0).setActive(true);
            root.getChildren().addAll(background_node, mainInfoBox, menuBox);
            return root;
        }
    
        private Node createLeftContent() {
            final Text inbox = new Text( playerNum+ " are playing this game");
            inbox.setFill(Color.WHITE);
    
            bgThread.scheduleAtFixedRate(() -> {
                Platform.runLater(() -> {
                	 
                    TranslateTransition tt = new TranslateTransition(durationInSeconds, inbox);
                    FadeTransition ft = new FadeTransition(durationInSeconds, inbox);
    
                    tt.setToY(100);
                    ft.setToValue(0.1);
    
                    ParallelTransition pt = new ParallelTransition(tt, ft);
    
                    pt.setOnFinished(e -> {
                        inbox.setTranslateY(-100);
                       
                        inbox.setText(getPlayerNum()+ " are playing this game");
    
                        TranslateTransition tt2 = new TranslateTransition(durationInSeconds, inbox);
                        FadeTransition ft2 = new FadeTransition(durationInSeconds, inbox);
    
                        tt2.setToY(0);
                        ft2.setToValue(5);
    
                        ParallelTransition pt2 = new ParallelTransition(tt2, ft2);
                        pt2.play();
                    });
                    pt.play();
                });
            }, 2, 4, TimeUnit.SECONDS);
    
            return inbox;
        }
    
        private Node createRightContent() {
            String title = "!! Snake Game !! :)";
            HBox letters = new HBox();
            letters.setAlignment(Pos.CENTER);
            for (int i = 0; i < title.length(); i++) {
                Text letter = new Text(title.charAt(i) + "");
                letter.setFont(FONT);
                letter.setFill(Color.WHITE);
                letters.getChildren().add(letter);
        
                TranslateTransition tt3 = new TranslateTransition(durationInMillis, letter);
                FadeTransition ft3 = new FadeTransition(durationInMillis, letter);
    
                tt3.setFromY(-25);
                tt3.setToY(25);
                ft3.setFromValue(0.1);
                ft3.setToValue(1);
                
                ParallelTransition pt3 = new ParallelTransition(tt3, ft3);
                pt3.setDelay(Duration.millis(i*30));
                pt3.setAutoReverse(true);
                pt3.setCycleCount(TranslateTransition.INDEFINITE);
                pt3.play();
            }
            return letters;
        }
    
    	public FileInputStream readFoto (String source) throws FileNotFoundException {
    		return  new FileInputStream(source);
        }
    	
        protected MenuItem getMenuItem(int index) {
            return (MenuItem) menuBox.getChildren().get(index);
        }
        
        private int getPlayerNum () {
       	 for( int i=0; i<1000; i++ )         
            {     
              randNumber = rand.nextInt(15) + 5;
            }
            temPlayerNum=playerNum + randNumber;
            playerNum= temPlayerNum;
            return playerNum;
       }
        
    
        @Override
        public void start(Stage primaryStage) throws FileNotFoundException{
        	menuScene = new Scene (createMainMenuContent());
            actions(menuScene, menuBox);
            primaryStage.setScene(menuScene);
            primaryStage.show();
        }
        
        public void actions(Scene scene, VBox box) {
        	scene.setOnKeyPressed(event -> {
                if (event.getCode() == KeyCode.UP) {
                    if (currItem > 0) {
                        getMenuItem(currItem).setActive(false); 
                        getMenuItem(--currItem).setActive(true);
                    }
                }
    
                if (event.getCode() == KeyCode.DOWN) {
                    if (currItem < box.getChildren().size() -1) {
                        getMenuItem(currItem).setActive(false);  
                        getMenuItem(++currItem).setActive(true);
                    }
                }
    
                if (event.getCode() == KeyCode.ENTER) {
                    getMenuItem(currItem).activate();
                }
            });
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }