Programmation impérative, projet 2014

Dates et principe

Cette page peut être mise à jour, avec informations complémentaires, précisions, questions bonus, etc. Pensez à y revenir souvent.

Projet à rendre pour le 14/11 à 23h59, aucun retard ne sera toléré.
Des soutenances pourront être organisées ensuite.

Lire tout le sujet.

Un rendu de projet comprend : Avez-vous lu tout le sujet ?

Protocole de dépôt

Vous devez rendre

rassemblés dans une archive tar gzippée identifiée comme votre_prénom_votre_nom.tgz.
La commande devrait ressembler à :
tar cvfz randolph_carter.tgz rapport.pdf fichiers.c autres_truc_éventuels.c
N'OUBLIEZ surtout PAS de mettre le nom identifiant l'archive (donc nouveau) en PREMIER.
Lisez le man ! et testez le contenu de votre archive (une commande comme par exemple :
tar tvf randolph_carter.tgz doit lister les fichiers et donner leur taille). Une archive qui ne contient pas les fichiers demandés ne sera pas excusable.

Procédure de dépôt
Vous devez enregistrer votre archive tar dans le dépôt dédié au cours IPI (ipi-2014) en vous connectant à http://exam.ensiie.fr. Ce dépôt sera ouvert jusqu'au 14 novembre inclus.


Contexte

Le but de ce projet est d'implanter une plateforme de jeu de type Pareil ou Bonboncrush.

Les jeux de ce type se présentent sous la forme d'un tableau en deux dimensions dans lequel sont empilés des objets de différentes familles, initialement placés dans tout le tableau de façon aléatoire.

Les objets de même famille forment des groupes, c'est-à-dire des ensembles dont les éléments sont voisins directs d'autres éléments (voisinage par dessus, par dessous, par la droite ou par la gauche).

Le principe général de ces jeux est de faire disparaître ces groupes, par sélection d'un groupe d'au moins deux éléments (Pareil) ou par construction d'un groupe d'au moins trois éléments (Bonboncrush).

Vous devez au minimum réaliser le jeu Pareil.

Pareil

Fonctionnement

  1. Le but du jeu est de faire disparaître tous les objets du tableau tout en faisant le maximum de points.
  2. Le jeu prend fin lorsque tous les objets ont disparu ou lorsqu'il devient impossible de faire disparaître des objets.
  3. Le joueur sélectionne un groupe d'au moins deux éléments en désignant l'un d'eux.
  4. Un groupe sélectionné est mis en évidence au niveau de l'affichage.
  5. Sur confirmation du joueur, tous les éléments du groupes disparaissent.
    1. Les objets situés au dessus d'un trou (objet disparu) descendent dans celui-ci en laissant un trou à leur emplacement initial.
    2. Les colonnes situées à droite d'une colonne ne comportant que des trous sont déplacées vers la gauche.
  6. Le total des points est mis à jour :
    • L'élimination d'un groupe de n objets rapporte (n-1)*(n-2)/2 points.
    • L'élimination de tous les objets du tableau rapporte 1000 points.
  7. On revient alors à la phase de sélection.

Interface

On travaille dans un premier temps en mode texte.

L'affichage propose le tableau et ses objets dont les quatre familles sont représentées respectivement par les lettres X,O,H,A.

En dessous du tableau se trouvent :

Initialement les largeur et hauteur du tableau sont demandées ; l'affichage et le remplissage initial se font en fonction des entiers entrés.

L'origine du repère est le coin en bas à gauche.

Lorsqu'un objet est sélectionné par son abscisse et son ordonnée, tous les objets de son groupe sont représentés par le caractère # et une confirmation est attendue.

L'affichage est rafraîchi chaque fois que des objets sur une ligne prennent la place des trous directement en dessous d'eux.

Un affichage spécifique alerte de la fin de partie.

Bonboncrush

Fonctionnement

  1. Le but du jeu est d'atteindre une certaine limite de points en faisant disparaître des groupes d'objets.
  2. Le joueur sélectionne un objet.
  3. La saisie supplémentaire d'une direction désigne un voisin direct de l'objet sélectionné.
    1. Si la transposition des deux voisins crée un ou deux groupes d'au moins trois objets, la transposition a lieu et ces groupes disparaissent.
    2. Sinon rien ne se passe (pas de transposition).
    3. Le score est mis à jour à chaque disparition de groupe : l'élimination d'un groupe de n objets rapporte (n-1)*(n-2)/2 points.
    4. Les objets situés au dessus d'un trou (objet disparu) descendent dans celui-ci en laissant un trou à leur emplacement initial.
    5. Les cases laissées vides sont remplies en totalité aléatoirement par des objets.
    6. Tant que des groupes de plus de trois objets sont créés par ces opérations, ils disparaissent à leur tour et les deux étapes précédentes sont répétées.
  4. On revient à l'étape de sélection.
  5. Tous les 1000 points, une nouvelle famille peut apparaître (lors des remplissages aléatoires).

Interface

On travaille dans un premier temps en mode texte.

L'affichage propose le tableau et ses objets dont les cinq familles initiales sont représentées respectivement par les lettres X,O,H,A,Z.

En dessous du tableau se trouvent :

Initialement les largeur et hauteur du tableau sont demandées ; l'affichage et le remplissage initial se font en fonction des entiers entrés.

L'origine du repère est le coin en bas à gauche.

Un objet est sélectionné par la donnée de son abscisse et de son ordonnée, une direction est donnée par h (haut), b (bas), d (droite), g (gauche). Attention le tableau est torique : le voisin de droite d'un objet de la colonne à l'extrême droite est sur la colonne de l'extrême gauche, symmétriquement le voisin de gauche d'un objet de la colonne à l'extrême gauche est sur la colonne à l'extrême droite.

L'affichage est rafraîchi chaque fois que des objets sur une ligne prennent la place des trous directement en dessous d'eux.

Un affichage spécifique alerte de la fin de partie.


Conseils

Pour la récupération des caractères de confirmation pour Pareil et de direction pour Bonboncrush il est fortement déconseillé d'utiliser : Vous devez avoir lu jusqu'ici avant de commencer.