Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
project
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ISC2
oop
project
Commits
1f0dcbd3
Commit
1f0dcbd3
authored
1 year ago
by
iliya
Browse files
Options
Downloads
Patches
Plain Diff
never again
parent
abb6523b
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+79
-10
79 additions, 10 deletions
README.md
with
79 additions
and
10 deletions
README.md
+
79
−
10
View file @
1f0dcbd3
# 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
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment