Skip to content
Snippets Groups Projects
Commit 1f0dcbd3 authored by iliya's avatar iliya
Browse files

never again

parent abb6523b
No related branches found
No related tags found
No related merge requests found
# OOP Project 2023
<!--toc:start-->
- [OOP Project 2023](#oop-project-2023)
- [Compiling](#compiling)
- [Executing](#executing)
- [Part 1 --- 03/11/2023](#part-1-03112023)
- [Indication](#indication)
- [Part 2 --- 10/12/2023](#part-2-10122023)
- [Compiling](#compiling)
- [Executing](#executing)
- [Console App](#console-app)
- [JavaFX](#javafx)
- [Part 1 --- 03/11/2023](#part-1-03112023)
- [Indication](#indication)
- [Part 2 --- 10/12/2023](#part-2-10122023)
- [Part 3 --- 02/02/2024](#part-3-02022024)
- [Remarques importantes](#remarques-importantes)
- [Exécution de l'étape 3](#exécution-de-létape-3)
- [Tests unitaires avec JUnit 5](#tests-unitaires-avec-junit-5)
- [Amélioration de l'IA ainsi que la persistance des données](#amélioration-de-lia-ainsi-que-la-persistance-des-données)
- [Aperçu de JavaFX](#aperçu-de-javafx)
<!--toc:end-->
## Compiling
```bash
......@@ -19,10 +24,18 @@ mvn compile
## Executing
### Console App
```bash
mvn exec:java
```
### JavaFX
```bash
mvn javafx:run
```
## Part 1 --- 03/11/2023
### Indication
......@@ -38,13 +51,69 @@ puis son contenu a été mergé dans `master`.
## Part 3 --- 02/02/2024
### Running JUnit tests
Le développement de la troisième partie a été effectué sur la branche
`2-part-3-ai-javafx-csv-junit` (["issue" associée à la partie 3](https://gitedu.hesge.ch/isc2/oop/project/-/issues/2))
puis son contenu a été mergé dans `master`.
### Remarques importantes
Les points demandés étaient les suivants :
- Implémentation d'une IA plus sophistiquée.
- Modification nécessaire lors de la création d'un jeu (`GameManager`) car nous
devons respecter la quantité maximale de 7 joueurs, cependant il doit être
possible de créer à chaque fois 1 ou 2 IA basique et sophistiquée.
- Tests unitaires avec `JUnit` sur une des classes en particulier. Personnellement
j'ai testé en profondeur la classe `Carte`, mais j'ai aussi rajouté quelques
tests pour les classes `Deck` et `GameManager` ce qui est amplement suffisant
pour la démonstration de la bonne fonctionnalité du jeu. En ce qui concerne la
gestion des exceptions, la grande majorité d'entre elles sont de types `RuntimeException`,
cependant si elles sont atteintes, c'est qu'il y a réellement eu un énorme soucis.
Autrement, lors de la construction du `GameManager`, je traite certaines des
erreurs avec des `IllegalArgumentException` et dans le cas de la sauvegarde du
jeu, j'utilise des `IOException`.
- En ce qui concerne la persistance des données, mon approche fut la suivante :
- Le nombre de parties disponibles dépend du nombre de paquets de cartes
renseignés au tout début du jeu.
- À la fin d'un jeu une sauvegarde automatique est faite. Si par exemple,
en ayant créer 3 paquets de cartes et qu'à la fin du premier jeu, nous répondons
**non** à la question _"Voulez-vous recommencer une partie"_, alors un
répertoire `gameBackups/` se créera à la racine du projet avec un fichier portant
l'extension `.ser` qui contiendra la sauvegarde actuelle du jeu.
- Finalement, pour avoir à nouveau accès à la sauvegarde, il suffit de relancer
le programme et répondre **oui** à la question _"Voulez-vous charger une sauvegarde
de jeu existante"_. Si le nombre de paquets de cartes disponibles dans la sauvegarde
est supérieur à 0 et si le programme arrive à trouver le fichier `.ser`, alors
le jeu reprendra au moment où il a été arrêté. À ce moment-là, les mains précédentes
des joueurs humains seront affichées et il faudra renseigner les nouvelles mises.
- Finalement pour la partie `JavaFX`, je me suis débrouillé à tout installer et
faire fonctionner toutes les dépedances nécessaires, cependant la représentation
"architecturale" du projet à l'état où il se trouve actuellement est en **désaccord
total** avec le principe **MVVM** proné pour le développement de GUI. J'ai créer
quelques fenêtres, notamment le formulaire du début de jeu, cependant le reste
n'est pas réalisable suite au fait qu'il soit nécessaire de _"refactoriser"_ (en
bon français) _**toute l'application**_ afin de se débarasser du couplage inhérent
des applications console orientée-objet qui entremêlent la _"business logic"_ et
la _"vue"_ (`stdout`).
### Exécution de l'étape 3
#### Tests unitaires avec JUnit 5
```bash
mvn test
```
### Running JavaFX app
#### Amélioration de l'IA ainsi que la persistance des données
Ces points peuvent être testés à travers la mise à jour du programme sur la
console. Il peut être exécuté comme avant avec la commande suivante :
```bash
mvn compile
mvn exec:java
```
#### Aperçu de JavaFX
```bash
mvn compile
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment