From c9fdb4a7dbe2541943c9049aa3d227e26b630935 Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Wed, 17 May 2023 18:57:59 +0200 Subject: [PATCH 1/6] removing println to stop spamming the console --- app/src/main/java/school_project/GameUI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/school_project/GameUI.java b/app/src/main/java/school_project/GameUI.java index 48071f6..e2034fd 100644 --- a/app/src/main/java/school_project/GameUI.java +++ b/app/src/main/java/school_project/GameUI.java @@ -66,7 +66,7 @@ public class GameUI extends Group{ (int) (_piece.getLayoutY() + (SEGMENT_SIZE+SPACE_SIZE)/2 - grid.getLayoutY())/(SEGMENT_SIZE+SPACE_SIZE), (int) (_piece.getLayoutX() + (SEGMENT_SIZE+SPACE_SIZE)/2 - grid.getLayoutX())/(SEGMENT_SIZE+SPACE_SIZE) ); - System.out.println(level.placePiece(p, piece_position_in_grid) + piece_position_in_grid.toString()); + level.placePiece(p, piece_position_in_grid); if(p.getPosition() != null){ _piece.setLayoutX(grid.getLayoutX() + p.getPosition().y * (SEGMENT_SIZE+SPACE_SIZE)); _piece.setLayoutY(grid.getLayoutY() + p.getPosition().x * (SEGMENT_SIZE+SPACE_SIZE)); From 34ea408202652d8bb0977043dd688fd2a840a198 Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Wed, 17 May 2023 19:21:26 +0200 Subject: [PATCH 2/6] stop piece screen overflow --- app/src/main/java/school_project/GameUI.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/school_project/GameUI.java b/app/src/main/java/school_project/GameUI.java index e2034fd..d3aa943 100644 --- a/app/src/main/java/school_project/GameUI.java +++ b/app/src/main/java/school_project/GameUI.java @@ -28,17 +28,17 @@ public class GameUI extends Group{ for (Piece p : level.getPieces()) { MatrixShape _piece = new MatrixShape(p); - _piece.setLayoutX(piece_space.x); - _piece.setLayoutY(piece_space.y); - - piece_space.y += _piece.boundary_size.y; - - if(piece_space.y >= Controller.screen_size.y){ + if(piece_space.y + _piece.boundary_size.y >= Controller.screen_size.y){ column++; piece_space.y = SPACE_SIZE; piece_space.x = (SEGMENT_SIZE*3 + SPACE_SIZE*4 )* column; } + _piece.setLayoutX(piece_space.x); + _piece.setLayoutY(piece_space.y); + + piece_space.y += _piece.boundary_size.y; + // Pieces Events _piece.setOnMouseClicked(event -> { if(event.getButton() == MouseButton.SECONDARY){ From ff167b4d0fe39a20f54b6bd5368eecd885dd5446 Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Wed, 17 May 2023 19:54:32 +0200 Subject: [PATCH 3/6] deleting piece position when clicked to avoid fantom pieces --- app/src/main/java/school_project/GameUI.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/school_project/GameUI.java b/app/src/main/java/school_project/GameUI.java index d3aa943..ccf2702 100644 --- a/app/src/main/java/school_project/GameUI.java +++ b/app/src/main/java/school_project/GameUI.java @@ -58,6 +58,7 @@ public class GameUI extends Group{ _piece.setOnMouseReleased(event -> { if(event.getButton() != MouseButton.PRIMARY) return; + p.setPosition(null); if(event.getSceneX() > grid.getLayoutX() && event.getSceneX() < grid.getLayoutX() + grid.boundary_size.x && event.getSceneY() > grid.getLayoutY() && event.getSceneY() < grid.getLayoutY() + grid.boundary_size.y ) { From ac6c8611e7e21ce71324905e31bdf722311fe810 Mon Sep 17 00:00:00 2001 From: Debucquoy Anthony Date: Wed, 17 May 2023 23:42:44 +0200 Subject: [PATCH 4/6] Adding all levels + linking buttons to create new level just do `gradle -q --console plain -PmainClass=school_project.Parsers.FileParserFactory run` Co-authored-by: Anthony Debucquoy Reviewed-on: https://git.herisson.ovh/undefined_name/School_Project/pulls/56 Reviewed-by: Mat_02 --- app/build.gradle | 6 +++- .../java/school_project/Menu/MenuLevel.java | 31 +++++++++++++----- .../school_project/levels/level1.level | 1 + .../school_project/levels/level10.level | 1 + .../school_project/{ => levels}/level11.level | 0 .../school_project/levels/level12.level | 1 + .../school_project/levels/level13.level | 1 + .../school_project/levels/level14.level | 1 + .../school_project/levels/level15.level | 1 + .../school_project/levels/level16.level | 1 + .../school_project/levels/level17.level | 1 + .../school_project/levels/level18.level | Bin 0 -> 39 bytes .../school_project/levels/level19.level | 1 + .../school_project/levels/level2.level | 1 + .../school_project/levels/level20.level | 1 + .../school_project/levels/level21.level | Bin 0 -> 25 bytes .../school_project/levels/level22.level | 1 + .../school_project/levels/level23.level | 1 + .../school_project/levels/level24.level | 1 + .../school_project/levels/level25.level | 1 + .../school_project/levels/level26.level | Bin 0 -> 29 bytes .../school_project/levels/level27.level | 1 + .../school_project/levels/level28.level | 1 + .../school_project/levels/level29.level | 1 + .../school_project/levels/level3.level | 1 + .../school_project/levels/level30.level | 1 + .../school_project/levels/level4.level | 1 + .../school_project/levels/level5.level | 1 + .../school_project/levels/level6.level | 1 + .../school_project/levels/level7.level | 1 + .../school_project/levels/level8.level | 1 + .../school_project/levels/level9.level | 1 + 32 files changed, 53 insertions(+), 10 deletions(-) create mode 100644 app/src/main/resources/school_project/levels/level1.level create mode 100644 app/src/main/resources/school_project/levels/level10.level rename app/src/main/resources/school_project/{ => levels}/level11.level (100%) create mode 100644 app/src/main/resources/school_project/levels/level12.level create mode 100644 app/src/main/resources/school_project/levels/level13.level create mode 100644 app/src/main/resources/school_project/levels/level14.level create mode 100644 app/src/main/resources/school_project/levels/level15.level create mode 100644 app/src/main/resources/school_project/levels/level16.level create mode 100644 app/src/main/resources/school_project/levels/level17.level create mode 100644 app/src/main/resources/school_project/levels/level18.level create mode 100644 app/src/main/resources/school_project/levels/level19.level create mode 100644 app/src/main/resources/school_project/levels/level2.level create mode 100644 app/src/main/resources/school_project/levels/level20.level create mode 100644 app/src/main/resources/school_project/levels/level21.level create mode 100644 app/src/main/resources/school_project/levels/level22.level create mode 100644 app/src/main/resources/school_project/levels/level23.level create mode 100644 app/src/main/resources/school_project/levels/level24.level create mode 100644 app/src/main/resources/school_project/levels/level25.level create mode 100644 app/src/main/resources/school_project/levels/level26.level create mode 100644 app/src/main/resources/school_project/levels/level27.level create mode 100644 app/src/main/resources/school_project/levels/level28.level create mode 100644 app/src/main/resources/school_project/levels/level29.level create mode 100644 app/src/main/resources/school_project/levels/level3.level create mode 100644 app/src/main/resources/school_project/levels/level30.level create mode 100644 app/src/main/resources/school_project/levels/level4.level create mode 100644 app/src/main/resources/school_project/levels/level5.level create mode 100644 app/src/main/resources/school_project/levels/level6.level create mode 100644 app/src/main/resources/school_project/levels/level7.level create mode 100644 app/src/main/resources/school_project/levels/level8.level create mode 100644 app/src/main/resources/school_project/levels/level9.level diff --git a/app/build.gradle b/app/build.gradle index b253582..ee76748 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,7 +29,7 @@ dependencies { application { // Define the main class for the application. - mainClass = 'school_project.Controller' + mainClass = project.hasProperty("mainClass") ? project.getProperty("mainClass") : 'school_project.Controller' } javafx { @@ -41,3 +41,7 @@ tasks.named('test') { // Use JUnit Platform for unit tests. useJUnitPlatform() } + +run{ +standardInput = System.in +} diff --git a/app/src/main/java/school_project/Menu/MenuLevel.java b/app/src/main/java/school_project/Menu/MenuLevel.java index aff5f6d..6987f63 100644 --- a/app/src/main/java/school_project/Menu/MenuLevel.java +++ b/app/src/main/java/school_project/Menu/MenuLevel.java @@ -7,6 +7,11 @@ import javafx.scene.layout.ColumnConstraints; import javafx.scene.layout.GridPane; import javafx.scene.layout.RowConstraints; import school_project.Controller; +import school_project.GameUI; +import school_project.Parsers.FileParserFactory; + +import java.io.File; +import java.io.IOException; public class MenuLevel extends GridPane { private int StartLevel; @@ -60,30 +65,38 @@ public class MenuLevel extends GridPane { //It's here that I put all buttons where I need (base on column not row) for (int i = 0; i < 3; i++) { for (int j = 1; j < 5; j++) { + Button levelButton = new Button("level "+(StartLevel)); + levelButton.setOnAction(event -> { + try { + String levelName = ((Button)event.getSource()).getText().replace(" ", "") + ".level"; + System.out.println(levelName); + GameUI level = new GameUI(FileParserFactory.loadMapFromFile(new File(Controller.class.getResource("levels/" + levelName).getFile()))); + Controller.switchRoot(level); + } catch (IOException e) { + System.out.println("Le niveau " + StartLevel + "n'existe pas."); + } + }); if(i==0){ - Button Level = new Button("level "+(StartLevel)); StartLevel+=3; - add(Level,i,j); - setHalignment(Level,HPos.CENTER); + add(levelButton,i,j); + setHalignment(levelButton,HPos.CENTER); if(j==4){ StartLevel-=11; } } else if(i==1&&j!=4) { - Button Level = new Button("level "+(StartLevel)); StartLevel += 3; - add(Level, i, j); - setHalignment(Level,HPos.CENTER); + add(levelButton, i, j); + setHalignment(levelButton,HPos.CENTER); if (j == 3) { StartLevel -=8; } } else if(i==2&&j!=4){ - Button Level = new Button("level "+(StartLevel)); StartLevel+=3; - add(Level,i,j); - setHalignment(Level,HPos.CENTER); + add(levelButton,i,j); + setHalignment(levelButton,HPos.CENTER); } } } diff --git a/app/src/main/resources/school_project/levels/level1.level b/app/src/main/resources/school_project/levels/level1.level new file mode 100644 index 0000000..a3cdeb3 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level1.level @@ -0,0 +1 @@ +SMSààSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level10.level b/app/src/main/resources/school_project/levels/level10.level new file mode 100644 index 0000000..793e499 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level10.level @@ -0,0 +1 @@ +SMSêÿ"ð"°"p1àSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/level11.level b/app/src/main/resources/school_project/levels/level11.level similarity index 100% rename from app/src/main/resources/school_project/level11.level rename to app/src/main/resources/school_project/levels/level11.level diff --git a/app/src/main/resources/school_project/levels/level12.level b/app/src/main/resources/school_project/levels/level12.level new file mode 100644 index 0000000..64d2c52 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level12.level @@ -0,0 +1 @@ +SMSÿÿÿ€"°1àà2ü"p3í€SME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level13.level b/app/src/main/resources/school_project/levels/level13.level new file mode 100644 index 0000000..b4a7301 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level13.level @@ -0,0 +1 @@ +SMS?ÿÿýðà"°3í€à"ð2ü3í€SME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level14.level b/app/src/main/resources/school_project/levels/level14.level new file mode 100644 index 0000000..f209ed5 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level14.level @@ -0,0 +1 @@ +SMSfÿÿŸ< 1à"°"p€&ÿð"ð"ð"°àSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level15.level b/app/src/main/resources/school_project/levels/level15.level new file mode 100644 index 0000000..ec54527 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level15.level @@ -0,0 +1 @@ +SMSÿÿð"°1à€"p#üÀ!ÀSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level16.level b/app/src/main/resources/school_project/levels/level16.level new file mode 100644 index 0000000..71222e8 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level16.level @@ -0,0 +1 @@ +SMSÿÿÿ€"ðà€"p3í€3o€SME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level17.level b/app/src/main/resources/school_project/levels/level17.level new file mode 100644 index 0000000..c2808d1 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level17.level @@ -0,0 +1 @@ +SMSÿÿÿÿð3ÿ€3í€1à1à#ü#üSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level18.level b/app/src/main/resources/school_project/levels/level18.level new file mode 100644 index 0000000000000000000000000000000000000000..fdb44617673f547ef3f0f25fa5c5ae4c7afdcb29 GIT binary patch literal 39 qcmWIc4Q6Nm4+agK#=jYq3XI=27~3}}Jpj^*2NVyO)PD%}bp-%~)Dpu0 literal 0 HcmV?d00001 diff --git a/app/src/main/resources/school_project/levels/level19.level b/app/src/main/resources/school_project/levels/level19.level new file mode 100644 index 0000000..bccddfc --- /dev/null +++ b/app/src/main/resources/school_project/levels/level19.level @@ -0,0 +1 @@ +SMSóÿÿóàà3ü€3o€4ð"°SME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level2.level b/app/src/main/resources/school_project/levels/level2.level new file mode 100644 index 0000000..f37c5bd --- /dev/null +++ b/app/src/main/resources/school_project/levels/level2.level @@ -0,0 +1 @@ +SMSà1àSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level20.level b/app/src/main/resources/school_project/levels/level20.level new file mode 100644 index 0000000..62732e5 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level20.level @@ -0,0 +1 @@ +SMSÿÿÿ€À3í€"ð2ø3ü€SME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level21.level b/app/src/main/resources/school_project/levels/level21.level new file mode 100644 index 0000000000000000000000000000000000000000..43446e8d3aec9b52dbc850c25fbb2e2c973e5760 GIT binary patch literal 25 hcmWIc4Q6Hi|NlD!o6!%&1BMTjHYnF9*97~z0sw_u3JL%K literal 0 HcmV?d00001 diff --git a/app/src/main/resources/school_project/levels/level22.level b/app/src/main/resources/school_project/levels/level22.level new file mode 100644 index 0000000..40da38f --- /dev/null +++ b/app/src/main/resources/school_project/levels/level22.level @@ -0,0 +1 @@ +SMSÿÿÿ€"pàÀ"°#ü#è#èSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level23.level b/app/src/main/resources/school_project/levels/level23.level new file mode 100644 index 0000000..c5c94f1 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level23.level @@ -0,0 +1 @@ +SMSÿÿÿ€2Üà"Ð#è#¼BSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level24.level b/app/src/main/resources/school_project/levels/level24.level new file mode 100644 index 0000000..2bc28e5 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level24.level @@ -0,0 +1 @@ +SMSvÿÿ€#쀀#ì#¼BSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level25.level b/app/src/main/resources/school_project/levels/level25.level new file mode 100644 index 0000000..bc3e531 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level25.level @@ -0,0 +1 @@ +SMSÿÿÿÿð#¼#|!À#\#ü2ô2äBSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level26.level b/app/src/main/resources/school_project/levels/level26.level new file mode 100644 index 0000000000000000000000000000000000000000..e4355f0e50194d137e8a07b127cf0364eb357bd2 GIT binary patch literal 29 lcmWIc4Q6LI`279*^EL)HqY9%6r433CjJ~M-{}Al!3IMfN49)-m literal 0 HcmV?d00001 diff --git a/app/src/main/resources/school_project/levels/level27.level b/app/src/main/resources/school_project/levels/level27.level new file mode 100644 index 0000000..032baad --- /dev/null +++ b/app/src/main/resources/school_project/levels/level27.level @@ -0,0 +1 @@ +SMSÿÿÿÿð#ø#´!À!À#¼4ð3o€SME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level28.level b/app/src/main/resources/school_project/levels/level28.level new file mode 100644 index 0000000..e6e3b4b --- /dev/null +++ b/app/src/main/resources/school_project/levels/level28.level @@ -0,0 +1 @@ +SMSÿÿÿÿÿÿ€2ôB#|3?€3ÿ€#ü&ÿðSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level29.level b/app/src/main/resources/school_project/levels/level29.level new file mode 100644 index 0000000..37f4982 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level29.level @@ -0,0 +1 @@ +SMSyïÿyàBø!ÀBø$ÿ#´#èSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level3.level b/app/src/main/resources/school_project/levels/level3.level new file mode 100644 index 0000000..e3c2d52 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level3.level @@ -0,0 +1 @@ +SMSÿ€#üàSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level30.level b/app/src/main/resources/school_project/levels/level30.level new file mode 100644 index 0000000..8024650 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level30.level @@ -0,0 +1 @@ +SMSý÷ß}÷߀ $«3Û€2ø€€"°2x"p2ì"ð2äSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level4.level b/app/src/main/resources/school_project/levels/level4.level new file mode 100644 index 0000000..e7cebe7 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level4.level @@ -0,0 +1 @@ +SMSÿÿ#ü#ü€1àSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level5.level b/app/src/main/resources/school_project/levels/level5.level new file mode 100644 index 0000000..d3adad1 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level5.level @@ -0,0 +1 @@ +SMS÷p€€1à#ü#üSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level6.level b/app/src/main/resources/school_project/levels/level6.level new file mode 100644 index 0000000..b6466fa --- /dev/null +++ b/app/src/main/resources/school_project/levels/level6.level @@ -0,0 +1 @@ +SMSÿ3ÿ€à1àSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level7.level b/app/src/main/resources/school_project/levels/level7.level new file mode 100644 index 0000000..165247f --- /dev/null +++ b/app/src/main/resources/school_project/levels/level7.level @@ -0,0 +1 @@ +SMS3ÿ2üà"°SME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level8.level b/app/src/main/resources/school_project/levels/level8.level new file mode 100644 index 0000000..56abddb --- /dev/null +++ b/app/src/main/resources/school_project/levels/level8.level @@ -0,0 +1 @@ +SMSÿÿÿ€2ü"°"°"p1à€1à"pSME \ No newline at end of file diff --git a/app/src/main/resources/school_project/levels/level9.level b/app/src/main/resources/school_project/levels/level9.level new file mode 100644 index 0000000..d636478 --- /dev/null +++ b/app/src/main/resources/school_project/levels/level9.level @@ -0,0 +1 @@ +SMSÿÿ߀1à1à3ÿ€#ü"°SME \ No newline at end of file From 4c185f0a817432b78af36f2d30c9b9293fb255bb Mon Sep 17 00:00:00 2001 From: Debucquoy Anthony Date: Thu, 18 May 2023 18:32:16 +0200 Subject: [PATCH 5/6] saveLevel (#69) Co-authored-by: Anthony Debucquoy Reviewed-on: https://git.herisson.ovh/undefined_name/School_Project/pulls/69 Reviewed-by: Mat_02 --- .gitignore | 1 + app/src/main/java/school_project/Controller.java | 16 ++++++++++++++++ app/src/main/java/school_project/GameUI.java | 8 +++++++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e102534..f1c9833 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,4 @@ build .idea/ .settings/ +*.slevel diff --git a/app/src/main/java/school_project/Controller.java b/app/src/main/java/school_project/Controller.java index c9636a0..1e42ec3 100644 --- a/app/src/main/java/school_project/Controller.java +++ b/app/src/main/java/school_project/Controller.java @@ -4,11 +4,14 @@ import javafx.application.Application; import javafx.scene.Parent; import javafx.scene.Scene; +import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCombination; import javafx.stage.Screen; import javafx.stage.Stage; import school_project.Menu.MenuAccueil; +import school_project.Parsers.FileParserFactory; +import java.io.File; import java.io.IOException; @@ -41,6 +44,19 @@ public class Controller extends Application { public static void switchRoot(Parent root){ Scene scene = new Scene(root); + if(root instanceof GameUI){ + scene.setOnKeyPressed(event ->{ + GameUI game = (GameUI) root; + if(event.getCode() == KeyCode.ESCAPE){ + try { + FileParserFactory.saveFileFromMap(new File("save.slevel"), game.getLevel()); + switchRoot(new MenuAccueil()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }); + } stage.setScene(scene); } public static void main(String[] args) { diff --git a/app/src/main/java/school_project/GameUI.java b/app/src/main/java/school_project/GameUI.java index ccf2702..4aa8abe 100644 --- a/app/src/main/java/school_project/GameUI.java +++ b/app/src/main/java/school_project/GameUI.java @@ -12,8 +12,11 @@ public class GameUI extends Group{ public final static int SPACE_SIZE = 5; private final Vec2 piece_pos_click = new Vec2(); + private Map level; + public GameUI(Map level) throws FileNotFoundException { super(); + this.level = level; MatrixShape grid = new MatrixShape(level); @@ -77,8 +80,11 @@ public class GameUI extends Group{ } } }); - getChildren().add(_piece); } } + + public Map getLevel() { + return level; + } } \ No newline at end of file From 7bd43062d0beb7cc308c7794c2e06568efe00d1c Mon Sep 17 00:00:00 2001 From: Mat_02 Date: Thu, 18 May 2023 18:36:25 +0200 Subject: [PATCH 6/6] Make a Button to load the previous game (#68) A simple button to load a previous game Co-authored-by: Mat Reviewed-on: https://git.herisson.ovh/undefined_name/School_Project/pulls/68 Reviewed-by: Debucquoy Anthony --- .../main/java/school_project/Controller.java | 1 + .../java/school_project/Menu/MenuAccueil.java | 95 ++++++++++++++----- 2 files changed, 72 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/school_project/Controller.java b/app/src/main/java/school_project/Controller.java index 1e42ec3..0f827ab 100644 --- a/app/src/main/java/school_project/Controller.java +++ b/app/src/main/java/school_project/Controller.java @@ -22,6 +22,7 @@ public class Controller extends Application { @Override public void start(Stage primaryStage) throws IOException { + new File("save.slevel"); stage = primaryStage; screen_size = new Vec2( (int) Screen.getPrimary().getBounds().getWidth(), diff --git a/app/src/main/java/school_project/Menu/MenuAccueil.java b/app/src/main/java/school_project/Menu/MenuAccueil.java index 5780562..e176d96 100644 --- a/app/src/main/java/school_project/Menu/MenuAccueil.java +++ b/app/src/main/java/school_project/Menu/MenuAccueil.java @@ -2,41 +2,88 @@ package school_project.Menu; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; import javafx.scene.control.Label; -import javafx.scene.layout.BorderPane; +import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.scene.text.Font; import school_project.Controller; -public class MenuAccueil extends BorderPane { +import school_project.GameUI; +import school_project.MapGenerator; +import school_project.Parsers.FileParserFactory; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +public class MenuAccueil extends StackPane { public MenuAccueil(){ super(); - //create all the objet that i need - Button Play = new Button("Play"); + //create all the objet that I need + ChoiceBox SlctDifficulty = new ChoiceBox<>(); + SlctDifficulty.getItems().addAll("Easy", "Medium", "Difficult"); + + Label RdmLvl = new Label("Random Level : "); + Button LoadLvl = new Button("Load game"); Button SelectLevel= new Button("Select Level"); - Button Trophy = new Button("Trophy"); + Label Title = new Label("Welcome to Road to Master"); - //set up all the Button where i need - setTop(Title); - setLeft(Play); - setRight(SelectLevel); - setBottom(Trophy); - Title.setFont(Font.font(20)); - Title.setTextFill(Color.GOLD); - setAlignment(Title, Pos.CENTER); - setAlignment(Play,Pos.CENTER); - setAlignment(SelectLevel,Pos.CENTER); - setAlignment(Trophy,Pos.CENTER); - setPadding(new Insets(20,60,20,60)); + SlctDifficulty.setOnAction(event -> { + String choosediff = SlctDifficulty.getSelectionModel().getSelectedItem(); + System.out.println(choosediff); + switch (choosediff) { + case "Easy": + try { + Controller.switchRoot(new GameUI(MapGenerator.generate(MapGenerator.Difficulty.Easy))); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + break; + case "Medium": + try { + Controller.switchRoot(new GameUI(MapGenerator.generate(MapGenerator.Difficulty.Medium))); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + break; + case "Difficult": + try { + Controller.switchRoot(new GameUI(MapGenerator.generate(MapGenerator.Difficulty.Difficult))); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + break; + } + }); + + //set up all the Button where I need + getChildren().addAll(Title,SlctDifficulty,SelectLevel,RdmLvl,LoadLvl); + RdmLvl.setFont(Font.font(25)); + RdmLvl.setTextFill(Color.GOLD); + Title.setFont(Font.font(40)); + Title.setTextFill(Color.RED); + setAlignment(Title, Pos.TOP_CENTER); + setAlignment(LoadLvl,Pos.BOTTOM_CENTER); + setAlignment(SlctDifficulty,Pos.CENTER_LEFT); + setAlignment(SelectLevel,Pos.CENTER_RIGHT); + setAlignment(RdmLvl, Pos.CENTER_LEFT); + + setMargin(RdmLvl,new Insets(0,0,0,100)); + setMargin(SlctDifficulty,new Insets(0,0,0,300)); + setMargin(SelectLevel,new Insets(0,300,0,0)); + setMargin(Title,new Insets(200,0,0,0)); + setMargin(LoadLvl,new Insets(0,0,200,0)); + SelectLevel.setOnAction(event -> Controller.switchRoot(new MenuLevel(1))); + LoadLvl.setOnAction(event -> { + try { + FileParserFactory.loadMapFromFile(new File("save.slevel")); + } catch (IOException e) { + throw new RuntimeException(e); + } + }); + getStyleClass().add("BorderPane"); getStylesheets().add(String.valueOf(getClass().getResource("StyleMenuAcceuil.css"))); - - - } - - - -} +} \ No newline at end of file