Skip to content

Projet de 3e semestre en Java, jeu du Hex, respect des principes SOLID

License

GPL-3.0, BSD-3-Clause licenses found

Licenses found

GPL-3.0
LICENSE
BSD-3-Clause
LICENSE.md
Notifications You must be signed in to change notification settings

momodinoo/IUT_BUT2_JAVA_hex205-206

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Projet Hex - Java

Morgane BRETON 205, Vanessa PHAM 206, Chaimae EL MATTARI 206 et Alexia BENCE 206


MZ: Note 14/20 au groupe. La note de l'exo du DST ne sera prise en compte que si elle est supérieure donc cette note ne peut pas baisser.

Dans ce projet où il fallait réaliser un jeu de Hex, plusieurs problèmes ont été vus (et n'ont pas eu le temps d'être résolus).

Nous avons représentés le plateau de jeu par un tableau à double dimension.
Afin de savoir si une partie est finie ou non, nous devons chercher s'il existe un chemin entre le haut et le bas de cette matrice, ou entre la gauche et la droite.
Pour gérer cette fin de partie, avec la structure utilisée, nous n'avons pas trouvé d'autres solutions que de stocker les cases visitées dans un tableau, puis d'effectuer des récursions sur les 6 cases adjacentes. Cette méthode est très couteuse en complexité. L'idéal aurait été d'utiliser une autre structure de données pour représenter le plateau, en occurrence un disjoint-set.

Au niveau de l'IHM, si le premier joueur gagne, le deuxième joueur pourra jouer encore un coup avant l'arrêt de la partie et la victoire du joueur 1 (la vérification de fin de partie se fait à la fin d'un tour, après donc les coups des 2 joueurs).
Les joueurs ne peuvent rentrer qu'un nom d'utilisateur à un seul mot.

Diagramme d'architecture

![Image](https://cdn.discordapp.com/attachments/1013867187376750663/1057494703249035274/IMG_1575.png)

Tests unitaires

  • PionTest, teste l'attribution des valeurs de l'enum Pion.
  • PlateauTest, teste les méthodes pour savoir la taille du plateau, pour jouer une case, ou si une case est vide.
  • CheminTest, prends un plateau de jeu déjà rempli, vérifie les méthodes aCheminHB() (de haut en bas) et aCheminGD() (de gauche à droite).
  • AleatoireTest, teste si le coup joué au hasard est une case à un emplacement valide.

Changements

La règle de début de partie, où le deuxième joueur peut prendre le coup joué par le premier joueur, n'a pas été adaptée.
Si le joueur joue contre une machine, celle-ci jouera une case aléatoirement. Une autre approche intéressante aurait été d'utiliser la méthode de Monté-Carlo, c'est-à-dire de simuler des milliers de parties de Hex et d'utiliser des algorithmes probabilistes afin de déterminer le meilleur coup à jouer selon chaque situation.


Bilan

Ce projet était très formateur, il nous a surtout aidé pour apprendre et maitriser les principes SOLID.
L'utilisation d'un Disjoint-set est sans doute la notion la plus intéressante à approfondir, bien qu'il serait idéal d'implémenter toutes les fonctions du projet non finies abordées dans la première partie de ce rapport.

About

Projet de 3e semestre en Java, jeu du Hex, respect des principes SOLID

Resources

License

GPL-3.0, BSD-3-Clause licenses found

Licenses found

GPL-3.0
LICENSE
BSD-3-Clause
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages