TP1

IFT1025 – Automne 2014 – TP1

Jeu 2048

Le but de ce TP est de vous habituer à développer et utiliser des classes simples en Java en utilisant des méthodes et des boucles imbriquées. Il faudra utiliser une classe déjà fournie.

Vous devez programmer une version Java du jeu 2048 qui consiste à déplacer des tuiles numérotées sur un plan de jeu de 4 cases par 4 cases. Les tuiles sont déplacées avec les flèches du clavier. Une tuile se déplace tant qu’elle ne frappe pas une autre ou le bord du jeu. Lorsque deux tuiles de même valeur se touchent, elles fusionnent; la valeur de la tuile est changée par la somme des deux tuiles.

Le jeu débute avec 2 tuiles placées au hasard sur le jeu. Après chaque déplacement, une autre tuile de valeur 2 ou 4 apparaît alors au hasard sur une des cases libres.

Le jeu se termine lord d’une des deux situations suivantes:

  • il ne reste plus de case libre et le joueur n’a pas fait de mouvement permettant de fusionner de cases;
  • le joueur réussit à créer une tuile 2048.

Le déroulement du jeu est plus facile à comprendre en jouant qu’en lisant une description … Essayez-le ici!
Mais attention le jeu est assez addictif et vous avez un TP à programmer!!!

L’interface usager pourrait ressembler à ceci.

J2048

 

Pour vous aider dans votre programmation (et vous contraindre), vous devez utiliser la classe suivante que vous ne pouvez modifier:

  • Serie.java: une classe qui implante une série de nombres positifs ou nuls qui y sont ajoutés un à un. Une opération permet de compresser les nombres (enlever les 0 et combiner deux nombres contigus) et finalement une autre opération pour récupérer les valeurs de la série compressée. Cette classe vous sera expliquée en démonstration, mais vous pouvez consulter sa Javadoc. On vous illustrera le déroulement du jeu sur une solution du TP.

Pour  programmer ce jeu, selon la direction des tuiles à déplacer, vous copierez les cases du jeu (colonne par colonne ou ligne par ligne) dans une instance de la classe Serie , la compresserez et remplacerez les éléments copiés par les valeurs de la série compressée.

Vous pourrez vous inspirer de l’organisation d’une version simplifiée du jeu sur une seule ligne (Vecteur.java et TestSerie.java) avec l’interface suivante:

TestSerie

 

qui vous sera également expliquée en détail en démonstration.

Il vous faut détecter les situations de terminaison du jeu.

Ce travail est à réaliser en groupes de deux (minimum-maximum)

résultats corrects 2
méthodes et fonctions 2
lisibilité du code 2
interface 2
rapport 2

bonne chance

REMISE:  Allez sur le site du cours IFT1025 sur Studium pour remettre un  fichier ZIP à l’activité devoir TP1  contenant les sources de vos classes ainsi qu’un fichier (texte ou pdf) contenant votre rapport. La date limite est le 2 octobre à minuit (i.e: 0h00), c’est-à-dire dans la soirée du 1ier octobre.

Guy Lapalme

DÉFIS: voici quelques exercices supplémentaires pour ceux qui ne trouveraient pas le TP assez difficile, mais aucun point supplémentaire ne sera accordé pour ceux-ci.

  • Généraliser le jeu à un tableau N x N plutôt que de le fixer à 4 x 4.
  • Conserver le meilleur score d’un joueur et le réafficher la prochaine fois qu’il joue.
  • Laisser le programme trouver le meilleur déplacement possible à chaque étape.
  • Animer les déplacements des tuiles.

Professeur au DIRO – Université de Montréal