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