diff --git a/src/killer_sokoban/Main.java b/src/killer_sokoban/Main.java index 58fb925fbde62ff8c53449810f2456475ca91966..2385871b188a6c48e77c59e1bdd19ffe26411a7b 100644 --- a/src/killer_sokoban/Main.java +++ b/src/killer_sokoban/Main.java @@ -7,15 +7,16 @@ import java.util.Map.Entry; import javafx.application.Application; import javafx.event.EventHandler; +import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; -import javafx.scene.layout.BorderPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.StackPane; +import javafx.scene.layout.*; import javafx.scene.paint.Color; +import javafx.scene.paint.Paint; +import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.stage.Stage; @@ -81,6 +82,33 @@ public class Main extends Application { view.setCanvas(canvas); mapHolder.getChildren().add(canvas); + //Game over screen + view.gameOverContainer = new GridPane(); + view.gameOverContainer.setVisible(false); + view.gameOverContainer.setAlignment(Pos.CENTER); + view.gameOverContainer.setStyle("-fx-background-color: #00000099"); + mapHolder.getChildren().add(view.gameOverContainer); + + VBox gameOverBox = new VBox(); + gameOverBox.setAlignment(Pos.CENTER); + gameOverBox.setSpacing(5); + view.gameOverContainer.add(gameOverBox,0,0); + + Text gameOverTitle = new Text("Game over"); + gameOverTitle.setFill(Color.WHITE); + gameOverTitle.setFont(Font.font("Rockwell", 34)); + gameOverTitle.setUnderline(true); + gameOverBox.getChildren().add(gameOverTitle); + + view.w1FinalScore = new Text("w1: 0 points"); + view.w1FinalScore.setFont(Font.font("Rockwell", 26)); + view.w1FinalScore.setFill(Color.WHITE); + gameOverBox.getChildren().add(view.w1FinalScore); + view.w2FinalScore = new Text("w2: 0 points"); + view.w2FinalScore.setFont(Font.font("Rockwell", 26)); + view.w2FinalScore.setFill(Color.WHITE); + gameOverBox.getChildren().add(view.w2FinalScore); + //Állapotsor felépítése HBox pointsContainer = new HBox(); pointsContainer.setStyle("-fx-background-color: #404040; -fx-font-size: 10pt"); @@ -100,12 +128,12 @@ public class Main extends Application { //Itt kellene betölteni a pályát runCommand("script testmap1.in"); - //Ez végzi a rajzolást - view.update(); - //Egyéb adminisztratív teendők.. gameRunning=true; + //Ez végzi a rajzolást + view.update(); + } public static void drawRequiredFor(int y, int x) @@ -161,6 +189,9 @@ public class Main extends Application { } gameRunning=false; } + + public static boolean isGameRunning() { return gameRunning; } + private static void runCommand(String cmdline) throws NumberFormatException, IOException { //Ha üres sort kaptunk, ignoráljuk diff --git a/src/killer_sokoban/View.java b/src/killer_sokoban/View.java index fdbca37d05d99037e786d9ed4f8689d3b8677fc2..8e2dfcec6e02fc299bb9f488ac3784bfbea5e956 100644 --- a/src/killer_sokoban/View.java +++ b/src/killer_sokoban/View.java @@ -3,6 +3,7 @@ package killer_sokoban; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; +import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; import javafx.scene.text.Text; @@ -24,6 +25,9 @@ public class View { private Image wallImg=new Image("file:GIMPimages/Wall.png"); Text pointBar; //A pontokat ide írjuk ki. + GridPane gameOverContainer; + Text w1FinalScore; + Text w2FinalScore; public void init(int line, int column) { @@ -50,6 +54,14 @@ public class View { //pontok frissítése pointBar.setText("w1: " + Main.getWorkerPoint("w1") +" points\tw2: " + Main.getWorkerPoint("w2") + " points"); + + //game over megjelenítése + if (!Main.isGameRunning()) { + System.out.println("game finished"); + w1FinalScore.setText("w1: " + Main.getWorkerPoint("w1") + " points"); + w2FinalScore.setText("w2: " + Main.getWorkerPoint("w2") + " points"); + gameOverContainer.setVisible(true); + } } public void drawAbstract() {