diff --git a/Partie_3_GUI/.vscode/launch.json b/Partie_3_GUI/.vscode/launch.json index 7f873a9001f36511d308c7bfb198f7e8789586d0..406d7439f4688b8925c68337f9215d85c4b458db 100644 --- a/Partie_3_GUI/.vscode/launch.json +++ b/Partie_3_GUI/.vscode/launch.json @@ -1,6 +1,13 @@ { "version": "0.2.0", "configurations": [ + { + "type": "java", + "name": "BlackjackGUI", + "request": "launch", + "mainClass": "ch.hepia.BlackjackGUI", + "projectName": "Java_Card_Game" + }, { "name": "C/C++ Runner: Debug Session", "type": "cppdbg", diff --git a/Partie_3_GUI/img/background.jpg b/Partie_3_GUI/img/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..199af5b2fc2f8698b45bde41b05f093600cdaf8b Binary files /dev/null and b/Partie_3_GUI/img/background.jpg differ diff --git a/Partie_3_GUI/img/blackjack.png b/Partie_3_GUI/img/blackjack.png new file mode 100644 index 0000000000000000000000000000000000000000..70975db3c518600e2b6534b9531b1f57922ff135 Binary files /dev/null and b/Partie_3_GUI/img/blackjack.png differ diff --git a/Partie_3_GUI/img/gray_button.png b/Partie_3_GUI/img/gray_button.png new file mode 100644 index 0000000000000000000000000000000000000000..8021c896f0d28e07ec1a57f49eb2b60fbc69413d Binary files /dev/null and b/Partie_3_GUI/img/gray_button.png differ diff --git a/Partie_3_GUI/img/light_blue_button.png b/Partie_3_GUI/img/light_blue_button.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad0985ec1e056edddba0985e3cd8b72584e0e0e Binary files /dev/null and b/Partie_3_GUI/img/light_blue_button.png differ diff --git a/Partie_3_GUI/img/light_green_button.png b/Partie_3_GUI/img/light_green_button.png new file mode 100644 index 0000000000000000000000000000000000000000..4c0dcbe9593b5ebf10d978e92c57a8b991646cc3 Binary files /dev/null and b/Partie_3_GUI/img/light_green_button.png differ diff --git a/Partie_3_GUI/img/red_button.png b/Partie_3_GUI/img/red_button.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd3c05e8908ebd45c41eb76f0492af62847bd27 Binary files /dev/null and b/Partie_3_GUI/img/red_button.png differ diff --git a/Partie_3_GUI/pom.xml b/Partie_3_GUI/pom.xml index a8dc63e3d7322b47fbfe43c3739f9655dca1814a..94844ab553712ae4495252c282221d4b6a0e764e 100644 --- a/Partie_3_GUI/pom.xml +++ b/Partie_3_GUI/pom.xml @@ -28,16 +28,16 @@ <version>5.9.1</version> <scope>test</scope> </dependency> - <dependency> - <groupId>org.openjfx</groupId> - <artifactId>javafx-controls</artifactId> - <version>19</version> - </dependency> <dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.9</version> </dependency> + <dependency> + <groupId>org.openjfx</groupId> + <artifactId>javafx-controls</artifactId> + <version>21.0.1</version> + </dependency> </dependencies> <build> @@ -61,6 +61,14 @@ <artifactId>maven-javadoc-plugin</artifactId> <version>3.4.1</version> </plugin> + <plugin> + <groupId>org.openjfx</groupId> + <artifactId>javafx-maven-plugin</artifactId> + <version>0.0.8</version> + <configuration> + <mainClass>ch.hepia.BlackjackGUI</mainClass> + </configuration> + </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> diff --git a/Partie_3_GUI/src/main/java/ch/hepia/BlackjackGUI.java b/Partie_3_GUI/src/main/java/ch/hepia/BlackjackGUI.java new file mode 100644 index 0000000000000000000000000000000000000000..77efaedb9413266e8a54beb4d4074c068a2b6c27 --- /dev/null +++ b/Partie_3_GUI/src/main/java/ch/hepia/BlackjackGUI.java @@ -0,0 +1,182 @@ +package ch.hepia; + +import javafx.application.Application; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.Background; +import javafx.scene.layout.BackgroundImage; +import javafx.scene.layout.BackgroundPosition; +import javafx.scene.layout.BackgroundRepeat; +import javafx.scene.layout.BackgroundSize; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.scene.paint.Color; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.stage.Stage; + +import java.io.File; + +import javafx.animation.ScaleTransition; +import javafx.animation.TranslateTransition; +import javafx.util.Duration; +import javafx.scene.layout.BackgroundImage; +import javafx.scene.layout.BackgroundRepeat; +import javafx.scene.layout.BackgroundSize; +import javafx.scene.layout.BackgroundPosition; +import javafx.scene.paint.Color; + +public class BlackjackGUI extends Application { + + public static void main(String[] args) { + launch(args); + } + + @Override + public void start(Stage primaryStage) { + + String filePath = "save.csv"; + File f = new File(filePath); + + primaryStage.setTitle("Blackjack"); + + Image backgroundImage = new Image("file:img/background.jpg"); + BackgroundImage background = new BackgroundImage( + backgroundImage, + BackgroundRepeat.NO_REPEAT, + BackgroundRepeat.NO_REPEAT, + BackgroundPosition.CENTER, + new BackgroundSize(BackgroundSize.AUTO, BackgroundSize.AUTO, false, false, true, true)); + + Image blackjackImage = new Image("file:img/blackjack.png"); + ImageView blackjackImageView = new ImageView(blackjackImage); + blackjackImageView.setFitHeight(400); + blackjackImageView.setPreserveRatio(true); + + Button lightGreenButton = createButtonWithText("New Game", "file:img/light_green_button.png", 300); + Button lightBlueButton = createButtonWithText("Load Save", "file:img/light_blue_button.png", 300); + + // Create HBox for the bottom images + HBox bottomImagesBox = new HBox(20); + bottomImagesBox.setAlignment(Pos.CENTER); + + // Create VBox for the entire layout + VBox layout = new VBox(100); + layout.getChildren().addAll(blackjackImageView, bottomImagesBox); + layout.setAlignment(Pos.CENTER); + + // Set Background Image + layout.setBackground(new Background(background)); + + // Create the scene and set it to the stage + Scene scene = new Scene(layout, 1400, 800); + primaryStage.setScene(scene); + primaryStage.setResizable(false); + + // Show the stage + primaryStage.show(); + + if (!f.exists()) { + lightBlueButton.setVisible(false); + bottomImagesBox.getChildren().add(lightGreenButton); + } else { + bottomImagesBox.getChildren().addAll(lightGreenButton, lightBlueButton); + } + + TranslateTransition blackjackTransition = new TranslateTransition(Duration.seconds(2), blackjackImageView); + blackjackTransition.setByX(0); + blackjackTransition.setByY(30); + blackjackTransition.setCycleCount(TranslateTransition.INDEFINITE); + blackjackTransition.setAutoReverse(true); + + TranslateTransition lightGreenButtonTransition = new TranslateTransition(Duration.seconds(1), + lightGreenButton); + lightGreenButtonTransition.setByX(0); + lightGreenButtonTransition.setByY(5); + lightGreenButtonTransition.setCycleCount(TranslateTransition.INDEFINITE); + lightGreenButtonTransition.setAutoReverse(true); + + TranslateTransition lightBlueButtonTransition = new TranslateTransition(Duration.seconds(1), + lightBlueButton); + lightBlueButtonTransition.setByX(0); + lightBlueButtonTransition.setByY(5); + lightBlueButtonTransition.setCycleCount(TranslateTransition.INDEFINITE); + lightBlueButtonTransition.setAutoReverse(true); + + // Start the animation + lightBlueButtonTransition.play(); + lightGreenButtonTransition.play(); + blackjackTransition.play(); + + lightGreenButton.setOnAction(event -> { + lightGreenButtonTransition.stop(); + lightBlueButtonTransition.stop(); + blackjackTransition.stop(); + + ScaleTransition scaleTransition = new ScaleTransition(Duration.seconds(1), blackjackImageView); + scaleTransition.setToX(0.3); + scaleTransition.setToY(0.3); + + blackjackTransition.setAutoReverse(false); + blackjackTransition.setCycleCount(1); + blackjackTransition.setByX(-640); + blackjackTransition.setByY(-250); + blackjackTransition.setDuration(Duration.seconds(1)); + + lightBlueButtonTransition.setAutoReverse(false); + lightBlueButtonTransition.setCycleCount(1); + lightBlueButtonTransition.setByY(300); + + lightGreenButtonTransition.setAutoReverse(false); + lightGreenButtonTransition.setCycleCount(1); + lightGreenButtonTransition.setByY(300); + + blackjackTransition.setOnFinished(e -> { + blackjackTransition.setByX(0); + blackjackTransition.setByY(10); + blackjackTransition.setCycleCount(TranslateTransition.INDEFINITE); + blackjackTransition.setAutoReverse(true); + + blackjackTransition.play(); + }); + + blackjackTransition.play(); + lightBlueButtonTransition.play(); + lightGreenButtonTransition.play(); + scaleTransition.play(); + }); + } + + private Button createButtonWithText(String buttonText, String imagePath, int size) { + Image buttonImage = new Image(imagePath); + ImageView buttonImageView = new ImageView(buttonImage); + buttonImageView.setFitWidth(size); + buttonImageView.setPreserveRatio(true); + + Button button = new Button(buttonText, buttonImageView); + button.setContentDisplay(javafx.scene.control.ContentDisplay.CENTER); + button.setPadding(Insets.EMPTY); + + Font font = Font.font("Courier New", FontWeight.BOLD, 25); + button.setFont(font); + button.setTextFill(Color.WHITE); + + double translateYValue = 7.0; + buttonImageView.setTranslateY(translateYValue); + + button.setStyle("-fx-background-color: transparent; -fx-border-color: transparent;"); + + button.setOnMouseEntered(e -> button.setStyle( + "-fx-cursor: hand; -fx-background-color: transparent; -fx-border-color: transparent;")); + + button.setOnMouseExited(e -> button + .setStyle("-fx-background-color: transparent; -fx-border-color: transparent;")); + + return button; + } + +} diff --git a/Partie_3_GUI/target/classes/ch/hepia/App.class b/Partie_3_GUI/target/classes/ch/hepia/App.class index aad0e41606823ab879200272efe2f63852dccb72..6f9ea08bede892bdaffb0daee17453c3e7b99324 100644 Binary files a/Partie_3_GUI/target/classes/ch/hepia/App.class and b/Partie_3_GUI/target/classes/ch/hepia/App.class differ diff --git a/Partie_3_GUI/target/classes/ch/hepia/BlackjackGUI.class b/Partie_3_GUI/target/classes/ch/hepia/BlackjackGUI.class new file mode 100644 index 0000000000000000000000000000000000000000..8ee6da1ffe40a822485baf2765e2b7c90c623206 Binary files /dev/null and b/Partie_3_GUI/target/classes/ch/hepia/BlackjackGUI.class differ diff --git a/Partie_3_GUI/target/classes/ch/hepia/GameManager.class b/Partie_3_GUI/target/classes/ch/hepia/GameManager.class index 0ae3f3d24bc760587c947162801cc9ccb6df14b6..e282ad70f389211acf3598dce6c56617b197d996 100644 Binary files a/Partie_3_GUI/target/classes/ch/hepia/GameManager.class and b/Partie_3_GUI/target/classes/ch/hepia/GameManager.class differ diff --git a/Partie_3_GUI/target/classes/ch/hepia/JoueurCroupier.class b/Partie_3_GUI/target/classes/ch/hepia/JoueurCroupier.class index 1d0bb3797ec4281bcbc48e36763785c6e864c086..a6d7be41a8badd1a6b17940cba326b7982c5ed9e 100644 Binary files a/Partie_3_GUI/target/classes/ch/hepia/JoueurCroupier.class and b/Partie_3_GUI/target/classes/ch/hepia/JoueurCroupier.class differ diff --git a/Partie_3_GUI/target/classes/ch/hepia/JoueurHumain.class b/Partie_3_GUI/target/classes/ch/hepia/JoueurHumain.class index 068028eff942eafbe3b36e821e7fc43a0fe1309b..80c3c5720b4dac59c98a4620e9f627ec9d95b149 100644 Binary files a/Partie_3_GUI/target/classes/ch/hepia/JoueurHumain.class and b/Partie_3_GUI/target/classes/ch/hepia/JoueurHumain.class differ diff --git a/Partie_3_GUI/target/classes/ch/hepia/JoueurOrdinateur.class b/Partie_3_GUI/target/classes/ch/hepia/JoueurOrdinateur.class index e8925bd7d60d537103d49935df82fae23c2b1f36..7d9b26c3479ba17255924e3dfe272b223229de85 100644 Binary files a/Partie_3_GUI/target/classes/ch/hepia/JoueurOrdinateur.class and b/Partie_3_GUI/target/classes/ch/hepia/JoueurOrdinateur.class differ diff --git a/Partie_3_GUI/target/classes/ch/hepia/Save.class b/Partie_3_GUI/target/classes/ch/hepia/Save.class index 9573a2e368dea090dc72a1674ce1aa82a9c79b87..4d96235bc2aa0a217a3dee9df8ff67b16df6f5b7 100644 Binary files a/Partie_3_GUI/target/classes/ch/hepia/Save.class and b/Partie_3_GUI/target/classes/ch/hepia/Save.class differ diff --git a/Partie_3_GUI/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/Partie_3_GUI/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 814b85978aca0dc13df7846ffc2a5d7617a2ea2d..5d1c142f591bd975d136e6e7e94b3cee8333fbad 100644 --- a/Partie_3_GUI/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/Partie_3_GUI/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,7 +1,15 @@ ch/hepia/Hand.class ch/hepia/JeudeCarte.class ch/hepia/Carte.class +ch/hepia/Save.class +ch/hepia/JoueurOrdinateur.class +ch/hepia/Joueur.class ch/hepia/App.class ch/hepia/COULEUR.class ch/hepia/Hand$1.class ch/hepia/Paquet.class +ch/hepia/JoueurCroupier.class +ch/hepia/BlackjackGUI.class +ch/hepia/JeudeCarte$1.class +ch/hepia/GameManager.class +ch/hepia/JoueurHumain.class diff --git a/Partie_3_GUI/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/Partie_3_GUI/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index aacaf9de67b552001c795abf890bbc4f2a439106..e75eae20816218a9b04fc56d9d5a71067fcd5fb3 100644 --- a/Partie_3_GUI/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/Partie_3_GUI/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,8 +1,9 @@ -/home/padi/Git/java-card-game/Partie_3/src/main/java/ch/hepia/Paquet.java -/home/padi/Git/java-card-game/Partie_3/src/main/java/ch/hepia/Joueur.java -/home/padi/Git/java-card-game/Partie_3/src/main/java/ch/hepia/App.java -/home/padi/Git/java-card-game/Partie_3/src/main/java/ch/hepia/Hand.java -/home/padi/Git/java-card-game/Partie_3/src/main/java/ch/hepia/Carte.java -/home/padi/Git/java-card-game/Partie_3/src/main/java/ch/hepia/GameManager.java -/home/padi/Git/java-card-game/Partie_3/src/main/java/ch/hepia/JeudeCarte.java -/home/padi/Git/java-card-game/Partie_3/src/main/java/ch/hepia/Save.java +/home/padi/Git/java-card-game/Partie_3_GUI/src/main/java/ch/hepia/JeudeCarte.java +/home/padi/Git/java-card-game/Partie_3_GUI/src/main/java/ch/hepia/Save.java +/home/padi/Git/java-card-game/Partie_3_GUI/src/main/java/ch/hepia/Joueur.java +/home/padi/Git/java-card-game/Partie_3_GUI/src/main/java/ch/hepia/GameManager.java +/home/padi/Git/java-card-game/Partie_3_GUI/src/main/java/ch/hepia/Paquet.java +/home/padi/Git/java-card-game/Partie_3_GUI/src/main/java/ch/hepia/Carte.java +/home/padi/Git/java-card-game/Partie_3_GUI/src/main/java/ch/hepia/Hand.java +/home/padi/Git/java-card-game/Partie_3_GUI/src/main/java/ch/hepia/App.java +/home/padi/Git/java-card-game/Partie_3_GUI/src/main/java/ch/hepia/BlackjackGUI.java diff --git a/Partie_3_GUI/target/test-classes/ch/hepia/JoueurTest.class b/Partie_3_GUI/target/test-classes/ch/hepia/JoueurTest.class deleted file mode 100644 index 6c1eb68d4853e00d11fada367c940922ce2fed72..0000000000000000000000000000000000000000 Binary files a/Partie_3_GUI/target/test-classes/ch/hepia/JoueurTest.class and /dev/null differ