Jeu ressemblant au tetris, seulement le but est de former le rectangle avec la plus grande aire avec un nombre de coups max.
L3 Informatique, note : 16/20.
On utilise ant pour créer le dossier dist contenant l'executable grace au fichier
build.xml
Ouvrez un terminal a la racine du projet et tapez : ant
Toujours a la racine du projet tapez : java -jar dist/Tetris-0.1.jar
L'idée s'inspire du fameux Tetris, mais les modalités sont différentes :
- toutes les pièces sont exposées sur l'aire de jeu dès le début de la partie,
- à tout moment, le joueur peut choisir une pièce en cliquant dessus, et a alors la possibilité de la faire tourner ou de la déplacer,
- son but est de minimiser l'espace occupé par l'ensemble des pièces. Plus précisément, la fonction d'évaluation sera l'aire du plus petit rectangle (parallèle aux axes) recouvrant l'ensemble des pièces,
- lorsque le joueur considère avoir terminé (ou lorsque le nombre maximum d'actions autorisées est atteint), il clique sur un bouton est son score est alors calculé,
- à chaque partie, il est possible soit de demander à obtenir une nouvelle configuration de départ, soit charger une configuration déjà créée et sauvegardée. Dans ce dernier cas, le meilleur score ainsi que le nom du joueur correspondant seront sauvegardés.
- Une option permettra de faire jouer l'ordinateur. Réaliser un bon joueur robot nécessiterait des connaissances solides en IA, mais vous essaierez de faire mieux que le hasard.
- En terminal il suffit de suivre les consignes pour jouer.
- En mode graphique il faut appuyer sur la touche que l'on veut manipuler, les touches pour manipuler sont :
- Z,Q,S,D pour les mouvements
- A,E pour les rotations
- T pour que le solver joue un coup
- Le solver n'étant pas optimisé un niveau de difficulté "SolverTest" a été créé pour pouvoir le tester et voir son fonctionnement.
- Dans l'interface graphique le solveur joue coup par coup, alors que dans le terminal il joue coup par coup jusqu'a la fin de la partie.
- Le solver n'utilise pas les rotations de base car cela ajoute beaucoup de temps d'attente pour la resolution.
- Problème de fuite mémoire résolu après analyse avec VisualJM, amenant la suppresion de la classe PointWithScore et de l'affichage du type d'aire.