:: Enseignements :: ESIPE :: E3INFO :: 2013-2014 :: Programmation C ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | ESIPE-Crush Saga |
Quelques news
-
Important! Pour la création de votre repository, vous devez utiliser le répertoire WWW-perso (au lieu de WWW) et l'adresse http://perso-etudiant.univ-mlv.fr/~login (au lieu de https://etudiant.univ-mlv.fr/~login) pour des problèmes d'innaccessibilité (voir https://cri.u-pem.fr/public/infopeda/web.html).
-
Important! Dans la configuration de votre projet Redmine, les champs "nom" et "identifiant" doivent tous les deux respecter la norme suivante: esipecrush-<login1>-<login2> où <login1> et
<login2> représentent les logins des deux membres du binôme
- Les images à utiliser et un exemple d'utilisation de SDL sont diposnibles dans le répertoire img.
- La compilation se fait à l'aide de la commande suivante gcc crush.c `sdl-config --cflags --libs`.
- Seule la bibliothèque SDL/SDL.h est autorisée.
- Pour l'affichage de texte, vous devrez vous inspirez de l'exemple et utilisez des sprites (i.e. une image contenant des représentations graphiques de vos lettres).
But du projet
L’objectif est de proposer une implémentation en C du célèbre jeu Candy Crush Saga. Ce
jeu consiste à éliminer des bonbons d’une grille de jeu en combinant de 3 à 5 bonbons de
même catégorie afin de gagner des points. La combinaison est soit verticale, soit
horizontale, soit en “T” (en utilisant 5 bonbons), soit en “L” (en utilisant 5 bonbons.
Lorsqu’une combinaison est réalisée, les bonbons correspondants sont effacés de la grille
de jeu. La grille de jeu est toujours remplie de bonbons. Pour ce faire toute case vide
est remplacée par le contenu de la case au-dessus d’elle, cette dernière devenant vide
(à son tour, elle sera remplacée). Les cases vides de la ligne la plus haute de la grille
sont remplacées par des bonbons insérés aléatoirement.
Les combinaisons sont obtenues en échangeant de place des paires de bonbons voisins
(verticalement ou horizontalement). Seuls les échanges créant une combinaison sont
autorisés. S’il n’y a plus de combinaisons valides, la grille est regénérée avec le
même ensemble de bonbons mais disposé aléatoirement. Le joueur possède un nombre limité
et fixé à l’avance d’échanges autorisés et un score à atteindre pour gagner le niveau
correspondant. Les combinaisons de plus de 3 bonbons permettent, en plus de créer des
cases vides, de créer un bonbon sépcial dans l’une des cases vidées.
Une combinaison de 4 bonbons sur une ligne ou une colonne génère un bonbon rayé
verticalement ou horozontalement. L’utilisation d’un bonbon rayé dans une combinaison
efface la ligne ou la colonne entière (en suivant le sens des rayures).
Une combinaison de 5 bonbons en “T” ou “L” génère un bonbon explosif. L’utilisation d’un
bonbon explosif dans une combinaison provoque une explosion supprimant les bonbons
environnant (le carré 3x3 entourant le bonbon explosif).
Une combinaison de 5 bonbons en ligne ou colonne génère un bonbon multi-couleur.
L’utilisation d’un bonbon multi-couleur dans une combinaison (même de taille 2)
éliminera tous les bonbons de ce type de la grille de jeu.
Travail demandé
Implémenter une version du jeu permettant de jouer avec la souris ou le clavier. Pour la
partie graphique, vous utiliserez la bibliothèque Simple DirectMedia Layer (SDL)
http://www.libsdl.org/index.php. Une présentation succinte de la bibliothèque et de son
utilisation en C ansi est disponible à
http://www.ai.univ-paris8.fr/~audibert/ens/01-INITIATIONC_SDLx.pdf.
Conditions de développement
Le but de ce projet est moins de pondre du code que de développer le plus proprement possible.
C'est pourquoi vous développerez ce projet sur le
serveur SVN de l'université.
Comme nous attendons de vous que vous le fassiez sérieusement, votre rendu devra contenir un dump du fichier de logs de votre
projet SVN, afin que nous puissions nous assurer que vous avez bien développé par petites touches successives et propres
(commits bien commentés), et non pas avec un seul commit du résultat la veille du rendu. Le nom de votre projet sur le
SVN DOIT suivre la norme suivante :
esipecrush-<login1>-<login2> où
<login1> et
<login2> représentent les logins des deux membres du binôme.
Conditions de rendu
Vous travaillerez en binômes et vous lirez avec attention la
Charte des Projets.
Vous rendrez votre projet au moyen d'un package Debian.
Le rendu consistera donc en un mail dans lequel vous donnerez l'URL de votre repository, qui devra se trouver sur
votre compte web de l'université.
Le test de votre projet se fera avec la commande suivante :
sudo apt-get install esipecrush
La commande
esipecrush doit alors être installée et doit pouvoir permettre le lancement de votre application.
Afin de pouvoir accéder aux sources de votre travail, vous préparerez également un package source contenant les choses
suivantes :
- un répertoire src contenant les sources du projet ainsi qu'un Makefile.
Lorsqu'on lance make, on doit obtenir un exécutable nommé esipecrush.
La cible clean doit fonctionner correctement.
Les sources doivent être propres, en anglais et commentées.
- un fichier svn_logs correspondant au dump des logs de votre projet SVN.
- un fichier rapport.pdf contenant votre rapport qui devra décrire votre travail.
Si votre projet ne fonctionne pas complètement, vous devrez en décrire les bugs.
Comme pour l'exécutable, l'accès à votre package source se fera au moyen de
apt-get :
apt-get source esipecrush
Remarques importantes :
-
L'intégralité de votre application doit être développée exclusivement en langage C (la
documentation technique dynamique fait évidemment exception).
Toute utilisation de code dans un autre langage (y compris C++) vaudra ZÉRO pour l'intégralité
du projet concerné.
-
En dehors des bibliothèques standards du langage C (telles que stdio.h, stdlib.h,
string.h, getopt.h, etc.), et de la bibliothèque SDL, il est interdit d'utiliser
du code externe : vous devrez tout coder vous-mêmes.
Toute utilisation de code non développé par vous-mêmes vaudra ZÉRO pour l'intégralité du projet concerné.
-
Tout code commun à plusieurs projets vaudra ZÉRO pour l'intégralité des projets concernés.
Le projet est à rendre par mail à tous les enseignants (i.e. Guillaume Blin et Boulanouar Ibtissem).
© Université de Marne-la-Vallée